From cc60884faa51751a7c2f07d94bec192fb57b76b3 Mon Sep 17 00:00:00 2001 From: Steve Huff Date: Wed, 26 Feb 2014 12:04:54 -0500 Subject: prevent Facter error when packages not installed on RHEL systems, `pkg.retrieve[pkg.property(:ensure)]` returns `:absent` when a package is not installed; this can generate an unsightly error when running these facts on a RHEL system where the necessary OS packages are not installed: [root@gepeto ~]# facter -p osfamily RedHat [root@gepeto ~]# facter -p lsbmajdistrelease 5 [root@gepeto ~]# grep version /etc/puppet/modules/python/Modulefile version '1.6.3' [root@gepeto ~]# facter -p virtualenv_version pip_version Could not retrieve virtualenv_version: can't convert Symbol into String Could not retrieve pip_version: undefined method `[]' for nil:NilClass Could not retrieve pip_version: can't convert Symbol into String pip_version => virtualenv_version => Fixes #50 --- lib/facter/pip_version.rb | 2 +- lib/facter/python_version.rb | 4 ++-- lib/facter/virtualenv_version.rb | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) (limited to 'lib') diff --git a/lib/facter/pip_version.rb b/lib/facter/pip_version.rb index bc725db..46c50d9 100644 --- a/lib/facter/pip_version.rb +++ b/lib/facter/pip_version.rb @@ -12,7 +12,7 @@ end Facter.add("pip_version") do has_weight 50 setcode do - if pkg.retrieve[pkg.property(:ensure)] != 'purged' + unless [:absent,'purged'].include?(pkg.retrieve[pkg.property(:ensure)]) /^.*(\d+\.\d+\.\d+).*$/.match(pkg.retrieve[pkg.property(:ensure)])[1] end end diff --git a/lib/facter/python_version.rb b/lib/facter/python_version.rb index 50fef72..919fd89 100644 --- a/lib/facter/python_version.rb +++ b/lib/facter/python_version.rb @@ -5,7 +5,7 @@ pkg = Puppet::Type.type(:package).new(:name => "python") Facter.add("system_python_version") do setcode do - if pkg.retrieve[pkg.property(:ensure)] != 'purged' + unless [:absent,'purged'].include?(pkg.retrieve[pkg.property(:ensure)]) /^(\d+\.\d+\.\d+).*$/.match(pkg.retrieve[pkg.property(:ensure)])[1] end end @@ -21,7 +21,7 @@ end Facter.add("python_version") do has_weight 50 setcode do - if pkg.retrieve[pkg.property(:ensure)] != 'purged' + unless [:absent,'purged'].include?(pkg.retrieve[pkg.property(:ensure)]) /^.*(\d+\.\d+\.\d+).*$/.match(pkg.retrieve[pkg.property(:ensure)])[1] end end diff --git a/lib/facter/virtualenv_version.rb b/lib/facter/virtualenv_version.rb index c923b09..9a3b4b0 100644 --- a/lib/facter/virtualenv_version.rb +++ b/lib/facter/virtualenv_version.rb @@ -12,7 +12,7 @@ end Facter.add("virtualenv_version") do has_weight 50 setcode do - if pkg.retrieve[pkg.property(:ensure)] != 'purged' + unless [:absent,'purged'].include?(pkg.retrieve[pkg.property(:ensure)]) /^.*(\d+\.\d+\.\d+).*$/.match(pkg.retrieve[pkg.property(:ensure)])[1] end end -- cgit v1.2.3