[Pkg-puppet-devel] [SCM] Packaging of Facter for debian branch, squeeze-1.5.7, updated. debian/1.5.7-1-29-g115f872

Micah Anderson micah at riseup.net
Thu Dec 23 16:45:09 UTC 2010


The following commit has been merged in the squeeze-1.5.7 branch:
commit 000c83c4e786a2a233ad8fb7a03c785b2927b261
Author: Rein Henrichs <rein at puppetlabs.com>
Date:   Mon Oct 18 15:45:54 2010 -0700

    (#4989) Add xendomains fact
    
    Parses `/usr/sbin/xm list` and returns a comma-separated list of
    domains. Based on a patch submitted by Jonas Genannt.

diff --git a/lib/facter/util/xendomains.rb b/lib/facter/util/xendomains.rb
new file mode 100644
index 0000000..4f590a8
--- /dev/null
+++ b/lib/facter/util/xendomains.rb
@@ -0,0 +1,10 @@
+# A module to gather running Xen Domains
+#
+module Facter::Util::Xendomains
+  def self.get_domains
+    if xm_list = Facter::Util::Resolution.exec('/usr/sbin/xm list')
+      domains = xm_list.split("\n").reject { |line| line =~ /^(Name|Domain-0)/ }
+      domains.map { |line| line.split(/\s/)[0] }.join(',')
+    end
+  end
+end
diff --git a/lib/facter/xendomains.rb b/lib/facter/xendomains.rb
new file mode 100644
index 0000000..972ac90
--- /dev/null
+++ b/lib/facter/xendomains.rb
@@ -0,0 +1,10 @@
+require 'facter/util/xendomains'
+
+Facter.add("xendomains") do
+  confine :kernel => %w{Linux FreeBSD OpenBSD SunOS}
+  confine :virtual => 'xen0'
+
+  setcode do
+    Facter::Util::Xendomains.get_domains
+  end
+end
diff --git a/spec/unit/data/xendomains b/spec/unit/data/xendomains
new file mode 100644
index 0000000..9b112bc
--- /dev/null
+++ b/spec/unit/data/xendomains
@@ -0,0 +1,4 @@
+Name                                        ID   Mem VCPUs      State   Time(s)
+Domain-0                                     0   656     4     r-----  48140.9
+web01                                       48   512     2     -b----  97651.5
+mailserver                                  53   512     4     -b----   7536.1
diff --git a/spec/unit/util/xendomains.rb b/spec/unit/util/xendomains.rb
new file mode 100644
index 0000000..a0fa345
--- /dev/null
+++ b/spec/unit/util/xendomains.rb
@@ -0,0 +1,23 @@
+#!/usr/bin/env ruby
+
+require File.dirname(__FILE__) + '/../../spec_helper'
+
+require 'facter/util/xendomains'
+
+describe Facter::Util::Xendomains do
+  describe ".get_domains" do
+    it "should return a list of running Xen Domains on Xen0" do
+      sample_output_file = File.dirname(__FILE__) + '/../data/xendomains'
+      xen0_domains = File.read(sample_output_file)
+      Facter::Util::Resolution.stubs(:exec).with('/usr/sbin/xm list').returns(xen0_domains)
+      Facter::Util::Xendomains.get_domains.should == %{web01,mailserver}
+    end
+
+    context "when xm list isn't executable" do
+      it "should be nil" do
+        Facter::Util::Resolution.stubs(:exec).with('/usr/sbin/xm list').returns(nil)
+        Facter::Util::Xendomains.get_domains.should == nil
+      end
+    end
+  end
+end

-- 
Packaging of Facter for debian



More information about the Pkg-puppet-devel mailing list