Skip to content

Commit c1e0210

Browse files
committed
(MODULES-10670) Add alternate_pe_version parameter
This parameter will allow PE users to override the PE version detection used in the packages source to a different version than the running PE version. This could be used to hold back packages during a PE upgrade cycle until the user is ready to upgrade the agents.
1 parent 2920159 commit c1e0210

15 files changed

+205
-25
lines changed

manifests/init.pp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,12 @@
103103
# @param skip_if_unavailable
104104
# For yum-based repositories, set the skip_if_unavailable option of the `yumrepo` type.
105105
# @param disable_proxy
106+
# @param alternate_pe_version
107+
# When using a PE-based package source (e.g. "alternate_pe_source", "aix_source")
108+
# this setting allows you to override the PE version number used when constructing the
109+
# package source URL. Normally, this will be the running version of PE but this setting
110+
# can be used to "hold back" the agents during an upgrade of PE if there is a need
111+
# to upgrade the platform and agents on separate schedules.
106112
class puppet_agent (
107113
String $arch = $facts['os']['architecture'],
108114
String $collection = $puppet_agent::params::collection,
@@ -131,7 +137,8 @@
131137
Optional $wait_for_pxp_agent_exit = undef,
132138
Optional $wait_for_puppet_run = undef,
133139
Array[Puppet_agent::Config] $config = [],
134-
String $version_file_path = $facts['os']['family'] ? { 'windows' => "${facts['env_windows_installdir']}\\VERSION", default => '/opt/puppetlabs/puppet/VERSION' }
140+
String $version_file_path = $facts['os']['family'] ? { 'windows' => "${facts['env_windows_installdir']}\\VERSION", default => '/opt/puppetlabs/puppet/VERSION' },
141+
Optional[String[1]] $alternate_pe_version = undef,
135142
) inherits puppet_agent::params {
136143
# The configure class uses $puppet_agent::config to manage settings in
137144
# puppet.conf, and will always be present. It does not require management of

manifests/osfamily/aix.pp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
fail('AIX upgrades are only supported on Puppet Enterprise')
1111
}
1212

13-
$pe_server_version = pe_build_version()
13+
$pe_server_version = $puppet_agent::alternate_pe_version.lest || { pe_build_version() }
1414

1515
# in puppet versions later than 4 we began using single agent packages for
1616
# multiple version of AIX. The support sequence is as follows:

