class Lpar_profile

Attributes

_compatibility[RW]

own attributes

_default_params[R]
_null_zero_none_equal[RW]
_parameter_order[R]
affinity_group_id[RW]
all_resources[RW]
allow_perf_collection[RW]
auto_start[RW]
boot_mode[RW]
bsr_arrays[RW]
conn_monitoring[RW]
curr_profile[RW]
default_profile[RW]
desired_mem[RW]
desired_num_huge_pages[RW]
desired_proc_units[RW]
desired_procs[RW]
electronic_err_reporting[RW]
hca_adapters[R]
hca_adapters_raw[RW]
hpt_ratio[RW]
io_slots[R]
io_slots_raw[R]
lhea_capabilities[RW]
lhea_logical_ports[R]
lhea_logical_ports_raw[R]
logical_serial_num[RW]
lpar_env[RW]
lpar_id[RW]
lpar_io_pool_ids[RW]
lpar_io_pool_ids_raw[RW]
lpar_keylock[RW]
lpar_name[RW]
lpar_proc_compat_mode[RW]
max_mem[RW]
max_num_huge_pages[RW]
max_proc_units[RW]
max_procs[RW]
max_virtual_slots[RW]
mem_expansion[RW]
mem_mode[RW]
min_mem[RW]
min_num_huge_pages[RW]
min_proc_units[RW]
min_procs[RW]
name[RW]
os_version[RW]
power_ctrl_lpar_ids[RW]
proc_mode[RW]
redundant_err_path_reporting[RW]
resource_config[RW]
rmc_ipaddr[RW]
rmc_state[RW]
shared_proc_pool_util_auth[RW]
sharing_mode[RW]
sni_device_ids[RW]
sriov_eth_logical_ports[R]

ports

sriov_eth_logical_ports_raw[RW]
sync_curr_profile[RW]
sys[RW]
uncap_weight[RW]
virtual_eth_vsi_profiles[R]
virtual_eth_vsi_profiles_raw[R]
virtual_slots[R]
virtual_vasi_adapters[R]
virtual_vasi_adapters_raw[RW]
vnic_adapters[R]
vnic_adapters_raw[R]

taken from: www.ibm.com/support/knowledgecenter/en/POWER8/p8edm/lssyscfg.html (see description of -F parameter)

vtpm_adapters[R]
vtpm_adapters_raw[RW]
work_group_id[RW]

Public Class Methods

new(lpar_id = '', profile_name = 'normal') click to toggle source
# File lib/HMC/Lpar_profile.rb, line 102
def initialize(lpar_id = '', profile_name = 'normal')
  string = ''

  @_null_zero_none_equal = false

  if lpar_id.class.to_s == 'String'
    if lpar_id.include?('=')
      string = lpar_id
      lpar_id = ''
    end
  end

  @lpar_id = lpar_id
  @name    = profile_name

  @_variables = {}
  @_variables['variables_int'] = %w[lpar_id min_mem desired_mem max_mem all_resources min_procs desired_procs
                                    max_procs max_virtual_slots
                                    auto_start conn_monitoring uncap_weight bsr_arrays shared_proc_pool_id]
  @_variables['variables_float'] = %w[min_proc_units desired_proc_units max_proc_units mem_expansion]

  @_variables['string'] = %w[ name lpar_name lpar_env mem_mode proc_mode sharing_mode
                              lpar_io_pool_ids boot_mode
                              power_ctrl_lpar_ids work_group_id redundant_err_path_reporting hpt_ratio
                              affinity_group_id lhea_capabilities lpar_proc_compat_mode lhea_capabilities
                              lpar_proc_compat_mode electronic_err_reporting min_num_huge_pages desired_num_huge_pages
                              max_num_huge_pages shared_proc_pool_name sni_device_ids ]

  @_variables['string_raw'] = %w[ hca_adapters vtpm_adapters virtual_vasi_adapters virtual_eth_vsi_profiles
                                  sriov_eth_logical_ports vnic_adapters sriov_eth_logical_ports ]


  @_variables['string_virtual_raw'] = %w[virtual_serial_adapters virtual_scsi_adapters virtual_eth_adapters
                                         virtual_fc_adapters]

  @_functions_self = %w[io_slots hca_adapters vtpm_adapters lhea_logical_ports sriov_eth_logical_ports
                        virtual_vasi_adapters virtual_eth_vsi_profiles vnic_adapters]
  @_functions_virtual_slots = %w[ virtual_serial_adapters virtual_scsi_adapters virtual_eth_adapters  virtual_fc_adapters]



  @_default_params = {}
  @_default_params['power5'] = %w[name lpar_name lpar_id lpar_env all_resources min_mem desired_mem max_mem
    min_num_huge_pages desired_num_huge_pages max_num_huge_pages mem_mode hpt_ratio proc_mode min_proc_units
    desired_proc_units max_proc_units min_procs desired_procs max_procs sharing_mode uncap_weight
    io_slots lpar_io_pool_ids max_virtual_slots virtual_serial_adapters virtual_scsi_adapters virtual_eth_adapters
    hca_adapters boot_mode conn_monitoring auto_start power_ctrl_lpar_ids work_group_id redundant_err_path_reporting ]

  @lhea_logical_ports = []
  @hca_adapters = []
  @io_slots = []

  @_compatibility = 'power5'
  @_parameter_order = []

  @sriov_eth_logical_ports = nil
  @vtpm_adapters = nil
  @virtual_vasi_adapters = nil
  @virtual_eth_vsi_profiles = nil

  @hca_adapters_raw = nil
  @vtpm_adapters_raw = nil
  @virtual_eth_vsi_profiles_raw = nil
  @virtual_vasi_adapters_raw = nil
  @sriov_eth_logical_ports_raw = nil
  @sys = nil
  @lpar_name = nil


  @virtual_slots = Lpar_virtual_slots.new
  @virtual_slots.profile_name=@name

  unless string.empty?
    parse(string)
  end

