4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
# File 'lib/genesis_collector/disks.rb', line 4
def collect_disks
ensure_command('smartctl')
ensure_command('blkid')
@payload[:disks] = enumerate_disks
@payload[:disks].each do |d|
info = get_disk_info(d.delete(:smartctl_cmd))
d[:vendor_name] = info.match(/^Vendor:\s+(.*)$/)[1] rescue nil
d[:vendor_name] ||= info.match(/^Device Model:\s+(\w+)[_ ](?:.*)$/)[1] rescue nil
d[:product] = info.match(/^(?:Device Model|Product):\s+(.*)$/)[1]
d[:serial_number] = info.match(/^Serial (?:n|N)umber:\s+(.*)$/)[1] rescue nil
d[:size] = info.match(/^User Capacity:\s+(.*)$/)[1].split('bytes')[0].strip.gsub(',', '')
if d[:dev].start_with?("/dev/sd")
d[:slot] = get_scsi_slot(d[:dev])
d[:uuid] = disk_uuid(d[:dev])
d[:status] = disk_status(d[:dev])
end
end
@payload[:disks].delete_if { |d| d[:serial_number].nil? }
rescue StandardError => ex
@payload.delete(:disks)
raise ex
end
|