class Lsmpio

Attributes

data_string_raw[RW]
disks[R]
viosname[RW]

Public Class Methods

new(string = '') click to toggle source
# File lib/AIX/lsmpio.rb, line 9
def initialize(string = '')
  @data = {}
  @data_string_raw = ''

  @disks = {}
  @disks_raw = {}

  parse(string) unless string.empty?
end

Public Instance Methods

parse(string) click to toggle source

www.ibm.com/support/knowledgecenter/ssw_aix_72/l_commands/lsmpio.html

# File lib/AIX/lsmpio.rb, line 20
def parse(string)
  @data_string_raw = string

  regexp = %r{(hdisk\d+)\s+(\d+)\s+(Enabled|Disabled|Failed|Missing)\s+([\w\,]+)\s+(fscsi\d+)\s+(\w+)\,(\w+)}
  string.each_line do |line|

    line = line.strip
    next if line =~ /name/
    next if line =~ /^\s*$/
    next if line =~ /^[=]+$/

    if match = regexp.match(line)
      if @disks_raw[match[1]].nil?
        @disks_raw[match[1]] = line + "\n"
      else
        @disks_raw[match[1]] += line + "\n"
      end
    else
      raise "wrong line: >#{line}"
    end
  end

  @disks_raw.each_pair do |key, disk_raw|
    disk = Lsmpio_disk.new(disk_raw)
    @disks[disk.name] = disk
  end

  @_parsed = true
end