From 3b8ded184d6b6b5c2823018a231deee9dcd7df83 Mon Sep 17 00:00:00 2001 From: Eli Young Date: Mon, 11 May 2015 11:12:15 -0700 Subject: (FM-2130) Document new location of facts.d cache --- lib/facter/facter_dot_d.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/facter') diff --git a/lib/facter/facter_dot_d.rb b/lib/facter/facter_dot_d.rb index b058437..d85940d 100644 --- a/lib/facter/facter_dot_d.rb +++ b/lib/facter/facter_dot_d.rb @@ -8,7 +8,7 @@ # contains a cache TTL. For foo.sh store the ttl as just # a number in foo.sh.ttl # -# The cache is stored in /tmp/facts_cache.yaml as a mode +# The cache is stored in $libdir/facts_dot_d.cache as a mode # 600 file and will have the end result of not calling your # fact scripts more often than is needed -- cgit v1.2.3 From 66e118a92aa480739f62e4675ed80c79ef80619c Mon Sep 17 00:00:00 2001 From: Ben Ford Date: Wed, 19 Aug 2015 08:31:36 -0700 Subject: Add a service_provider fact This returns the default provider Puppet will choose to manage services on this system by instantiating a dummy service resource type and returning the provider chosen. Co-Authored-By: Simon Fraser University --- lib/facter/service_provider.rb | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 lib/facter/service_provider.rb (limited to 'lib/facter') diff --git a/lib/facter/service_provider.rb b/lib/facter/service_provider.rb new file mode 100644 index 0000000..54db937 --- /dev/null +++ b/lib/facter/service_provider.rb @@ -0,0 +1,14 @@ +# Fact: service_provider +# +# Purpose: Returns the default provider Puppet will choose to manage services +# on this system +# +# Resolution: Instantiates a dummy service resource and return the provider +# +# Caveats: +# +Facter.add(:service_provider) do + setcode do + Puppet::Type.type(:service).newservice(:name => 'dummy')[:provider].to_s + end +end -- cgit v1.2.3 From 6c2a003f2139a482f92f245ce1d49830be13c5f1 Mon Sep 17 00:00:00 2001 From: Jon Fautley Date: Thu, 27 Aug 2015 14:53:02 +0100 Subject: (MODULES-2478) Support root_home fact on AIX through "lsuser" command Squashed, and amended test for comment lines. --- lib/facter/root_home.rb | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'lib/facter') diff --git a/lib/facter/root_home.rb b/lib/facter/root_home.rb index b4f87ff..ee3ffa8 100644 --- a/lib/facter/root_home.rb +++ b/lib/facter/root_home.rb @@ -30,3 +30,16 @@ Facter.add(:root_home) do hash['dir'].strip end end + +Facter.add(:root_home) do + confine :kernel => :aix + root_home = nil + setcode do + str = Facter::Util::Resolution.exec("lsuser -C -a home root") + str && str.split("\n").each do |line| + next if line =~ /^#/ + root_home = line.split(/:/)[1] + end + root_home + end +end -- cgit v1.2.3 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') 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 440245d40d90f5f5cd9d7db0131371969216e55c Mon Sep 17 00:00:00 2001 From: Adam S Date: Fri, 25 Sep 2015 17:58:05 -0700 Subject: fixup-PR#506 Speed improvements in facter resolution This is to improve speed on Facter resolution of service_provider fact that was just introduced in PR# 506. The improvements go from 280ms resolution time approx. down to 2ms resolution time approx. by adding requires statements. --- lib/facter/service_provider.rb | 3 +++ 1 file changed, 3 insertions(+) (limited to 'lib/facter') diff --git a/lib/facter/service_provider.rb b/lib/facter/service_provider.rb index 54db937..a117921 100644 --- a/lib/facter/service_provider.rb +++ b/lib/facter/service_provider.rb @@ -7,6 +7,9 @@ # # Caveats: # +require 'puppet/type' +require 'puppet/type/service' + Facter.add(:service_provider) do setcode do Puppet::Type.type(:service).newservice(:name => 'dummy')[:provider].to_s -- 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') 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 6aa7f2db9953d81afb75a3591358ba9e0dbc6935 Mon Sep 17 00:00:00 2001 From: Jesse Lovelace Date: Thu, 15 Oct 2015 11:25:57 -0500 Subject: Add check to ensure regex does not throw for none type. Add a quick check to ensure puppetversion value is not nil and supporting test. --- lib/facter/pe_version.rb | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'lib/facter') diff --git a/lib/facter/pe_version.rb b/lib/facter/pe_version.rb index 0cc0f64..c9f2181 100644 --- a/lib/facter/pe_version.rb +++ b/lib/facter/pe_version.rb @@ -10,8 +10,13 @@ # Facter.add("pe_version") do setcode do - pe_ver = Facter.value("puppetversion").match(/Puppet Enterprise (\d+\.\d+\.\d+)/) - pe_ver[1] if pe_ver + puppet_ver = Facter.value("puppetversion") + if puppet_ver != nil + pe_ver = puppet_ver.match(/Puppet Enterprise (\d+\.\d+\.\d+)/) + pe_ver[1] if pe_ver + else + nil + end end end -- cgit v1.2.3 From 13e5d467c97deb530f99e4a82c73b1aff97c9787 Mon Sep 17 00:00:00 2001 From: Reid Vandewiele Date: Thu, 19 Nov 2015 15:29:06 -0800 Subject: (FM-3773) Fix root_home fact on AIX 5.x The -C (capital C) flag to lsuser is incorrect. It should be -c (lowercase). this commit updates the aix root_home fact to use `lsuser -c`, rather than `lsuser -C`. --- lib/facter/root_home.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/facter') diff --git a/lib/facter/root_home.rb b/lib/facter/root_home.rb index ee3ffa8..87c7657 100644 --- a/lib/facter/root_home.rb +++ b/lib/facter/root_home.rb @@ -35,7 +35,7 @@ Facter.add(:root_home) do confine :kernel => :aix root_home = nil setcode do - str = Facter::Util::Resolution.exec("lsuser -C -a home root") + str = Facter::Util::Resolution.exec("lsuser -c -a home root") str && str.split("\n").each do |line| next if line =~ /^#/ root_home = line.split(/:/)[1] -- 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') 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') 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 From 0cea94a82ef277092897a03446f6e6fccba90d53 Mon Sep 17 00:00:00 2001 From: Felix Frank Date: Tue, 29 Mar 2016 01:59:54 +0200 Subject: catch StandardError rather than the gratuitous Exception --- lib/facter/facter_dot_d.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'lib/facter') diff --git a/lib/facter/facter_dot_d.rb b/lib/facter/facter_dot_d.rb index d85940d..5c5fb1f 100644 --- a/lib/facter/facter_dot_d.rb +++ b/lib/facter/facter_dot_d.rb @@ -48,7 +48,7 @@ class Facter::Util::DotD end end end - rescue Exception => e + rescue StandardError => e Facter.warn("Failed to handle #{file} as text facts: #{e.class}: #{e}") end @@ -65,7 +65,7 @@ class Facter::Util::DotD setcode { v } end end - rescue Exception => e + rescue StandardError => e Facter.warn("Failed to handle #{file} as json facts: #{e.class}: #{e}") end @@ -77,7 +77,7 @@ class Facter::Util::DotD setcode { v } end end - rescue Exception => e + rescue StandardError => e Facter.warn("Failed to handle #{file} as yaml facts: #{e.class}: #{e}") end @@ -106,7 +106,7 @@ class Facter::Util::DotD end end end - rescue Exception => e + rescue StandardError => e Facter.warn("Failed to handle #{file} as script facts: #{e.class}: #{e}") Facter.debug(e.backtrace.join("\n\t")) end -- cgit v1.2.3 From 2beef9acb246257c4edfb364b4b2d6bd9c7437d3 Mon Sep 17 00:00:00 2001 From: Stephen Benjamin Date: Fri, 2 Sep 2016 09:31:02 -0400 Subject: Add facter fact for puppet_environmentpath --- lib/facter/puppet_settings.rb | 35 +++++++++++++++++++++++++++++++++++ lib/facter/puppet_vardir.rb | 26 -------------------------- 2 files changed, 35 insertions(+), 26 deletions(-) create mode 100644 lib/facter/puppet_settings.rb delete mode 100644 lib/facter/puppet_vardir.rb (limited to 'lib/facter') diff --git a/lib/facter/puppet_settings.rb b/lib/facter/puppet_settings.rb new file mode 100644 index 0000000..e6a066a --- /dev/null +++ b/lib/facter/puppet_settings.rb @@ -0,0 +1,35 @@ +# These facter facts return the value of the Puppet vardir and environment path +# settings for the node running puppet or puppet agent. The intent is to +# enable Puppet modules to automatically have insight into a place where they +# can place variable data, or for modules running on the puppet master to know +# where environments are stored. +# +# The values should be directly usable in a File resource path attribute. +# +begin + require 'facter/util/puppet_settings' +rescue LoadError => e + # puppet apply does not add module lib directories to the $LOAD_PATH (See + # #4248). It should (in the future) but for the time being we need to be + # defensive which is what this rescue block is doing. + rb_file = File.join(File.dirname(__FILE__), 'util', 'puppet_settings.rb') + load rb_file if File.exists?(rb_file) or raise e +end + + +# These will be nil if Puppet is not available. +Facter.add(:puppet_vardir) do + setcode do + Facter::Util::PuppetSettings.with_puppet do + Puppet[:vardir] + end + end +end + +Facter.add(:puppet_environmentpath) do + setcode do + Facter::Util::PuppetSettings.with_puppet do + Puppet[:environmentpath] + end + end +end diff --git a/lib/facter/puppet_vardir.rb b/lib/facter/puppet_vardir.rb deleted file mode 100644 index 0e6af40..0000000 --- a/lib/facter/puppet_vardir.rb +++ /dev/null @@ -1,26 +0,0 @@ -# This facter fact returns the value of the Puppet vardir setting for the node -# running puppet or puppet agent. The intent is to enable Puppet modules to -# automatically have insight into a place where they can place variable data, -# regardless of the node's platform. -# -# The value should be directly usable in a File resource path attribute. - - -begin - require 'facter/util/puppet_settings' -rescue LoadError => e - # puppet apply does not add module lib directories to the $LOAD_PATH (See - # #4248). It should (in the future) but for the time being we need to be - # defensive which is what this rescue block is doing. - rb_file = File.join(File.dirname(__FILE__), 'util', 'puppet_settings.rb') - load rb_file if File.exists?(rb_file) or raise e -end - -Facter.add(:puppet_vardir) do - setcode do - # This will be nil if Puppet is not available. - Facter::Util::PuppetSettings.with_puppet do - Puppet[:vardir] - end - end -end -- cgit v1.2.3 From f81ba549b73f0d752be1b4185c73818f791ab2f6 Mon Sep 17 00:00:00 2001 From: Reid Vandewiele Date: Wed, 29 Jun 2016 15:54:20 +0100 Subject: Add puppet_server fact to return agent's server It is frequently useful to configure an agent to retrieve a resource from it's configured master, or make further configuration adjustments to itself based on what server it's using. Similar to the rationale for stdlib providing a puppet_vardir fact, this commit adds a puppet_server fact. Note that the closest equivalent available today is $settings::server, which returns only the MASTER's configured server, not the AGENT's. This makes $settings::server unreliable, and not useful in a multi-master deployment or a deployment involving a load balancer. --- lib/facter/puppet_settings.rb | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'lib/facter') diff --git a/lib/facter/puppet_settings.rb b/lib/facter/puppet_settings.rb index e6a066a..eac9e97 100644 --- a/lib/facter/puppet_settings.rb +++ b/lib/facter/puppet_settings.rb @@ -33,3 +33,11 @@ Facter.add(:puppet_environmentpath) do end end end + +Facter.add(:puppet_server) do + setcode do + Facter::Util::PuppetSettings.with_puppet do + Puppet[:server] + end + end +end -- cgit v1.2.3