From 02bd91393659714c602de104f547cff3310e6332 Mon Sep 17 00:00:00 2001 From: Sebastian Miclea Date: Tue, 20 Oct 2020 10:04:39 +0300 Subject: [PATCH] (FACT-2834) Dinamically get AIX proc number --- .../resolvers/aix/architecture_resolver.rb | 16 +++++++++++++++- .../resolvers/aix/architecture_resolver_spec.rb | 15 ++++++++++----- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/lib/facter/resolvers/aix/architecture_resolver.rb b/lib/facter/resolvers/aix/architecture_resolver.rb index 5fbba2cfe1..85fc5abfe3 100644 --- a/lib/facter/resolvers/aix/architecture_resolver.rb +++ b/lib/facter/resolvers/aix/architecture_resolver.rb @@ -14,9 +14,11 @@ def post_resolve(fact_name) def read_architecture(fact_name) require_relative 'utils/odm_query' + + proc_number = read_proc odmquery = ODMQuery.new odmquery - .equals('name', 'proc0') + .equals('name', proc_number) .equals('attribute', 'type') result = odmquery.execute @@ -32,6 +34,18 @@ def read_architecture(fact_name) @fact_list[fact_name] end + + def read_proc + odmquery = ODMQuery.new + odmquery + .equals('PdDvLn', 'processor/sys/proc_rspc') + .equals('status', '1') + + result = odmquery.execute + result.each_line do |line| + return line.split('=')[1].strip.delete('\"') if line.include?('name') + end + end end end end diff --git a/spec/facter/resolvers/aix/architecture_resolver_spec.rb b/spec/facter/resolvers/aix/architecture_resolver_spec.rb index ff7ad65e50..e3e5d44f9e 100644 --- a/spec/facter/resolvers/aix/architecture_resolver_spec.rb +++ b/spec/facter/resolvers/aix/architecture_resolver_spec.rb @@ -3,12 +3,17 @@ describe Facter::Resolvers::Architecture do describe '#resolve' do before do - odm = double('ODMQuery') + odm1 = instance_double(Facter::ODMQuery) + odm2 = instance_double(Facter::ODMQuery) - allow(Facter::ODMQuery).to receive(:new).and_return(odm) - allow(odm).to receive(:equals).with('name', 'proc0').and_return(odm) - allow(odm).to receive(:equals).with('attribute', 'type') - allow(odm).to receive(:execute).and_return(result) + allow(Facter::ODMQuery).to receive(:new).and_return(odm1, odm2) + allow(odm1).to receive(:equals).with('PdDvLn', 'processor/sys/proc_rspc').and_return(odm1) + allow(odm1).to receive(:equals).with('status', '1').and_return(odm1) + allow(odm1).to receive(:execute).and_return('proc8') + + allow(odm2).to receive(:equals).with('name', 'proc8').and_return(odm2) + allow(odm2).to receive(:equals).with('attribute', 'type').and_return(odm2) + allow(odm2).to receive(:execute).and_return(result) end after do