module GenesisCollector::DmiDecode
Constants
- DMI_TYPES
Public Instance Methods
get_dmi_data()
click to toggle source
# File lib/genesis_collector/dmidecode.rb, line 50 def get_dmi_data @dmi_data ||= parse_dmidecode(shellout_with_timeout('dmidecode --type processor --type memory')) end
parse_dmidecode(data)
click to toggle source
# File lib/genesis_collector/dmidecode.rb, line 54 def parse_dmidecode(data) dict={} handle = 0 current_title = nil data.lines.each do |line| case line when /^End Of Table/, /^\s+$/, /^\# dmidecode/, /^SMBIOS/, /structures occupying/, /^Table at/ next when /^Handle\s+(.*?), DMI type (.*?),\s+/ handle = $1.to_i(16) type_id = $2.to_i title = DMI_TYPES[type_id] next if title == 'end_of_table' current_title = title dict[title] ||= [] dict[title] << {'handle' => handle} else raw_data = line.strip.split(':') if raw_data.is_a?(Array) && raw_data.length == 2 k, v = raw_data dict[current_title].last[standardize_dmi_key(k.strip)] = v.strip end end end dict end
Private Instance Methods
standardize_dmi_key(k)
click to toggle source
# File lib/genesis_collector/dmidecode.rb, line 84 def standardize_dmi_key(k) k.downcase.gsub(/\s+/,'_') end