class Lsvg_p

Attributes

active[R]
disks[R]
missing[R]
volume_group[R]

Public Class Methods

new(string) click to toggle source
# File lib/AIX/lsvg_p.rb, line 11
def initialize(string)

  @data_string_raw=''
  @disks = Hash.new

  @volume_group = nil

  @active  = Array.new
  @missing = Array.new

  if string.length > 0
    self.parse(string)
    @data_string_raw = string
  end
end

Public Instance Methods

parse(string) click to toggle source
# File lib/AIX/lsvg_p.rb, line 28
  def parse(string)

   string.split("\n").each { |line|

#     pp line

     match_vg    = %r{^([\w\_]+):\s*$}.match(line)
     match_hdisk = %r{([\w\d]+)\s+(active|missing)\s+(\d+)\s+(\d+)\s+([\d\.]+)}.match(line)

     if line =~ /^\s*$/
       next
     elsif match_vg
        @volume_group = match_vg[1]
     elsif line =~ %r{PV_NAME\s+PV\sSTATE\s+TOTAL\sPPs\s+FREE\sPPs\s+FREE\sDISTRIBUTION}
       next
     elsif match_hdisk
       disk = Hash.new
       disk['pv_name']           = match_hdisk[1]
       disk['pv_state']          = match_hdisk[2]
       disk['total_pps']         = match_hdisk[3].to_i
       disk['free_pps']          = match_hdisk[4].to_i
       disk['free_distribution'] = match_hdisk[5]

       if disk['pv_state'] == 'active'
          @active.push(disk['pv_name'])
       elsif disk['pv_state'] == 'missing'
         @missing.push(disk['pv_name'])

       else
         pp line
         raise 'wrong pv state'
       end

       @disks[disk['pv_name']] = disk
     else
            pp "Wrong line:>#{line}<"
     end


   }


  end