module GenesisCollector::MegaRaid

Public Instance Methods

collect_megaraid() click to toggle source
# File lib/genesis_collector/megaraid.rb, line 4
def collect_megaraid
  @payload[:raids] ||= []
  @payload[:properties] ||= {}
  if megaraid?
    @payload[:properties]['MEGARAID_TYPE'] = read_megacli_adapter_type
    @payload[:properties]['MEGARAID_FW_PACKAGE'] = read_megacli_adapter_firmware
    @payload[:raids].concat read_megacli_logical_disks
  end
end
megaraid?() click to toggle source
# File lib/genesis_collector/megaraid.rb, line 14
def megaraid?
  return !read_megacli_adapter_type.nil?
end

Private Instance Methods

megacli_adapter_output() click to toggle source
# File lib/genesis_collector/megaraid.rb, line 20
def megacli_adapter_output()
  @megacli_adapter_output ||= shellout_with_timeout('megacli -AdpAllInfo -aAll', 10)
end
read_megacli_adapter_firmware() click to toggle source
# File lib/genesis_collector/megaraid.rb, line 30
def read_megacli_adapter_firmware()
  match = megacli_adapter_output.match(/FW Package Build\s*:\s*(\S+)$/)
  return nil if match.nil?
  match[1]
end
read_megacli_adapter_type() click to toggle source
# File lib/genesis_collector/megaraid.rb, line 24
def read_megacli_adapter_type()
  match = megacli_adapter_output.match(/Product Name\s*:\s*(.+)\s*$/)
  return nil if match.nil?
  match[1]
end
read_megacli_logical_disks() click to toggle source
# File lib/genesis_collector/megaraid.rb, line 36
def read_megacli_logical_disks()
  @megacli_ld_output ||= shellout_with_timeout('megacli -LDInfo -Lall -aAll', 10)
  lds = []
  @megacli_ld_output.split(/^$/).each do |disk|
    lines = disk.split(/\n+/)
    next if lines.count < 5 # skip status and empty
    record = {}
    lines.each do |line|
      match = line.match(/\s*(.+?)\s*:\s*(.+)\s*$/)
      record[match[1]] = match[2] unless match.nil?
    end
    lds << record
  end
  lds
end