From f1c1949255f9961fb080fe42787e2bb5fff5032c Mon Sep 17 00:00:00 2001 From: Evgeniy L Date: Tue, 17 Dec 2013 12:15:44 +0400 Subject: [PATCH] Add logging for mcagent erase_node module, also removed unused code. Closes-bug: #1255537 Change-Id: Ic80eb700101a1bfa544f1690d7f687e5f166e24c --- mcagents/erase_node.rb | 75 ++++++++++++++---------------------------- 1 file changed, 25 insertions(+), 50 deletions(-) diff --git a/mcagents/erase_node.rb b/mcagents/erase_node.rb index ce5bc950..fd3eba7e 100644 --- a/mcagents/erase_node.rb +++ b/mcagents/erase_node.rb @@ -19,7 +19,8 @@ require 'fileutils' module MCollective module Agent - class Erase_node e reply[:erased] = false @@ -73,7 +75,7 @@ module MCollective basename_dir = File.basename(block_device_dir) major = `udevadm info --query=property --name=#{basename_dir} | grep MAJOR`.strip.split(/\=/)[-1] if File.exists?("/sys/block/#{basename_dir}/removable") - removable = File.open("/sys/block/#{basename_dir}/removable"){|f| f.read_nonblock(1024).strip} + removable = File.open("/sys/block/#{basename_dir}/removable") { |f| f.read_nonblock(1024).strip } end # look at https://github.com/torvalds/linux/blob/master/Documentation/devices.txt blocks << basename_dir if major =~ /^(3|8|202|252)$/ && removable =~ /^0$/ @@ -81,63 +83,36 @@ module MCollective end end - def get_boot_device_obsolete - dev_map = '/boot/grub/device.map' - grub_conf = '/boot/grub/grub.conf' - # Look boot device at GRUB device.map file - if File.file?(dev_map) and File.readable?(dev_map) - open(dev_map).readlines.each do |l| - line = l.strip - unless line.start_with?('#') - grub_dev, kernel_dev = line.split(%r{[ |\t]+}) - return kernel_dev if grub_dev == '(hd0)' - end - end - end - # Look boot device at GRUB config autogenerated file - if File.file?(grub_conf) and File.readable?(grub_conf) - open(grub_conf).readlines.each do |l| - line = l.strip - if line.start_with?('#boot=') - grub_dev, kernel_dev = line.split('=') - return kernel_dev - end - end - end - # If nothing found - raise 'Boot device not found.' - end - def reboot - cmd = "/bin/sleep 5; /sbin/reboot --force" + cmd = '/bin/sleep 5; /sbin/reboot --force' + debug_msg("Run node rebooting command '#{cmd}'") pid = fork { system(cmd) } Process.detach(pid) end - def get_data(file, length, offset=0) - fd = open(file) - fd.seek(offset) - ret = fd.sysread(length) - fd.close - ret - end - def erase_data(dev, length=1, offset=0) - system("dd if=/dev/zero of=/dev/#{dev} bs=1M count=#{length} skip=#{offset}") + cmd = "dd if=/dev/zero of=/dev/#{dev} bs=1M count=#{length} skip=#{offset}" + status = system(cmd) + debug_msg("Run device erasing command '#{cmd}' returned '#{status}'") + + status end - def erase_data_obsolete(file, length, offset=0) - fd = open(file, 'w') - fd.seek(offset) - ret = fd.syswrite("\000"*length) - fd.close - system('/bin/sync') - end - - # Prevent discover by agent while node rebooting. + # Prevent discover by agent while node rebooting def prevent_discover - FileUtils.touch '/var/run/nodiscover' + lock_path = '/var/run/nodiscover' + debug_msg("Create file for discovery preventing #{lock_path}") + FileUtils.touch(lock_path) end + + # In case of node erasing we can lose all + # debug messages, lets send them to orchestrator + def debug_msg(msg) + reply[:debug_msg] = [] unless reply[:debug_msg] + Log.debug(msg) + reply[:debug_msg] << msg + end + end end end