From 898d80e2dc1983fbffd3ee253c519fef6c9de2c1 Mon Sep 17 00:00:00 2001 From: Ossi Salmi Date: Tue, 24 Jul 2012 15:33:56 +0300 Subject: [PATCH] Added libvirt facter plugin --- libvirt/lib/facter/libvirt.rb | 40 +++++++++++++++++++++++++++++++++++ libvirt/manifests/init.pp | 4 ++++ 2 files changed, 44 insertions(+) create mode 100644 libvirt/lib/facter/libvirt.rb diff --git a/libvirt/lib/facter/libvirt.rb b/libvirt/lib/facter/libvirt.rb new file mode 100644 index 0000000..38ca885 --- /dev/null +++ b/libvirt/lib/facter/libvirt.rb @@ -0,0 +1,40 @@ +Facter.add(:libvirt_activedomains) do + confine :kernel => :linux + setcode do + begin + require 'libvirt' + conn = Libvirt::open_read_only('qemu:///system') + doms = Array.new + conn.list_domains.each do |domid| + dom = conn.lookup_domain_by_id(domid) + doms << dom.name + end + conn.close + doms.sort.join(',') + rescue LoadError + Facter.debug('ruby-libvirt not available') + rescue Exception + Facter.debug('libvirt connection failed') + end + end +end + +Facter.add(:libvirt_inactivedomains) do + confine :kernel => :linux + setcode do + begin + require 'libvirt' + conn = Libvirt::open_read_only('qemu:///system') + doms = Array.new + conn.list_defined_domains.each do |domname| + doms << domname + end + conn.close + doms.sort.join(',') + rescue LoadError + Facter.debug('ruby-libvirt not available') + rescue Exception + Facter.debug('libvirt connection failed') + end + end +end diff --git a/libvirt/manifests/init.pp b/libvirt/manifests/init.pp index 9d131c9..503b0e7 100644 --- a/libvirt/manifests/init.pp +++ b/libvirt/manifests/init.pp @@ -80,5 +80,9 @@ class libvirt::kvm inherits libvirt::client { enable => true, } + package { "ruby-libvirt": + ensure => installed, + } + }