Revert "Revert "Merge branch 'haus-add_pe_facts_to_stdlib' into 2.4.x""

This reverts commit d6d23b495c.

This backwards-compatible additional functionality is targeted at the
next minor release.  There are already backwards-incompatible changes in
the master branch so we need to establish a new minor branch.
This commit is contained in:
Jeff McCune 2012-10-25 10:46:57 -07:00
parent d6d23b495c
commit 9693c04c9d
3 changed files with 135 additions and 0 deletions

53
lib/facter/pe_version.rb Normal file
View file

@ -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

View file

@ -12,3 +12,17 @@ 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

View file

@ -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