class DiskHandler::Disk
Attributes
id[RW]
model[RW]
name[RW]
number[RW]
partitions[RW]
size[RW]
state[RW]
type[RW]
version[RW]
Public Class Methods
new(lsblk_line)
click to toggle source
# File lib/disk_reporter/disk_handler.rb, line 24 def initialize lsblk_line attrs_from_line lsblk_line check_smart_capability! check_health! if smart_capable? parse_smart_info if smart_capable? populate_partitions end
Public Instance Methods
attrs_from_line(lsblk_line)
click to toggle source
# File lib/disk_reporter/disk_handler.rb, line 32 def attrs_from_line lsblk_line %w{NAME TYPE SIZE MODEL STATE}.each do |key| matches = lsblk_line.match(/#{key}="([^"]*)"/) self.send("#{key.downcase}=", matches[1]) if matches end end
check_health!()
click to toggle source
Check the SMART health
# File lib/disk_reporter/disk_handler.rb, line 51 def check_health! output = `#{SMARTCTL} -H #{device_path}` @smart_healthy = !output.scan(/PASSED/).empty? @health_output = output end
check_smart_capability!()
click to toggle source
Checks if disk is capable
# File lib/disk_reporter/disk_handler.rb, line 67 def check_smart_capability! output = `#{SMARTCTL} -i #{device_path}` @smart_available = !output.scan(/SMART support is: Available/).empty? @smart_enabled = !output.scan(/SMART support is: Enabled/).empty? @capability_output = output end
device_path()
click to toggle source
# File lib/disk_reporter/disk_handler.rb, line 12 def device_path "/dev/#{name}" end
get_smart_info()
click to toggle source
# File lib/disk_reporter/disk_handler.rb, line 39 def get_smart_info `#{SMARTCTL} -i /dev/#{name}` end
parse_smart_info()
click to toggle source
Parses SMART drive info
# File lib/disk_reporter/disk_handler.rb, line 59 def parse_smart_info %w{Id Number Version}.each do |key| matches = @capability_output.match(/#{key}:\s+([^\n]*)\n/) self.send("#{key.downcase}=", matches[1]) if matches end end
populate_partitions()
click to toggle source
# File lib/disk_reporter/disk_handler.rb, line 79 def populate_partitions self.partitions = [] `ls #{device_path}[0-9]* 2>/dev/null`.each_line do |name| self.partitions << Partition.new(self, name) end end
serial_number()
click to toggle source
# File lib/disk_reporter/disk_handler.rb, line 16 def serial_number number.strip end
smart_capable?()
click to toggle source
Is the device SMART capable and enabled
# File lib/disk_reporter/disk_handler.rb, line 45 def smart_capable? @smart_available && @smart_enabled end
to_h()
click to toggle source
# File lib/disk_reporter/disk_handler.rb, line 74 def to_h { name: name, size: size, model: model, smart_available: @smart_available, smart_enabled: @smart_enabled, wnn: wnn, serial: serial_number, version: version } end
wnn()
click to toggle source
# File lib/disk_reporter/disk_handler.rb, line 20 def wnn id.delete(' ') unless id.nil? end