diff options
author | Jeff McCune <jeff@puppetlabs.com> | 2012-10-25 12:01:01 -0700 |
---|---|---|
committer | Jeff McCune <jeff@puppetlabs.com> | 2012-10-25 12:01:01 -0700 |
commit | 4004a758b0c01ac17206a838f91f8cf5c57cc466 (patch) | |
tree | 4304339b93ca5a0ac044fc43add0b00f3378e0ec | |
parent | fb8993bf48ba6e6baeb1f2b1987262a287285965 (diff) | |
parent | 1d371ab8b67b85d52f8c4932f78660de8a236b93 (diff) |
Merge branch '3.1.x' into 3.x
* 3.1.x:
Update Modulefile, CHANGELOG for 3.1.0
Revert "Revert "Revert "Merge branch 'hkenney-ticket/master/2157_remove_facts_dot_d'"""
Update Modulefile, CHANGELOG for 2.5.0
Explicitly load functions used by ensure_resource
re-formatting
Add better docs about duplicate resource failures
Handle undef for parameter argument
Add function ensure_resource and defined_with_params
Revert "Revert "Merge branch 'haus-add_pe_facts_to_stdlib' into 2.4.x""
Revert "Revert "Merge branch 'haus-add_pe_facts_to_stdlib' into 2.4.x""
Revert "Merge branch 'haus-add_pe_facts_to_stdlib' into 2.4.x"
Prevent undefined method `split' for nil:NilClass with pe_foo_version facts
(maint) Clear all facts before each example
Add spec tests for pe_version facts
Add PE facts to stdlib
Fix some logical inconsistencies in README
(#14422) Update README to include the bug tracker URL.
Revert "Revert "Merge branch 'hkenney-ticket/master/2157_remove_facts_dot_d'""
-rw-r--r-- | CHANGELOG | 27 | ||||
-rw-r--r-- | Modulefile | 2 | ||||
-rw-r--r-- | README.markdown | 2 | ||||
-rw-r--r-- | lib/facter/pe_version.rb | 53 | ||||
-rw-r--r-- | spec/spec_helper.rb | 15 | ||||
-rw-r--r-- | spec/unit/facter/pe_version_spec.rb | 68 |
6 files changed, 165 insertions, 2 deletions
@@ -1,3 +1,6 @@ +2012-10-23 - Matthaus Owens <matthaus@puppetlabs.com> - 3.1.0 + * Add PE facts to stdlib (cdf3b05) + 2012-08-16 - Jeff McCune <jeff@puppetlabs.com> - 3.0.1 * Fix accidental removal of facts_dot_d.rb in 3.0.0 release @@ -14,6 +17,30 @@ 2012-04-10 - Chris Price <chris@puppetlabs.com> - 3.0.0 * (#13693) moving logic from local spec_helper to puppetlabs_spec_helper (85f96df) +2012-10-23 - Matthaus Owens <matthaus@puppetlabs.com> - 2.5.0 + * Add PE facts to stdlib (cdf3b05) + +2012-08-15 - Dan Bode <dan@puppetlabs.com> - 2.5.0 + * Explicitly load functions used by ensure_resource (9fc3063) + +2012-08-13 - Dan Bode <dan@puppetlabs.com> - 2.5.0 + * Add better docs about duplicate resource failures (97d327a) + +2012-08-13 - Dan Bode <dan@puppetlabs.com> - 2.5.0 + * Handle undef for parameter argument (4f8b133) + +2012-08-07 - Dan Bode <dan@puppetlabs.com> - 2.5.0 + * Add function ensure_resource and defined_with_params (a0cb8cd) + +2012-08-20 - Jeff McCune <jeff@puppetlabs.com> - 2.5.0 + * Disable tests that fail on 2.6.x due to #15912 (c81496e) + +2012-08-20 - Jeff McCune <jeff@puppetlabs.com> - 2.5.0 + * (Maint) Fix mis-use of rvalue functions as statements (4492913) + +2012-08-20 - Jeff McCune <jeff@puppetlabs.com> - 2.5.0 + * Add .rspec file to repo root (88789e8) + 2012-06-07 - Chris Price <chris@puppetlabs.com> - 2.4.0 * Add support for a 'match' parameter to file_line (a06c0d8) @@ -1,5 +1,5 @@ name 'puppetlabs-stdlib' -version '3.0.1' +version '3.1.0' source 'git://github.com/puppetlabs/puppetlabs-stdlib' author 'puppetlabs' license 'Apache 2.0' diff --git a/README.markdown b/README.markdown index 203bbb6..130753d 100644 --- a/README.markdown +++ b/README.markdown @@ -700,7 +700,7 @@ Converts a string or an array of strings to uppercase. Will return: - ASDF + ABCD - *Type*: rvalue diff --git a/lib/facter/pe_version.rb b/lib/facter/pe_version.rb new file mode 100644 index 0000000..0cc0f64 --- /dev/null +++ b/lib/facter/pe_version.rb @@ -0,0 +1,53 @@ +# Fact: is_pe, pe_version, pe_major_version, pe_minor_version, pe_patch_version +# +# Purpose: Return various facts about the PE state of the system +# +# Resolution: Uses a regex match against puppetversion to determine whether the +# machine has Puppet Enterprise installed, and what version (overall, major, +# minor, patch) is installed. +# +# Caveats: +# +Facter.add("pe_version") do + setcode do + pe_ver = Facter.value("puppetversion").match(/Puppet Enterprise (\d+\.\d+\.\d+)/) + pe_ver[1] if pe_ver + end +end + +Facter.add("is_pe") do + setcode do + if Facter.value(:pe_version).to_s.empty? then + false + else + true + end + end +end + +Facter.add("pe_major_version") do + confine :is_pe => true + setcode do + if pe_version = Facter.value(:pe_version) + pe_version.to_s.split('.')[0] + end + end +end + +Facter.add("pe_minor_version") do + confine :is_pe => true + setcode do + if pe_version = Facter.value(:pe_version) + pe_version.to_s.split('.')[1] + end + end +end + +Facter.add("pe_patch_version") do + confine :is_pe => true + setcode do + if pe_version = Facter.value(:pe_version) + pe_version.to_s.split('.')[2] + end + end +end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index e269b90..931d35c 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -11,3 +11,18 @@ gem 'rspec', '>=2.0.0' require 'rspec/expectations' require 'puppetlabs_spec_helper/module_spec_helper' + +RSpec.configure do |config| + # FIXME REVISIT - We may want to delegate to Facter like we do in + # Puppet::PuppetSpecInitializer.initialize_via_testhelper(config) because + # this behavior is a duplication of the spec_helper in Facter. + config.before :each do + # Ensure that we don't accidentally cache facts and environment between + # test cases. This requires each example group to explicitly load the + # facts being exercised with something like + # Facter.collection.loader.load(:ipaddress) + Facter::Util::Loader.any_instance.stubs(:load_all) + Facter.clear + Facter.clear_messages + end +end diff --git a/spec/unit/facter/pe_version_spec.rb b/spec/unit/facter/pe_version_spec.rb new file mode 100644 index 0000000..202a0e5 --- /dev/null +++ b/spec/unit/facter/pe_version_spec.rb @@ -0,0 +1,68 @@ +#!/usr/bin/env rspec + +require 'spec_helper' + +describe "PE Version specs" do + before :each do + Facter.collection.loader.load(:pe_version) + end + + context "If PE is installed" do + %w{ 2.6.1 2.10.300 }.each do |version| + puppetversion = "2.7.19 (Puppet Enterprise #{version})" + context "puppetversion => #{puppetversion}" do + before :each do + Facter.fact(:puppetversion).stubs(:value).returns(puppetversion) + end + + (major,minor,patch) = version.split(".") + + it "Should return true" do + Facter.fact(:is_pe).value.should == true + end + + it "Should have a version of #{version}" do + Facter.fact(:pe_version).value.should == version + end + + it "Should have a major version of #{major}" do + Facter.fact(:pe_major_version).value.should == major + end + + it "Should have a minor version of #{minor}" do + Facter.fact(:pe_minor_version).value.should == minor + end + + it "Should have a patch version of #{patch}" do + Facter.fact(:pe_patch_version).value.should == patch + end + end + end + end + + context "When PE is not installed" do + before :each do + Facter.fact(:puppetversion).stubs(:value).returns("2.7.19") + end + + it "is_pe is false" do + Facter.fact(:is_pe).value.should == false + end + + it "pe_version is nil" do + Facter.fact(:pe_version).value.should be_nil + end + + it "pe_major_version is nil" do + Facter.fact(:pe_major_version).value.should be_nil + end + + it "pe_minor_version is nil" do + Facter.fact(:pe_minor_version).value.should be_nil + end + + it "Should have a patch version" do + Facter.fact(:pe_patch_version).value.should be_nil + end + end +end |