-
Notifications
You must be signed in to change notification settings - Fork 36
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ipmitool_fru: Add new fact to show to information from ipmtool fru
This CR adds a new structured fact called ipmitool with two keys fru and mc_info. fru is new data from ipmitool fru print. mc_info is the current ipmi_mc_info fact. I have updated the ipmi_mc_info fact so that it uses this new structured fact. The new fact will look like the following: ``` { fru => { fru_device_description => "OEM fru (ID 17)", board_mfg_date => "Tue Mar 3 21:43:00 2015", board_mfg => "DELL", board_product => "PowerEdge R220", board_serial => "*********", board_part_number => "0DRXF5A04", product_manufacturer => "DELL", product_name => "Test", product_extra => "*********" }, mc_info => { IPMI_Puppet_Service_Recommend => "running", Device ID => "32", Device Revision => "1", Firmware Revision => "2.65", IPMI Version => "2.0", Manufacturer ID => "674", Manufacturer Name => "DELL Inc", Product ID => "256 (0x0100)", Product Name => "Unknown (0x100)", Device Available => "yes", Provides Device SDRs => "yes" } } ``` We are able to use commands like the following: set the board_product with: * sudo ipmitool fru edit 0 field b 1 And the product_name with: * sudo ipmitool fru edit 0 field p 1
- Loading branch information
Showing
2 changed files
with
37 additions
and
15 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
#!/usr/bin/env ruby | ||
# frozen_string_literal: true | ||
|
||
Facter.add(:ipmitool, :type => :aggregate) do | ||
# https://puppet.com/docs/puppet/latest/fact_overview.html | ||
confine kernel: 'Linux' | ||
confine is_virtual: false | ||
confine do | ||
Facter::Util::Resolution.which('ipmitool') | ||
end | ||
|
||
chunk(:fru) do | ||
retval = {fru: {}} | ||
Check failure on line 13 in lib/facter/ipmitool.rb
|
||
ipmitool_output = Facter::Util::Resolution.exec('ipmitool fru print 2>/dev/null') | ||
ipmitool_output.each_line do |line| | ||
next unless line.include?(':') | ||
info = line.split(':', 2) | ||
next if info[1].strip.empty? | ||
key = info[0].strip.tr("\s", "_").downcase | ||
retval[:fru][key] = info[1].strip | ||
end | ||
retval | ||
end | ||
|
||
chunk(:mc_info) do | ||
retval = {mc_info: {'IPMI_Puppet_Service_Recommend' => 'stopped'}} | ||
Check failure on line 26 in lib/facter/ipmitool.rb
|
||
ipmitool_output = Facter::Util::Resolution.exec('ipmitool mc info 2>/dev/null') | ||
|
||
ipmitool_output.each_line do |line| | ||
info = line.split(':') | ||
retval[:mc_info][info[0].strip] = info[1].strip if info.length == 2 && (info[1].strip != '') | ||
end | ||
retval[:mc_info]['IPMI_Puppet_Service_Recommend'] = 'running' if retval[:mc_info].fetch('Device Available', 'no') == 'yes' | ||
retval | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters