summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Smith <tsmith84@gmail.com>2016-03-01 11:58:34 -0800
committerTim Smith <tsmith84@gmail.com>2016-03-01 11:58:34 -0800
commitb22a637d40f991a4abd349db6c123de1dd388801 (patch)
tree1d0bea3b84c5f54444ae62e1b04307cff9e2f974
parent5d46dd0039303b9bcc1e2b5c664f43a62472ae89 (diff)
downloadohai-b22a637d40f991a4abd349db6c123de1dd388801.tar.gz
Detect openstack hosts by nova binary
-rw-r--r--lib/ohai/plugins/linux/virtualization.rb11
-rw-r--r--spec/unit/plugins/linux/virtualization_spec.rb15
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)