summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhil Dibowitz <phil@ipom.com>2017-10-09 20:06:44 -0700
committerGitHub <noreply@github.com>2017-10-09 20:06:44 -0700
commit537d4e33052466680113a07fb1d4efa96d8e06d4 (patch)
tree0a1306a868bab334759343045dd7981bd24f602f
parente53a7deffe5f88f5c8f28f6d2ae7c8553b0f588e (diff)
downloadchef-537d4e33052466680113a07fb1d4efa96d8e06d4.tar.gz
Support new CriticalOhaiPlugins (#6486)
We should not stack-trace, we should exit with a clean error Signed-off-by: Phil Dibowitz <phil@ipom.com>
-rw-r--r--lib/chef/client.rb3
-rw-r--r--spec/unit/client_spec.rb11
2 files changed, 14 insertions, 0 deletions
diff --git a/lib/chef/client.rb b/lib/chef/client.rb
index 9f8a34e85e..ed55cd791d 100644
--- a/lib/chef/client.rb
+++ b/lib/chef/client.rb
@@ -605,6 +605,9 @@ class Chef
filter = Chef::Config[:minimal_ohai] ? %w{fqdn machinename hostname platform platform_version os os_version} : nil
ohai.all_plugins(filter)
events.ohai_completed(node)
+ rescue Ohai::Exceptions::CriticalPluginFailure => e
+ Chef::Log.error("Critical Ohai plugins failed: #{e.message}")
+ exit(false)
end
#
diff --git a/spec/unit/client_spec.rb b/spec/unit/client_spec.rb
index d348c24385..95f308d130 100644
--- a/spec/unit/client_spec.rb
+++ b/spec/unit/client_spec.rb
@@ -44,6 +44,17 @@ describe Chef::Client do
end
end
+ context "when Ohai tells us to fail" do
+ it "fails" do
+ ohai_system = Ohai::System.new
+ module Ohai::Exceptions
+ class CriticalPluginFailure < Error; end
+ end
+ expect(ohai_system).to receive(:all_plugins) { raise Ohai::Exceptions::CriticalPluginFailure }
+ expect { client.run_ohai }.to raise_error(SystemExit)
+ end
+ end
+
describe "authentication protocol selection" do
context "when FIPS is disabled" do
before do