manifests/osfamily/darwin.pp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
if $puppet_agent::absolute_source {
1313
$source = $puppet_agent::absolute_source
1414
} elsif ($puppet_agent::is_pe and (!$puppet_agent::use_alternate_sources)) {
15-
$pe_server_version = pe_build_version()
15+
$pe_server_version = $puppet_agent::alternate_pe_version.lest || { pe_build_version() }
1616
if $puppet_agent::alternate_pe_source {
1717
$source = "${puppet_agent::alternate_pe_source}/packages/${pe_server_version}/${facts['platform_tag']}/${puppet_agent::package_name}-${puppet_agent::prepare::package_version}-1.osx${$productversion_major}.dmg"
1818
} elsif $puppet_agent::source {

manifests/osfamily/debian.pp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
if getvar('::puppet_agent::manage_repo') == true {
1616
include apt
1717
if ($puppet_agent::is_pe and (!$puppet_agent::use_alternate_sources)) {
18-
$pe_server_version = pe_build_version()
18+
$pe_server_version = $puppet_agent::alternate_pe_version.lest || { pe_build_version() }
1919
if $puppet_agent::source {
2020
$source = "${puppet_agent::source}/packages/${pe_server_version}/${facts['platform_tag']}"
2121
} elsif $puppet_agent::alternate_pe_source {

manifests/osfamily/redhat.pp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
}
3232
# lint:endignore
3333
if ($puppet_agent::is_pe and (!$puppet_agent::use_alternate_sources)) {
34-
$pe_server_version = pe_build_version()
34+
$pe_server_version = $puppet_agent::alternate_pe_version.lest || { pe_build_version() }
3535
# Treat Amazon Linux just like Enterprise Linux
3636
$pe_repo_dir = ($facts['os']['name'] == 'Amazon') ? {
3737
true => "el-${amz_el_version}-${facts['os']['architecture']}",

manifests/osfamily/solaris.pp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
fail('Solaris upgrades are only supported on Puppet Enterprise')
1111
}
1212

13-
$pe_server_version = pe_build_version()
13+
$pe_server_version = $puppet_agent::alternate_pe_version.lest || { pe_build_version() }
1414
if $puppet_agent::absolute_source {
1515
$source_dir = $puppet_agent::absolute_source
1616
} elsif $puppet_agent::alternate_pe_source {

manifests/osfamily/suse.pp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
contain puppet_agent::prepare::package
1818
} else {
1919
if ($puppet_agent::is_pe and (!$puppet_agent::use_alternate_sources)) {
20-
$pe_server_version = pe_build_version()
20+
$pe_server_version = $puppet_agent::alternate_pe_version.lest || { pe_build_version() }
2121

2222
# SLES 11 in PE can no longer install agents from pe_repo
2323
if $facts['os']['release']['major'] == '11' {

manifests/osfamily/windows.pp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
} elsif $puppet_agent::source {
88
$source = $puppet_agent::source
99
} elsif ($puppet_agent::is_pe and (!$puppet_agent::use_alternate_sources)) {
10-
$pe_server_version = pe_build_version()
10+
$pe_server_version = $puppet_agent::alternate_pe_version.lest || { pe_build_version() }
1111
$tag = $puppet_agent::arch ? {
1212
'x64' => $facts['fips_enabled'] ? {
1313
true => 'windowsfips-x86_64',

spec/classes/puppet_agent_osfamily_aix_spec.rb

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,32 @@
8080
}
8181
end
8282

83+
context 'with a user defined PE version' do
84+
let(:facts) do
85+
common_facts.merge(
86+
{
87+
architecture: 'PowerPC_POWER8',
88+
platform_tag: 'aix-7.1-power',
89+
}
90+
)
91+
end
92+
let(:params) do
93+
{
94+
package_version: '7.10.100.1',
95+
collection: 'puppet7',
96+
alternate_pe_version: '2222.2.2',
97+
}
98+
end
99+
100+
before(:each) do
101+
Puppet::Parser::Functions.newfunction(:pe_build_version, type: :rvalue) { |_args| '2000.0.0' }
102+
end
103+
104+
it {
105+
is_expected.to contain_file('/opt/puppetlabs/packages/puppet-agent-7.10.100.1-1.aix7.1.ppc.rpm').with_source('puppet:///pe_packages/2222.2.2/aix-7.1-power/puppet-agent-7.10.100.1-1.aix7.1.ppc.rpm')
106+
}
107+
end
108+
83109
context 'with a puppet6 collection' do
84110
context 'with versions up to 6.19.1' do
85111
let(:params) do

spec/classes/puppet_agent_osfamily_darwin_spec.rb

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,26 @@
8484
it { is_expected.to contain_file('/opt/puppetlabs/packages/puppet-agent-5.10.100.1-1.osx10.13.dmg').with_source('https://fake-pe-master.com/packages/2000.0.0/osx-10.13-x86_64/puppet-agent-5.10.100.1-1.osx10.13.dmg') }
8585
end
8686

87+
describe 'when using a user defined PE version' do
88+
let(:params) do
89+
{
90+
package_version: '5.10.100.1',
91+
collection: 'puppet5',
92+
alternate_pe_version: '2222.2.2',
93+
}
94+
end
95+
let(:facts) do
96+
facts.merge({
97+
is_pe: true,
98+
aio_agent_version: '1.10.99',
99+
platform_tag: 'osx-10.13-x86_64',
100+
macosx_productversion_major: '10.13'
101+
})
102+
end
103+
104+
it { is_expected.to contain_file('/opt/puppetlabs/packages/puppet-agent-5.10.100.1-1.osx10.13.dmg').with_source('puppet:///pe_packages/2222.2.2/osx-10.13-x86_64/puppet-agent-5.10.100.1-1.osx10.13.dmg') }
105+
end
106+
87107
describe 'when using package_version auto' do
88108
let(:params) do
89109
{

0 commit comments

Comments
 (0)