From ede8809874b19e19b813b8df166a2942eb016400 Mon Sep 17 00:00:00 2001 From: Thom May Date: Thu, 24 May 2018 11:56:02 +0100 Subject: detect red hat openstack clusters Signed-off-by: Thom May --- lib/ohai/plugins/openstack.rb | 3 +++ spec/unit/plugins/openstack_spec.rb | 29 ++++++++++++++++++++++++----- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/lib/ohai/plugins/openstack.rb b/lib/ohai/plugins/openstack.rb index 7d1c528c..42dcbbf5 100644 --- a/lib/ohai/plugins/openstack.rb +++ b/lib/ohai/plugins/openstack.rb @@ -32,6 +32,9 @@ Ohai.plugin(:Openstack) do if get_attribute(:dmi, :system, :all_records, 0, :Manufacturer) =~ /OpenStack/ Ohai::Log.debug("Plugin Openstack: has_openstack_dmi? == true") true + elsif get_attribute(:dmi, :system, :product_name) == "OpenStack Compute" + logger.trace("Plugin Openstack: has_openstack_dmi? == true") + true else Ohai::Log.debug("Plugin Openstack: has_openstack_dmi? == false") false diff --git a/spec/unit/plugins/openstack_spec.rb b/spec/unit/plugins/openstack_spec.rb index 843f864c..b8533a22 100644 --- a/spec/unit/plugins/openstack_spec.rb +++ b/spec/unit/plugins/openstack_spec.rb @@ -40,16 +40,35 @@ describe Ohai::System, "plugin openstack" do allow(plugin).to receive(:can_socket_connect?). with(Ohai::Mixin::Ec2Metadata::EC2_METADATA_ADDR, 80). and_return(false) - plugin[:dmi] = { :system => { :all_records => [ { :Manufacturer => "OpenStack Foundation" } ] } } + plugin[:dmi] = dmi_data plugin.run end - it "sets openstack attribute" do - expect(plugin[:openstack][:provider]).to eq("openstack") + context "with normal openstack metadata" do + let(:dmi_data) do + { :system => { :all_records => [ { :Manufacturer => "OpenStack Foundation" } ] } } + end + + it "sets openstack attribute" do + expect(plugin[:openstack][:provider]).to eq("openstack") + end + + it "doesn't set metadata attributes" do + expect(plugin[:openstack][:instance_id]).to be_nil + end end + context "with Red Hat openstack metadata" do + let(:dmi_data) do + { :system => { :manufacturer => "Red Hat", :product_name => "OpenStack Compute" } } + end - it "doesn't set metadata attributes" do - expect(plugin[:openstack][:instance_id]).to be_nil + it "sets openstack attribute" do + expect(plugin[:openstack][:provider]).to eq("openstack") + end + + it "doesn't set metadata attributes" do + expect(plugin[:openstack][:instance_id]).to be_nil + end end end end -- cgit v1.2.1