class Facter::Resolvers::Aix::Processors

Private Class Methods

populate_from_cudv(name) click to toggle source
# File lib/facter/resolvers/aix/processors.rb, line 36
def populate_from_cudv(name)
  odmquery = Facter::Util::Aix::ODMQuery.new
  odmquery.equals('PdDvLn', name)

  result = odmquery.execute

  return unless result

  names = retrieve_from_array(result.scan(/name\s=\s.*/), 1)

  names.each { |elem| query_cuat(elem) }
end
post_resolve(fact_name, _options) click to toggle source
# File lib/facter/resolvers/aix/processors.rb, line 12
def post_resolve(fact_name, _options)
  @fact_list.fetch(fact_name) { query_pddv(fact_name) }
end
process(stdout) click to toggle source
# File lib/facter/resolvers/aix/processors.rb, line 69
def process(stdout)
  type = retrieve_from_array(stdout.scan(/attribute\s=\s"type"\n\s+value\s=\s.*/), 2).first
  frequency = retrieve_from_array(stdout.scan(/attribute\s=\s"frequency"\n\s+value\s=\s.*/), 2).first
  smt_threads = retrieve_from_array(stdout.scan(/attribute\s=\s"smt_threads"\n\s+value\s=\s.*/), 2).first
  smt_enabled = retrieve_from_array(stdout.scan(/attribute\s=\s"smt_enabled"\n\s+value\s=\s.*/), 2).first
  [type, frequency.to_i, smt_threads.to_i, smt_enabled]
end
query_cuat(name) click to toggle source
# File lib/facter/resolvers/aix/processors.rb, line 49
def query_cuat(name)
  odmquery = Facter::Util::Aix::ODMQuery.new
  odmquery.equals('name', name)

  result = odmquery.execute

  return unless result

  type, frequency, smt_threads, smt_enabled = process(result)

  @fact_list[:speed] ||= frequency if frequency

  threads = smt_enabled ? smt_threads : 1

  @fact_list[:logical_count] += threads
  @fact_list[:cores_per_socket] += 1
  @fact_list[:threads_per_core] = threads
  @fact_list[:models].concat([type] * threads)
end
query_pddv(fact_name) click to toggle source
# File lib/facter/resolvers/aix/processors.rb, line 16
def query_pddv(fact_name)
  @fact_list[:models] = []
  @fact_list[:logical_count] = 0
  @fact_list[:cores_per_socket] = 0
  @fact_list[:threads_per_core] = 0

  odmquery = Facter::Util::Aix::ODMQuery.new
  odmquery.equals('class', 'processor')

  result = odmquery.execute

  return unless result

  proc_names = retrieve_from_array(result.scan(/uniquetype\s=\s.*/), 1)

  proc_names.each { |name| populate_from_cudv(name) }

  @fact_list[fact_name]
end
retrieve_from_array(array, pos) click to toggle source
# File lib/facter/resolvers/aix/processors.rb, line 77
def retrieve_from_array(array, pos)
  array.map { |elem| elem.split('=')[pos].strip.delete('"') }
end