summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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 82abd34ff1..8514941d47 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 ba71b3b6a4..8a67f24f5a 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