diff options
author | Tim Smith <tsmith84@gmail.com> | 2016-03-01 11:58:34 -0800 |
---|---|---|
committer | Tim Smith <tsmith84@gmail.com> | 2016-03-01 11:58:34 -0800 |
commit | b22a637d40f991a4abd349db6c123de1dd388801 (patch) | |
tree | 1d0bea3b84c5f54444ae62e1b04307cff9e2f974 | |
parent | 5d46dd0039303b9bcc1e2b5c664f43a62472ae89 (diff) | |
download | ohai-b22a637d40f991a4abd349db6c123de1dd388801.tar.gz |
Detect openstack hosts by nova binary
-rw-r--r-- | lib/ohai/plugins/linux/virtualization.rb | 11 | ||||
-rw-r--r-- | spec/unit/plugins/linux/virtualization_spec.rb | 15 |
2 files changed, 26 insertions, 0 deletions
diff --git a/lib/ohai/plugins/linux/virtualization.rb b/lib/ohai/plugins/linux/virtualization.rb index 6777063b..132e38a2 100644 --- a/lib/ohai/plugins/linux/virtualization.rb +++ b/lib/ohai/plugins/linux/virtualization.rb @@ -33,6 +33,10 @@ Ohai.plugin(:Virtualization) do which("docker") end + def nova_exists? + which('nova') + end + collect_data(:linux) do virtualization Mash.new unless virtualization virtualization[:systems] = Mash.new unless virtualization[:systems] @@ -74,6 +78,13 @@ Ohai.plugin(:Virtualization) do end end + # if nova binary is present we're on an openstack host + if nova_exists? + virtualization[:system] = "openstack" + virtualization[:role] = "host" + virtualization[:systems][:openstack] = "host" + end + # Detect paravirt KVM/QEMU from cpuinfo, report as KVM if File.exist?("/proc/cpuinfo") if File.read("/proc/cpuinfo") =~ /QEMU Virtual CPU|Common KVM processor|Common 32-bit KVM processor/ diff --git a/spec/unit/plugins/linux/virtualization_spec.rb b/spec/unit/plugins/linux/virtualization_spec.rb index 1c6d8258..9ec7594f 100644 --- a/spec/unit/plugins/linux/virtualization_spec.rb +++ b/spec/unit/plugins/linux/virtualization_spec.rb @@ -38,6 +38,11 @@ describe Ohai::System, "Linux virtualization platform" do allow(File).to receive(:exist?).with("/.dockerinit").and_return(false) allow(File).to receive(:exist?).with("/proc/bus/pci/devices").and_return(false) allow(File).to receive(:exist?).with("/sys/devices/virtual/misc/kvm").and_return(false) + + # default the which wrappers to nil + allow(plugin).to receive(:lxc_version_exists?).and_return(false) + allow(plugin).to receive(:docker_exists?).and_return(false) + allow(plugin).to receive(:nova_exists?).and_return(false) end describe "when we are checking for xen" do @@ -77,6 +82,16 @@ describe Ohai::System, "Linux virtualization platform" do end end + describe "when we are checking for openstack" do + it "sets openstack host if nova binary exists" do + allow(plugin).to receive(:nova_exists?).and_return('/usr/bin/nova') + plugin.run + expect(plugin[:virtualization][:system]).to eq("openstack") + expect(plugin[:virtualization][:role]).to eq("host") + expect(plugin[:virtualization][:systems][:openstack]).to eq("host") + end + end + describe "when we are checking for kvm" do it "sets kvm guest if /sys/devices/virtual/misc/kvm exists & hypervisor cpu feature is present" do allow(File).to receive(:exist?).with("/sys/devices/virtual/misc/kvm").and_return(true) |