Patch modified from Hector Rivas

Signed-off-by: James Turnbull <[email protected]>
---
Local-branch: tickets/master/5699
 lib/facter/util/virtual.rb |    3 +++
 lib/facter/virtual.rb      |    4 ++++
 spec/unit/virtual_spec.rb  |   20 ++++++++++++++++++--
 3 files changed, 25 insertions(+), 2 deletions(-)

diff --git a/lib/facter/util/virtual.rb b/lib/facter/util/virtual.rb
index 06b1b6d..4355451 100644
--- a/lib/facter/util/virtual.rb
+++ b/lib/facter/util/virtual.rb
@@ -70,4 +70,7 @@ module Facter::Util::Virtual
         Facter::Util::Resolution.exec("/usr/bin/getconf MACHINE_MODEL").chomp 
=~ /Virtual Machine/
     end
 
+   def self.zlinux?
+        "zlinux"
+   end
 end
diff --git a/lib/facter/virtual.rb b/lib/facter/virtual.rb
index 47c9504..a5954cd 100644
--- a/lib/facter/virtual.rb
+++ b/lib/facter/virtual.rb
@@ -31,6 +31,10 @@ Facter.add("virtual") do
             result = "hpvm" if Facter::Util::Virtual.hpvm?
         end
 
+        if Facter.value(:architecture)=="s390x"
+            result = "zlinux" if Facter::Util::Virtual.zlinux?
+        end
+
         if Facter::Util::Virtual.openvz?
             result = Facter::Util::Virtual.openvz_type()
         end
diff --git a/spec/unit/virtual_spec.rb b/spec/unit/virtual_spec.rb
index 5f63dab..f5a5c3c 100644
--- a/spec/unit/virtual_spec.rb
+++ b/spec/unit/virtual_spec.rb
@@ -5,7 +5,6 @@ require 'facter/util/virtual'
 require 'facter/util/macosx'
 
 describe "Virtual fact" do
-
   before do
       Facter::Util::Virtual.stubs(:zone?).returns(false)
       Facter::Util::Virtual.stubs(:openvz?).returns(false)
@@ -13,6 +12,7 @@ describe "Virtual fact" do
       Facter::Util::Virtual.stubs(:xen?).returns(false)
       Facter::Util::Virtual.stubs(:kvm?).returns(false)
       Facter::Util::Virtual.stubs(:hpvm?).returns(false)
+      Facter::Util::Virtual.stubs(:zlinux?).returns(false)
   end
 
   it "should be zone on Solaris when a zone" do
@@ -36,6 +36,13 @@ describe "Virtual fact" do
      Facter.fact(:virtual).value.should == "hpvm"
   end
 
+  it "should be zlinux on s390x" do
+     Facter.fact(:kernel).stubs(:value).returns("Linux")
+     Facter.fact(:architecture).stubs(:value).returns("s390x")
+     Facter::Util::Virtual.stubs(:zlinux?).returns(true)
+     Facter.fact(:virtual).value.should == "zlinux"
+  end
+
   describe "on Darwin" do
       it "should be parallels with Parallels vendor id" do
           Facter.fact(:kernel).stubs(:value).returns("Darwin")
@@ -63,7 +70,10 @@ describe "Virtual fact" do
   end
 
   describe "on Linux" do
-
+      before do
+          Facter.fact(:architecture).stubs(:value).returns(true)
+      end
+      
       it "should be parallels with Parallels vendor id from lspci" do
           Facter.fact(:kernel).stubs(:value).returns("Linux")
           Facter::Util::Resolution.stubs(:exec).with('lspci').returns("01:00.0 
VGA compatible controller: Unknown device 1ab8:4005")
@@ -170,6 +180,12 @@ describe "is_virtual fact" do
         Facter.fact(:is_virtual).value.should == "true"
     end
 
+    it "should be true when running on S390" do
+        Facter.fact(:architecture).stubs(:value).returns("s390x")
+        Facter.fact(:virtual).stubs(:value).returns("zlinux")
+        Facter.fact(:is_virtual).value.should == "true"
+    end
+
     it "should be true when running on parallels" do
         Facter.fact(:kernel).stubs(:value).returns("Darwin")
         Facter.fact(:virtual).stubs(:value).returns("parallels")
-- 
1.7.1

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Developers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/puppet-dev?hl=en.

Reply via email to