end

Public Instance Methods

==(other) click to toggle source
# File lib/HMC/Lpar_profile.rb, line 390
def ==(other)
  to_s == other.to_s
end
adapter_add(adapter) click to toggle source
# File lib/HMC/Lpar_profile.rb, line 180
def adapter_add(adapter)

  case adapter.class.to_s
  when 'VirtualEthAdapter'    then virtual_slots.virtual_eth_adapters_add(adapter)
  when 'VirtualScsiAdapter'   then virtual_slots.virtual_scsi_adapters_add(adapter)
  when 'VirtualSerialAdapter' then virtual_slots.virtual_serial_adapters_add(adapter)
  when 'VirtualFCAdapter'     then virtual_slots.virtual_fc_adapters_add(adapter)
  else
    pp 'adapter class:' +  adapter.class
    raise 'unknown type of Virtual Adapter'
  end
end
diff_show(another_profile, columns_to_compare = 'all', columns_to_ignore = 'none') click to toggle source
# File lib/HMC/Lpar_profile.rb, line 394
def diff_show(another_profile, columns_to_compare = 'all', columns_to_ignore = 'none')

  diffs = {}
  ignore = columns_to_ignore.split(',')
  compare = columns_to_compare.split(',')

  @_variables.keys.each { |type|
    @_variables[type].each { |name|

      next if ignore.include?(name)
      next if columns_to_compare != 'all' && !compare.include?(name)

      if type == 'string_virtual_raw'
        diffs.merge!(virtual_slots.diff(another_profile.virtual_slots, type))
        next
      end

      val_self    = instance_variable_get("@#{name}")
      val_profile = another_profile.instance_variable_get("@#{name}")

      if val_self != val_profile
        val_self    = 'nil' if val_self.nil?
        val_profile = 'nil' if val_profile.nil?

        if @_null_zero_none_equal
          next if (val_self.to_s == '0' or val_self == 'null' or val_self == 'none') and (val_profile.to_s == '0' or val_profile == 'null' or val_profile == 'none')
        end

        difference = {}
        difference[another_profile.name] = val_profile
        difference[self.name]            = val_self

        diffs[name] = difference
      end

    }
  }

  diffs
end
hca_adapters_to_s() click to toggle source
# File lib/HMC/Lpar_profile.rb, line 213
def hca_adapters_to_s
  # TODO: it should have separate class of each adapter and function to analyze it (not used now on my Power5)
  'none' unless @hca_adapters_raw.nil?
end
io_slots_raw=(string) click to toggle source
# File lib/HMC/Lpar_profile.rb, line 372
def io_slots_raw=(string)
  if string != 'none'
    string.split(',').each do |adapter_string|
      @io_slots.push(Lpar_IO_slot.new(adapter_string))
    end
  end
  @io_slots_raw = string
end
io_slots_to_s() click to toggle source
# File lib/HMC/Lpar_profile.rb, line 193
def io_slots_to_s

  result = nil
  unless @io_slots_raw.nil?
    if @io_slots.size == 0
      result =  'none'
    elsif @io_slots.size == 1
      result = @io_slots[0].join('/')
    else
      adapters = []
      @io_slots.each do |adapter|
        adapters.push(adapter.to_s)
      end
      result = adapters.join(',')
    end
  end

  result
end
lhea_logical_ports_raw=(string) click to toggle source
# File lib/HMC/Lpar_profile.rb, line 381
def lhea_logical_ports_raw=(string)
  if string != 'none'
    string.split(',').each do |adapter_string|
      @lhea_logical_ports.push(adapter_string.split('/'))
    end
  end
  @lhea_logical_ports_raw = string
end
lhea_logical_ports_to_s() click to toggle source
# File lib/HMC/Lpar_profile.rb, line 228
def lhea_logical_ports_to_s
  # TODO: it should have separate class of each adapter and function to analyze it (not used now on my Power5)
  unless @lhea_logical_ports_raw.nil?
    @lhea_logical_ports_raw
  end
