A variant of this patch was merged into facter as commit f007a9d5719cacf0538c9155cc90de86e69d65df and the ticket was closed. Just thought I'd update the mailing list while looking for community patches we've missed.
On Tue, Oct 12, 2010 at 11:32 AM, Jonas Genannt <[email protected]> wrote: > > Signed-off-by: Jonas Genannt <[email protected]> > --- > lib/facter/util/xendomains.rb | 22 ++++++++++++++++++++++ > lib/facter/xendomains.rb | 11 +++++++++++ > spec/unit/data/xendomains | 4 ++++ > spec/unit/util/xendomains.rb | 14 ++++++++++++++ > 4 files changed, 51 insertions(+), 0 deletions(-) > create mode 100644 lib/facter/util/xendomains.rb > create mode 100644 lib/facter/xendomains.rb > create mode 100644 spec/unit/data/xendomains > create mode 100644 spec/unit/util/xendomains.rb > > diff --git a/lib/facter/util/xendomains.rb b/lib/facter/util/xendomains.rb > new file mode 100644 > index 0000000..0b3b2a2 > --- /dev/null > +++ b/lib/facter/util/xendomains.rb > @@ -0,0 +1,22 @@ > +# A module to gather running Xen Domains > +# > +module Facter::Util::Xendomains > + def self.get_xm_list_output > + output = "" > + if File.executable?('/usr/sbin/xm') > + output = %x{/usr/sbin/xm list} > + end > + output > + end > + > + def self.get_domains > + domains = Array.new > + if self.get_xm_list_output > + self.get_xm_list_output.each do |line| > + next if line =~ /^(Name|Domain-0)/ > + domains << line.split(/\s/)[0] > + end > + end > + domains.join(',') > + end > +end > \ No newline at end of file > diff --git a/lib/facter/xendomains.rb b/lib/facter/xendomains.rb > new file mode 100644 > index 0000000..cd863e1 > --- /dev/null > +++ b/lib/facter/xendomains.rb > @@ -0,0 +1,11 @@ > +require 'facter/util/xendomains' > + > +Facter.add("xendomains") do > + confine :kernel => %w{Linux FreeBSD OpenBSD SunOS} > + > + if Facter.value(:virtual) == "xen0" > + setcode do > + Facter::Util::Xendomains.get_domains > + end > + end > +end > \ No newline at end of file > 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..d4b4389 > --- /dev/null > +++ b/spec/unit/util/xendomains.rb > @@ -0,0 +1,14 @@ > +#!/usr/bin/env ruby > + > +require File.dirname(__FILE__) + '/../../spec_helper' > + > +require 'facter/util/xendomains' > + > +describe Facter::Util::Xendomains do > + it "should return a list of running Xen Domains on Xen0" do > + sample_output_file = File.dirname(__FILE__) + '/../data/xendomains' > + xen0_domains = File.new(sample_output_file).read(); > + Facter::Util::Xendomains.stubs(:get_xm_list_output).returns(xen0_domains) > + Facter::Util::Xendomains.get_domains().should == %{web01,mailserver} > + end > +end > -- > 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. > > -- 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.
