summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Kincaid <michael@puppetlabs.com>2011-03-31 16:04:57 -0700
committerJames Turnbull <james@lovedthanlost.net>2011-04-01 17:26:22 +1100
commite42e57c1a5674d77dfa14e10ade9592f5d2052e7 (patch)
tree09becc55e6c945e8008a4d406e36910f24e2f6f3
parentb69b2df6f09a7a165c005b3270ee21d1db57eee4 (diff)
downloadfacter-e42e57c1a5674d77dfa14e10ade9592f5d2052e7.tar.gz
facter-e42e57c1a5674d77dfa14e10ade9592f5d2052e7.tar.xz
facter-e42e57c1a5674d77dfa14e10ade9592f5d2052e7.zip
(#3856) Add virtualbox detection via lspci (graphics card), dmidecode, and prtdiag for Solaris and corresponding tests. Darwin case is not handled yet.
-rw-r--r--lib/facter/virtual.rb5
-rw-r--r--spec/unit/virtual_spec.rb27
2 files changed, 32 insertions, 0 deletions
diff --git a/lib/facter/virtual.rb b/lib/facter/virtual.rb
index 02802e6..7c649ba 100644
--- a/lib/facter/virtual.rb
+++ b/lib/facter/virtual.rb
@@ -104,6 +104,9 @@ Facter.add("virtual") do
# --- look for the vmware video card to determine if it is virtual => vmware.
# --- 00:0f.0 VGA compatible controller: VMware Inc [VMware SVGA II] PCI Display Adapter
result = "vmware" if p =~ /VM[wW]are/
+ # --- look for virtualbox video card to determine if it is virtual => virtualbox.
+ # --- 00:02.0 VGA compatible controller: InnoTek Systemberatung GmbH VirtualBox Graphics Adapter
+ result = "virtualbox" if p =~ /VirtualBox/
# --- look for pci vendor id used by Parallels video card
# --- 01:00.0 VGA compatible controller: Unknown device 1ab8:4005
result = "parallels" if p =~ /1ab8:|[Pp]arallels/
@@ -114,6 +117,7 @@ Facter.add("virtual") do
output.each_line do |pd|
result = "parallels" if pd =~ /Parallels/
result = "vmware" if pd =~ /VMware/
+ result = "virtualbox" if pd =~ /VirtualBox/
end
else
output = Facter::Util::Resolution.exec('prtdiag')
@@ -121,6 +125,7 @@ Facter.add("virtual") do
output.each_line do |pd|
result = "parallels" if pd =~ /Parallels/
result = "vmware" if pd =~ /VMware/
+ result = "virtualbox" if pd =~ /VirtualBox/
end
end
end
diff --git a/spec/unit/virtual_spec.rb b/spec/unit/virtual_spec.rb
index 7e50847..ac0a9bb 100644
--- a/spec/unit/virtual_spec.rb
+++ b/spec/unit/virtual_spec.rb
@@ -94,6 +94,12 @@ describe "Virtual fact" do
Facter.fact(:virtual).value.should == "vmware"
end
+ it "should be virtualbox with VirtualBox vendor name from lspci" do
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
+ Facter::Util::Resolution.stubs(:exec).with('lspci').returns("00:02.0 VGA compatible controller: InnoTek Systemberatung GmbH VirtualBox Graphics Adapter")
+ Facter.fact(:virtual).value.should == "virtualbox"
+ end
+
it "should be vmware with VMWare vendor name from dmidecode" do
Facter.fact(:kernel).stubs(:value).returns("Linux")
Facter::Util::Resolution.stubs(:exec).with('lspci').returns(nil)
@@ -108,6 +114,13 @@ describe "Virtual fact" do
Facter.fact(:virtual).value.should == "parallels"
end
+ it "should be virtualbox with VirtualBox vendor name from dmidecode" do
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
+ Facter::Util::Resolution.stubs(:exec).with('lspci').returns(nil)
+ Facter::Util::Resolution.stubs(:exec).with('dmidecode').returns("BIOS Information\nVendor: innotek GmbH\nVersion: VirtualBox\n\nSystem Information\nManufacturer: innotek GmbH\nProduct Name: VirtualBox\nFamily: Virtual Machine")
+ Facter.fact(:virtual).value.should == "virtualbox"
+ end
+
it "should be vmware with VMWare vendor name from prtdiag" do
Facter.fact(:kernel).stubs(:value).returns("Linux")
Facter::Util::Resolution.stubs(:exec).with('lspci').returns(nil)
@@ -123,6 +136,14 @@ describe "Virtual fact" do
Facter::Util::Resolution.stubs(:exec).with('prtdiag').returns("System Configuration: Parallels Virtual Platform")
Facter.fact(:virtual).value.should == "parallels"
end
+
+ it "should be virtualbox with VirtualBox vendor name from prtdiag" do
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
+ Facter::Util::Resolution.stubs(:exec).with('lspci').returns(nil)
+ Facter::Util::Resolution.stubs(:exec).with('dmidecode').returns(nil)
+ Facter::Util::Resolution.stubs(:exec).with('prtdiag').returns("System Configuration: innotek GmbH VirtualBox")
+ Facter.fact(:virtual).value.should == "virtualbox"
+ end
end
end
@@ -152,6 +173,12 @@ describe "is_virtual fact" do
Facter.fact(:is_virtual).value.should == "true"
end
+ it "should be true when running on virtualbox" do
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
+ Facter.fact(:virtual).stubs(:value).returns("virtualbox")
+ Facter.fact(:is_virtual).value.should == "true"
+ end
+
it "should be true when running on openvz" do
Facter.fact(:kernel).stubs(:value).returns("Linux")
Facter.fact(:virtual).stubs(:value).returns("openvzve")