Add logging for mcagent erase_node module,
also removed unused code. Closes-bug: #1255537 Change-Id: Ic80eb700101a1bfa544f1690d7f687e5f166e24c
This commit is contained in:
@@ -19,7 +19,8 @@ require 'fileutils'
|
||||
|
||||
module MCollective
|
||||
module Agent
|
||||
class Erase_node<RPC::Agent
|
||||
class Erase_node < RPC::Agent
|
||||
|
||||
action "erase_node" do
|
||||
erase_node
|
||||
end
|
||||
@@ -28,7 +29,7 @@ module MCollective
|
||||
reboot
|
||||
end
|
||||
|
||||
private
|
||||
private
|
||||
|
||||
def erase_node
|
||||
request_reboot = request.data[:reboot]
|
||||
@@ -42,6 +43,7 @@ module MCollective
|
||||
get_boot_devices.each do |dev|
|
||||
erase_data(dev) unless dry_run
|
||||
end
|
||||
|
||||
reply[:erased] = true
|
||||
rescue Exception => 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
|
||||
|
||||
Reference in New Issue
Block a user