[Pkg-puppet-devel] [SCM] Packaging of Facter for debian branch, upstream, updated. 3a39dd8353b6308cf49522990104cc63e55d7cda
Paul Nasrat
pnasrat at googlemail.com
Fri Jan 29 17:22:41 UTC 2010
The following commit has been merged in the upstream branch:
commit 49470cf776f2c23cabec00b68b85a1264a3f7b48
Author: Paul Nasrat <pnasrat at googlemail.com>
Date: Sat Sep 5 06:45:50 2009 +0100
Fix broken solaris zone tests on EC2
This cleans up xen and vserver detection to enable us to stub out so when we
happen to be running tests on xen we don't report as that.
More cleanup is needed in this area but this should give us a green build.
This renames the tests to be consistent with current naming convention
diff --git a/lib/facter/util/virtual.rb b/lib/facter/util/virtual.rb
index 8db57a3..0c3fb73 100644
--- a/lib/facter/util/virtual.rb
+++ b/lib/facter/util/virtual.rb
@@ -24,4 +24,20 @@ module Facter::Util::Virtual
return true if txt =~ /^(s_context|VxID):[[:blank:]]*[1-9]/
return false
end
+
+ def self.vserver_type
+ if self.vserver?
+ if FileTest.exists?("/proc/virtual")
+ "vserver_host"
+ else
+ "vserver"
+ end
+ end
+ end
+
+ def self.xen?
+ ["/proc/sys/xen", "/sys/bus/xen", "/proc/xen" ].detect do |f|
+ FileTest.exists?(f)
+ end
+ end
end
diff --git a/lib/facter/virtual.rb b/lib/facter/virtual.rb
index 299ebb4..78413a9 100644
--- a/lib/facter/virtual.rb
+++ b/lib/facter/virtual.rb
@@ -13,24 +13,24 @@ Facter.add("virtual") do
result = Facter::Util::Virtual.openvz_type()
end
- result = "vserver" if Facter::Util::Virtual.vserver?
-
- if FileTest.exists?("/proc/virtual")
- result = "vserver_host"
+ if Facter::Util::Virtual.vserver?
+ result = Facter::Util::Virtual.vserver_type()
end
- # new Xen domains have this in dom0 not domu :(
- if FileTest.exists?("/proc/sys/xen/independent_wallclock")
- result = "xenu"
- end
- if FileTest.exists?("/sys/bus/xen")
- result = "xenu"
- end
+ if Facter::Util::Virtual.xen?
+ # new Xen domains have this in dom0 not domu :(
+ if FileTest.exists?("/proc/sys/xen/independent_wallclock")
+ result = "xenu"
+ end
+ if FileTest.exists?("/sys/bus/xen")
+ result = "xenu"
+ end
- if FileTest.exists?("/proc/xen/capabilities")
- txt = File.read("/proc/xen/capabilities")
- if txt =~ /control_d/i
- result = "xen0"
+ if FileTest.exists?("/proc/xen/capabilities")
+ txt = File.read("/proc/xen/capabilities")
+ if txt =~ /control_d/i
+ result = "xen0"
+ end
end
end
@@ -57,11 +57,10 @@ Facter.add("virtual") do
end
end
end
- end
-
- # VMware server 1.0.3 rpm places vmware-vmx in this place, other versions or platforms may not.
- if FileTest.exists?("/usr/lib/vmware/bin/vmware-vmx")
- result = "vmware_server"
+ # VMware server 1.0.3 rpm places vmware-vmx in this place, other versions or platforms may not.
+ if FileTest.exists?("/usr/lib/vmware/bin/vmware-vmx")
+ result = "vmware_server"
+ end
end
result
diff --git a/spec/unit/util/virtual.rb b/spec/unit/util/virtual.rb
new file mode 100644
index 0000000..1f1c0f8
--- /dev/null
+++ b/spec/unit/util/virtual.rb
@@ -0,0 +1,96 @@
+require File.dirname(__FILE__) + '/../../spec_helper'
+
+require 'facter/util/virtual'
+
+describe Facter::Util::Virtual do
+
+ after do
+ Facter.clear
+ end
+ it "should detect openvz" do
+ FileTest.stubs(:exists?).with("/proc/vz/veinfo").returns(true)
+ Facter::Util::Virtual.should be_openvz
+ end
+
+ it "should identify openvzhn when version file exists" do
+ Facter::Util::Virtual.stubs(:openvz?).returns(true)
+ FileTest.stubs(:exists?).with("/proc/vz/version").returns(true)
+ Facter::Util::Virtual.openvz_type().should == "openvzhn"
+ end
+
+ it "should identify openvzve when no version file exists" do
+ Facter::Util::Virtual.stubs(:openvz?).returns(true)
+ FileTest.stubs(:exists?).with("/proc/vz/version").returns(false)
+ Facter::Util::Virtual.openvz_type().should == "openvzve"
+ end
+
+ it "should identify Solaris zones when non-global zone" do
+ Facter::Util::Resolution.stubs(:exec).with("/sbin/zonename").returns("somezone")
+ Facter::Util::Virtual.should be_zone
+ end
+
+ it "should not identify Solaris zones when global zone" do
+ Facter::Util::Resolution.stubs(:exec).with("/sbin/zonename").returns("global")
+ Facter::Util::Virtual.should_not be_zone
+ end
+
+ it "should not detect vserver if no self status" do
+ FileTest.stubs(:exists?).with("/proc/self/status").returns(false)
+ Facter::Util::Virtual.should_not be_vserver
+ end
+
+ it "should detect vserver when vxid present in process status" do
+ FileTest.stubs(:exists?).with("/proc/self/status").returns(true)
+ File.stubs(:read).with("/proc/self/status").returns("VxID: 42\n")
+ Facter::Util::Virtual.should be_vserver
+ end
+
+ it "should detect vserver when s_context present in process status" do
+ FileTest.stubs(:exists?).with("/proc/self/status").returns(true)
+ File.stubs(:read).with("/proc/self/status").returns("s_context: 42\n")
+ Facter::Util::Virtual.should be_vserver
+ end
+
+ it "should not detect vserver when vserver flags not present in process status" do
+ FileTest.stubs(:exists?).with("/proc/self/status").returns(true)
+ File.stubs(:read).with("/proc/self/status").returns("wibble: 42\n")
+ Facter::Util::Virtual.should_not be_vserver
+ end
+
+ it "should identify vserver_host when /proc/virtual exists" do
+ Facter::Util::Virtual.expects(:vserver?).returns(true)
+ FileTest.stubs(:exists?).with("/proc/virtual").returns(true)
+ Facter::Util::Virtual.vserver_type().should == "vserver_host"
+ end
+
+ it "should identify vserver_type as vserver when /proc/virtual does not exist" do
+ Facter::Util::Virtual.expects(:vserver?).returns(true)
+ FileTest.stubs(:exists?).with("/proc/virtual").returns(false)
+ Facter::Util::Virtual.vserver_type().should == "vserver"
+ end
+
+ it "should detect xen when /proc/sys/xen exists" do
+ FileTest.expects(:exists?).with("/proc/sys/xen").returns(true)
+ Facter::Util::Virtual.should be_xen
+ end
+
+ it "should detect xen when /sys/bus/xen exists" do
+ FileTest.expects(:exists?).with("/proc/sys/xen").returns(false)
+ FileTest.expects(:exists?).with("/sys/bus/xen").returns(true)
+ Facter::Util::Virtual.should be_xen
+ end
+
+ it "should detect xen when /proc/xen exists" do
+ FileTest.expects(:exists?).with("/proc/sys/xen").returns(false)
+ FileTest.expects(:exists?).with("/sys/bus/xen").returns(false)
+ FileTest.expects(:exists?).with("/proc/xen").returns(true)
+ Facter::Util::Virtual.should be_xen
+ end
+
+ it "should not detect xen when no sysfs/proc xen directories exist" do
+ FileTest.expects(:exists?).with("/proc/sys/xen").returns(false)
+ FileTest.expects(:exists?).with("/sys/bus/xen").returns(false)
+ FileTest.expects(:exists?).with("/proc/xen").returns(false)
+ Facter::Util::Virtual.should_not be_xen
+ end
+end
diff --git a/spec/unit/util/virtual_spec.rb b/spec/unit/util/virtual_spec.rb
deleted file mode 100644
index 3552c45..0000000
--- a/spec/unit/util/virtual_spec.rb
+++ /dev/null
@@ -1,60 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper'
-
-require 'facter/util/virtual'
-
-describe Facter::Util::Virtual do
-
- after do
- Facter.clear
- end
- it "should detect openvz" do
- FileTest.stubs(:exists?).with("/proc/vz/veinfo").returns(true)
- Facter::Util::Virtual.should be_openvz
- end
-
- it "should identify openvzhn when version file exists" do
- Facter::Util::Virtual.stubs(:openvz?).returns(true)
- FileTest.stubs(:exists?).with("/proc/vz/version").returns(true)
- Facter::Util::Virtual.openvz_type().should == "openvzhn"
- end
-
- it "should identify openvzve when no version file exists" do
- Facter::Util::Virtual.stubs(:openvz?).returns(true)
- FileTest.stubs(:exists?).with("/proc/vz/version").returns(false)
- Facter::Util::Virtual.openvz_type().should == "openvzve"
- end
-
- it "should identify Solaris zones when non-global zone" do
- Facter::Util::Resolution.stubs(:exec).with("/sbin/zonename").returns("somezone")
- Facter::Util::Virtual.should be_zone
- end
-
- it "should not identify Solaris zones when global zone" do
- Facter::Util::Resolution.stubs(:exec).with("/sbin/zonename").returns("global")
- Facter::Util::Virtual.should_not be_zone
- end
-
- it "should not detect vserver if no self status" do
- FileTest.stubs(:exists?).with("/proc/self/status").returns(false)
- Facter::Util::Virtual.should_not be_vserver
- end
-
- it "should detect vserver when vxid present in process status" do
- FileTest.stubs(:exists?).with("/proc/self/status").returns(true)
- File.stubs(:read).with("/proc/self/status").returns("VxID: 42\n")
- Facter::Util::Virtual.should be_vserver
- end
-
- it "should detect vserver when s_context present in process status" do
- FileTest.stubs(:exists?).with("/proc/self/status").returns(true)
- File.stubs(:read).with("/proc/self/status").returns("s_context: 42\n")
- Facter::Util::Virtual.should be_vserver
- end
-
- it "should not detect vserver when vserver flags not present in process status" do
- FileTest.stubs(:exists?).with("/proc/self/status").returns(true)
- File.stubs(:read).with("/proc/self/status").returns("wibble: 42\n")
- Facter::Util::Virtual.should_not be_vserver
- end
-
-end
diff --git a/spec/unit/virtual_spec.rb b/spec/unit/virtual.rb
similarity index 92%
rename from spec/unit/virtual_spec.rb
rename to spec/unit/virtual.rb
index 68cd258..cc72ffc 100644
--- a/spec/unit/virtual_spec.rb
+++ b/spec/unit/virtual.rb
@@ -12,6 +12,8 @@ describe "Virtual fact" do
it "should be zone on Solaris when a zone" do
Facter.fact(:kernel).stubs(:value).returns("SunOS")
Facter::Util::Virtual.stubs(:zone?).returns(true)
+ Facter::Util::Virtual.stubs(:vserver?).returns(false)
+ Facter::Util::Virtual.stubs(:xen?).returns(false)
Facter.fact(:virtual).value.should == "zone"
end
--
Packaging of Facter for debian
More information about the Pkg-puppet-devel
mailing list