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:
parent
d6d23b495c
commit
9693c04c9d
3 changed files with 135 additions and 0 deletions
53
lib/facter/pe_version.rb
Normal file
53
lib/facter/pe_version.rb
Normal 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
|
|
@ -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
|
||||
|
|
68
spec/unit/facter/pe_version_spec.rb
Normal file
68
spec/unit/facter/pe_version_spec.rb
Normal 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
|
Loading…
Reference in a new issue