[Pkg-puppet-devel] [SCM] Packaging of Facter for debian branch, upstream, updated. 51bcebe38cab6088c901f1006339bbe40a36d161

Paul Nasrat pnasrat at googlemail.com
Wed Aug 18 05:55:43 UTC 2010


The following commit has been merged in the upstream branch:
commit 62b6773a63bb96273fbcb6f79bec524fb67df075
Author: John Ferlito <johnf at inodes.org>
Date:   Sun Feb 14 18:07:43 2010 +1100

    Add kvm support to virtual fact
    
    Based on initial patch by James Turnbull

diff --git a/lib/facter/util/virtual.rb b/lib/facter/util/virtual.rb
index 0c3fb73..ca7c367 100644
--- a/lib/facter/util/virtual.rb
+++ b/lib/facter/util/virtual.rb
@@ -40,4 +40,21 @@ module Facter::Util::Virtual
             FileTest.exists?(f)
         end
     end
+
+    def self.kvm?
+       if FileTest.exists?("/proc/cpuinfo")
+           txt = File.read("/proc/cpuinfo")
+           return true if txt =~ /QEMU Virtual CPU/
+       end
+       return false
+    end
+
+    def self.kvm_type
+      # TODO Tell the difference between kvm and qemu
+      # Can't work out a way to do this at the moment that doesn't
+      # require a special binary
+      "kvm"
+    end
+
+
 end
diff --git a/lib/facter/virtual.rb b/lib/facter/virtual.rb
index 78413a9..3f02003 100644
--- a/lib/facter/virtual.rb
+++ b/lib/facter/virtual.rb
@@ -34,6 +34,10 @@ Facter.add("virtual") do
             end
         end
 
+        if Facter::Util::Virtual.kvm?
+            result = Facter::Util::Virtual.kvm_type()
+        end
+
         if result == "physical"
             output = Facter::Util::Resolution.exec('lspci')
             if not output.nil?
@@ -72,7 +76,7 @@ Facter.add("is_virtual") do
 
     setcode do
         case Facter.value(:virtual)
-        when "xenu", "openvzve", "vmware"
+        when "xenu", "openvzve", "vmware", "kvm"
             true
         else 
             false
diff --git a/spec/unit/util/virtual.rb b/spec/unit/util/virtual.rb
index 1f1c0f8..de339b8 100644
--- a/spec/unit/util/virtual.rb
+++ b/spec/unit/util/virtual.rb
@@ -93,4 +93,11 @@ describe Facter::Util::Virtual do
         FileTest.expects(:exists?).with("/proc/xen").returns(false)
         Facter::Util::Virtual.should_not be_xen
     end
+
+    it "should detect kvm" do
+        FileTest.stubs(:exists?).with("/proc/cpuinfo").returns(true)
+        File.stubs(:read).with("/proc/cpuinfo").returns("model name : QEMU Virtual CPU version 0.9.1\n")
+        Facter::Util::Virtual.should be_kvm
+    end
+
 end
diff --git a/spec/unit/virtual.rb b/spec/unit/virtual.rb
index cc72ffc..fe9988e 100644
--- a/spec/unit/virtual.rb
+++ b/spec/unit/virtual.rb
@@ -48,4 +48,10 @@ describe "is_virtual fact" do
         Facter.fact(:virtual).stubs(:value).returns("openvzve")
         Facter.fact(:is_virtual).value.should == true
     end
+
+    it "should be true when running on kvm" do
+        Facter.fact(:virtual).stubs(:value).returns("kvm")
+        Facter.fact(:is_virtual).value.should == true
+    end
+
 end

-- 
Packaging of Facter for debian



More information about the Pkg-puppet-devel mailing list