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, + } + }