From ff3cafa5d8850c7aaea9b9714b15a8256168120a Mon Sep 17 00:00:00 2001 From: Tim Smith Date: Wed, 3 Oct 2018 15:20:21 -0700 Subject: [PATCH] Trim out bogus data in system_profile plugin Also there's no need to rescue requiring plist since ohai depends on it. We don't do this for anything else in Ohai. Signed-off-by: Tim Smith --- lib/ohai/plugins/darwin/hardware.rb | 8 +---- lib/ohai/plugins/darwin/system_profiler.rb | 38 +++++++++++----------- 2 files changed, 20 insertions(+), 26 deletions(-) diff --git a/lib/ohai/plugins/darwin/hardware.rb b/lib/ohai/plugins/darwin/hardware.rb index c522090f8..dab7957d3 100644 --- a/lib/ohai/plugins/darwin/hardware.rb +++ b/lib/ohai/plugins/darwin/hardware.rb @@ -34,13 +34,7 @@ def system_profiler(datatype) next end - begin - require "plist" - rescue LoadError => e - # In case the plist gem isn't present, skip this plugin. - logger.trace("Plugin Hardware: Can't load gem: #{e}. Cannot continue.") - next - end + require "plist" hw_hash = system_profiler("SPHardwareDataType") hw_hash[0]["_items"][0].delete("_name") diff --git a/lib/ohai/plugins/darwin/system_profiler.rb b/lib/ohai/plugins/darwin/system_profiler.rb index 610004741..ee1ab2988 100644 --- a/lib/ohai/plugins/darwin/system_profiler.rb +++ b/lib/ohai/plugins/darwin/system_profiler.rb @@ -20,13 +20,12 @@ provides "system_profile" collect_data(:darwin) do - begin - require "plist" + require "plist" - system_profile Array.new - items = Array.new - detail_level = { - "mini" => %w{ + system_profile Array.new + items = Array.new + detail_level = { + "mini" => %w{ SPParallelATAData SPAudioData SPBluetoothData @@ -52,21 +51,22 @@ SPUSBData SPWWANData SPAirPortData}, - "full" => [ - "SPHardwareDataType", - ], - } + "full" => [ + "SPHardwareDataType", + ], + } - detail_level.each do |level, data_types| - so = shell_out("system_profiler -xml -detailLevel #{level} #{data_types.join(' ')}") - Plist.parse_xml(so.stdout).each do |e| - items << e - end + detail_level.each do |level, data_types| + so = shell_out("system_profiler -xml -detailLevel #{level} #{data_types.join(' ')}") + Plist.parse_xml(so.stdout).each do |e| + # delete some bogus timing data and then keep the rest + e.delete("_SPCompletionInterval") + e.delete("_SPResponseTime") + e.delete("_SPCommandLineArguments") + items << e end - - system_profile ( items.sort_by { |h| h["_dataType"] } ) # rubocop: disable Lint/ParenthesesAsGroupedExpression - rescue LoadError => e - logger.trace("Can't load gem: #{e})") end + + system_profile ( items.sort_by { |h| h["_dataType"] } ) # rubocop: disable Lint/ParenthesesAsGroupedExpression end end