diff options
author | Phil Dibowitz <phil@ipom.com> | 2017-10-09 20:06:44 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-10-09 20:06:44 -0700 |
commit | 537d4e33052466680113a07fb1d4efa96d8e06d4 (patch) | |
tree | 0a1306a868bab334759343045dd7981bd24f602f | |
parent | e53a7deffe5f88f5c8f28f6d2ae7c8553b0f588e (diff) | |
download | chef-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.rb | 3 | ||||
-rw-r--r-- | spec/unit/client_spec.rb | 11 |
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 |