end
lssyscfgProfDecode(string) click to toggle source
# File lib/HMC/Lpar_profile.rb, line 320
def lssyscfgProfDecode(string)

  string.delete!("\n")
  string.delete!("\r")

  HmcString.parse(string).each { |name, value|

    if @_variables['variables_int'].include?(name)
      instance_variable_set("@#{name}", value.to_i)
    elsif @_variables['variables_float'].include?(name)
      instance_variable_set("@#{name}", value.to_f)
    elsif @_variables['string_virtual_raw'].include?(name)

      case name
      when 'virtual_fc_adapters'     then @virtual_slots.virtual_fc_adapters_raw = value
      when 'virtual_eth_adapters'    then @virtual_slots.virtual_eth_adapters_raw = value
      when 'virtual_scsi_adapters'   then @virtual_slots.virtual_scsi_adapters_raw = value
      when 'virtual_serial_adapters' then @virtual_slots.virtual_serial_adapters_raw = value
      else
        raise 'unknown virtual slot type' + name
      end
    elsif name == 'io_slots'
      self.io_slots_raw = value
    elsif name == 'lhea_logical_ports'
      self.lhea_logical_ports_raw = value
    elsif @_variables['string_raw'].include?(name)
      instance_variable_set("@#{name}_raw", value.to_s)
    elsif @_variables['string'].include?(name)
      instance_variable_set("@#{name}", value.to_s)
    else
      print "unknown name: #{name} with value #{value}"
      raise
    end

    @_parameter_order.push(name)
  }

  @virtual_slots.profile_name=@name

  if to_s != string
    puts 'Incoming string:'
    pp string
    puts 'Analysed data as result of to_s:'
    puts to_s
    raise 'wrong parsing of profile string'
  end

end
Also aliased as: parse
mksyscfg_cmd() click to toggle source
# File lib/HMC/Lpar_profile.rb, line 312
def mksyscfg_cmd
  "mksyscfg -r lpar -m #{@sys} -i \"" + to_s + '"'
end
parse(string)
Alias for: lssyscfgProfDecode
remove_cmd() click to toggle source
# File lib/HMC/Lpar_profile.rb, line 316
def remove_cmd
  "rmsyscfg -m #{@sys} -r lpar -n #{@lpar_name}"
end
sriov_eth_logical_ports_to_s() click to toggle source
# File lib/HMC/Lpar_profile.rb, line 242
def sriov_eth_logical_ports_to_s
  # TODO: it should have separate class of each adapter and function to analyze it (not used now on my Power5)
  unless @sriov_eth_logical_ports_raw.nil?
    'none'
  end
end
to_s(params='all', exclude_cols='none') click to toggle source

the result of command it the same as: lssyscfg -r prof -m $FRAME

# File lib/HMC/Lpar_profile.rb, line 257
def to_s(params='all', exclude_cols='none')

  result_array = []

  if params == 'all'
    if @_parameter_order.count > 0
      params_to_print = @_parameter_order
    else
      params_to_print = @_default_params[@_compatibility]
    end
  else
    params_to_print = params.split(',')
  end

  if exclude_cols != 'none'
    exclude_cols.split(',').each { |column|
      params_to_print.delete(column)
    }
  end

  params_to_print.each do |parameter|

    if @_functions_self.include?(parameter)

      tmp = send("#{parameter}_to_s")
      tmp = make_string(parameter, tmp)
      result_array.push(tmp) unless tmp.nil?

    elsif @_functions_virtual_slots.include?(parameter)

      tmp = @virtual_slots.send("#{parameter}_to_s")
      tmp = make_string(parameter, tmp)
      result_array.push(tmp) unless tmp.nil?

    else
      unless instance_variable_get("@#{parameter}").nil?
        result_array.push(make_string(parameter, instance_variable_get("@#{parameter}").to_s))
      end
    end
  end

  result_array.join(',')
end
virtual_eth_vsi_profiles_to_s() click to toggle source
# File lib/HMC/Lpar_profile.rb, line 223
def virtual_eth_vsi_profiles_to_s
  # TODO: it should have separate class of each adapter and function to analyze it (not used now on my Power5)
  'none' unless @virtual_eth_vsi_profiles_raw.nil?
end
virtual_vasi_adapters_to_s() click to toggle source
# File lib/HMC/Lpar_profile.rb, line 235
def virtual_vasi_adapters_to_s
  # TODO: it should have separate class of each adapter and function to analyze it (not used now on my Power5)
  unless @virtual_vasi_adapters_raw.nil?
    'none'
  end
end
vlans() click to toggle source
# File lib/HMC/Lpar_profile.rb, line 301
def vlans
  result = []
  virtual_slots.virtual_eth_adapters.each { |adapter|
    result.push(adapter.portVlanID)
    adapter.additionalVlanIDs.split(',').each { |vlan|
      result.push(vlan)
    }
  }
  result.sort
end
vnic_adapters_to_s() click to toggle source
# File lib/HMC/Lpar_profile.rb, line 249
def vnic_adapters_to_s
  # TODO: it should have separate class of each adapter and function to analyze it (not used now on my Power5, found in manual on IBM site)
  unless @vnic_adapters_raw.nil?
    'none'
  end
end
vtpm_adapters_to_s() click to toggle source
# File lib/HMC/Lpar_profile.rb, line 218
def vtpm_adapters_to_s
  # TODO: it should have separate class of each adapter and function to analyze it (not used now on my Power5)
  'none' unless @vtpm_adapters_raw.nil?
end