From ce6e8679b68f984415adc90d74083fd787234709 Mon Sep 17 00:00:00 2001 From: Adam S Date: Fri, 25 Sep 2015 17:55:21 -0700 Subject: Add package_provider fact This adds a package_provider fact for situations where we need to be able to know the client's package provider in a simple way. Situations such as: package { 'name': install_options => [] } As those tend to be package provider specific options. --- lib/facter/package_provider.rb | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 lib/facter/package_provider.rb (limited to 'lib/facter/package_provider.rb') diff --git a/lib/facter/package_provider.rb b/lib/facter/package_provider.rb new file mode 100644 index 0000000..9a4ec65 --- /dev/null +++ b/lib/facter/package_provider.rb @@ -0,0 +1,17 @@ +# Fact: package_provider +# +# Purpose: Returns the default provider Puppet will choose to manage packages +# on this system +# +# Resolution: Instantiates a dummy package resource and return the provider +# +# Caveats: +# +require 'puppet/type' +require 'puppet/type/package' + +Facter.add(:package_provider) do + setcode do + Puppet::Type.type(:package).newpackage(:name => 'dummy')[:provider].to_s + end +end -- cgit v1.2.3 From d73fd3c5efcdf9a60178ddf96914ab75c9214260 Mon Sep 17 00:00:00 2001 From: Martin Pfeifer Date: Tue, 13 Oct 2015 10:08:01 +0200 Subject: prevent deprecation warning about the allow_virtual parameter --- lib/facter/package_provider.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'lib/facter/package_provider.rb') diff --git a/lib/facter/package_provider.rb b/lib/facter/package_provider.rb index 9a4ec65..65a2da0 100644 --- a/lib/facter/package_provider.rb +++ b/lib/facter/package_provider.rb @@ -12,6 +12,10 @@ require 'puppet/type/package' Facter.add(:package_provider) do setcode do - Puppet::Type.type(:package).newpackage(:name => 'dummy')[:provider].to_s + if Gem::Version.new(Facter.value(:puppetversion)) >= Gem::Version.new('3.6') + Puppet::Type.type(:package).newpackage(:name => 'dummy', :allow_virtual => 'true')[:provider].to_s + else + Puppet::Type.type(:package).newpackage(:name => 'dummy')[:provider].to_s + end end end -- cgit v1.2.3 From 35b5d6bcc1c0d306eab50280b115e1e3a11671e0 Mon Sep 17 00:00:00 2001 From: David Schmitt Date: Fri, 18 Dec 2015 17:38:04 +0000 Subject: Allow package_provider fact to resolve on PE 3.x PE 3.x emits a puppetversion fact in the format "3.x.x (Puppet Enterprise 3.x.x)". This fact causes an error when invoked on PE 3.x: Could not retrieve fact='package_provider', resolution='': Malformed version number string 3.8.1 (Puppet Enterprise 3.8.1 This fix has been tested on PE 3.8.2 and should work for PE 3.3, 3.7, and 3.8. Original-fix-by: Alex Harden --- lib/facter/package_provider.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/facter/package_provider.rb') diff --git a/lib/facter/package_provider.rb b/lib/facter/package_provider.rb index 65a2da0..1a0bac9 100644 --- a/lib/facter/package_provider.rb +++ b/lib/facter/package_provider.rb @@ -12,7 +12,7 @@ require 'puppet/type/package' Facter.add(:package_provider) do setcode do - if Gem::Version.new(Facter.value(:puppetversion)) >= Gem::Version.new('3.6') + if Gem::Version.new(Facter.value(:puppetversion).split(' ')[0]) >= Gem::Version.new('3.6') Puppet::Type.type(:package).newpackage(:name => 'dummy', :allow_virtual => 'true')[:provider].to_s else Puppet::Type.type(:package).newpackage(:name => 'dummy')[:provider].to_s -- cgit v1.2.3 From be6d4d2ffb461a131cdeba6014ca9ac02bddc9d5 Mon Sep 17 00:00:00 2001 From: Sledge Sulaweyo Date: Thu, 17 Mar 2016 07:36:44 +0100 Subject: Add check if Gem is defined On e.g. Ubuntu 12.04 LTS Gem is not there by default so i added a check to not fail in that fact if this is the case. --- lib/facter/package_provider.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/facter/package_provider.rb') diff --git a/lib/facter/package_provider.rb b/lib/facter/package_provider.rb index 1a0bac9..3a9117f 100644 --- a/lib/facter/package_provider.rb +++ b/lib/facter/package_provider.rb @@ -12,7 +12,7 @@ require 'puppet/type/package' Facter.add(:package_provider) do setcode do - if Gem::Version.new(Facter.value(:puppetversion).split(' ')[0]) >= Gem::Version.new('3.6') + if defined? Gem and Gem::Version.new(Facter.value(:puppetversion).split(' ')[0]) >= Gem::Version.new('3.6') Puppet::Type.type(:package).newpackage(:name => 'dummy', :allow_virtual => 'true')[:provider].to_s else Puppet::Type.type(:package).newpackage(:name => 'dummy')[:provider].to_s -- cgit v1.2.3