Skip to content

Commit

Permalink
Add custom fact test for puppet_role
Browse files Browse the repository at this point in the history
  • Loading branch information
rnelson0 committed Aug 24, 2017
1 parent b3e8565 commit 0f41e65
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 19 deletions.
36 changes: 17 additions & 19 deletions dist/profile/lib/facter/puppet_role.rb
Original file line number Diff line number Diff line change
@@ -1,24 +1,22 @@
# ([a-z]+)[0-9]+, i.e. www01 or logger22 have a puppet_role of www or logger
if Facter.value(:hostname) =~ /^([a-z]+)[0-9]+$/
Facter.add('puppet_role') do
setcode do
$1
end
# ((a-z]+)-([a-z]+)[0-9]*, i.e. dur-www01 or chi-logger have a puppet_role of www or logger
Facter.add(:puppet_role) do
confine :hostname do |value|
value =~ /^([a-z]+)-([a-z]+)[0-9]*$/
end

# ([a-z]+), i.e. www or logger have a puppet_role of www or logger
elsif Facter.value(:hostname) =~ /^([a-z]+)$/
Facter.add('puppet_role') do
setcode do
$1
end
end
setcode { Facter.value(:hostname)[/^([a-z]+)-([a-z]+)[0-9]*$/, 2] }
end

# Set to hostname if no patterns match
else
Facter.add('puppet_role') do
setcode do
'default'
end
# ([a-z]+)[0-9]*, i.e. www01 or logger have a puppet_role of www or logger
Facter.add(:puppet_role) do
confine :hostname do |value|
value =~ /^([a-z]+)[0-9]*$/
end

setcode { Facter.value(:hostname)[/^([a-z]+)[0-9]*$/, 1] }
end

# Set to 'default' if no patterns match
Facter.add(:puppet_role) do
setcode { 'default'}
end
53 changes: 53 additions & 0 deletions dist/profile/spec/unit/facter/puppet_role_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
require 'spec_helper'
require 'facter/puppet_role'

describe 'custom fact puppet_role', :type => :fact do
let (:hostname_fact) {
self.class.description
}
before (:each) do
Facter.fact(:hostname).stubs(:value).returns(hostname_fact)
Facter.flush
end
subject { Facter.fact(:puppet_role).value }

context "hostname 'loc-test72'" do
before do
Facter.fact(:hostname).stubs(:value).returns('loc-test72')
end

it "should return test" do
expect(Facter.fact(:puppet_role).value).to eq('test')
end
end

context "hostname 'test72'" do
before do
Facter.fact(:hostname).stubs(:value).returns('test72')
end

it "should return test" do
expect(Facter.fact(:puppet_role).value).to eq('test')
end
end

context "hostname 'role'" do
before do
Facter.fact(:hostname).stubs(:value).returns('role')
end

it "should return role" do
expect(Facter.fact(:puppet_role).value).to eq('role')
end
end

context "hostname '99luftballons'" do
before do
Facter.fact(:hostname).stubs(:value).returns('99luftballoons')
end

it "should return default" do
expect(Facter.fact(:puppet_role).value).to eq('default')
end
end
end

0 comments on commit 0f41e65

Please sign in to comment.