Skip to content

Commit 7a45f3a

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 b01b3df commit 7a45f3a

15 files changed

+211
-24
lines changed

manifests/init.pp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,12 @@
9898
# Puppet_agent::Config hash, which has keys for puppet.conf section, setting, and value.
9999
# This parameter is constrained to managing only a predetermined set of configuration
100100
# settings, e.g. runinterval.
101+
# [alternate_pe_version]
102+
# When using a PE-based package source (e.g. "alternate_pe_source", "aix_source")
103+
# this setting allows you to override the PE version number used when constructing the
104+
# package source URL. Normally, this will be the running version of PE but this setting
105+
# can be used to "hold back" the agents during an upgrade of PE if there is a need
106+
# to upgrade the platform and agents on separate schedules.
101107
class puppet_agent (
102108
$arch = $::architecture,
103109
$collection = $::puppet_agent::params::collection,
@@ -126,6 +132,7 @@
126132
$wait_for_pxp_agent_exit = undef,
127133
$wait_for_puppet_run = undef,
128134
Array[Puppet_agent::Config] $config = [],
135+
Optional[String[1]] $alternate_pe_version = undef,
129136
) inherits ::puppet_agent::params {
130137

131138
# The configure class uses $puppet_agent::config to manage settings in

manifests/osfamily/aix.pp

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

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

1414
# in puppet versions later than 4 we began using single agent packages for
1515
# 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
@@ -11,7 +11,7 @@
1111
if $::puppet_agent::absolute_source {
1212
$source = $::puppet_agent::absolute_source
1313
} elsif ($::puppet_agent::is_pe and (!$::puppet_agent::use_alternate_sources)) {
14-
$pe_server_version = pe_build_version()
14+
$pe_server_version = $::puppet_agent::alternate_pe_version.lest || { pe_build_version() }
1515
if $::puppet_agent::alternate_pe_source {
1616
$source = "${::puppet_agent::alternate_pe_source}/packages/${pe_server_version}/${::platform_tag}/${puppet_agent::package_name}-${::puppet_agent::prepare::package_version}-1.osx${$productversion_major}.dmg"
1717
} 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}/${::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
@@ -28,7 +28,7 @@
2828
}
2929
}
3030
if ($::puppet_agent::is_pe and (!$::puppet_agent::use_alternate_sources)) {
31-
$pe_server_version = pe_build_version()
31+
$pe_server_version = $::puppet_agent::alternate_pe_version.lest || { pe_build_version() }
3232
# Treat Amazon Linux just like Enterprise Linux
3333
$pe_repo_dir = ($::operatingsystem == 'Amazon') ? {
3434
true => "el-${amz_el_version}-${::architecture}",

manifests/osfamily/solaris.pp

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

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

manifests/osfamily/suse.pp

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

2121
# SLES 11 in PE can no longer install agents from pe_repo
2222
if $::operatingsystemmajrelease == '11' {

manifests/osfamily/windows.pp

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

spec/classes/puppet_agent_osfamily_aix_spec.rb

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,31 @@
8181
}
8282
end
8383

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

spec/classes/puppet_agent_osfamily_darwin_spec.rb

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,26 @@
9393
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') }
9494
end
9595

96+
describe 'when using a user defined PE version' do
97+
let(:params) do
98+
{
99+
package_version: '5.10.100.1',
100+
collection: 'puppet5',
101+
alternate_pe_version: '2222.2.2',
102+
}
103+
end
104+
let(:facts) do
105+
facts.merge({
106+
is_pe: true,
107+
aio_agent_version: '1.10.99',
108+
platform_tag: 'osx-10.13-x86_64',
109+
macosx_productversion_major: '10.13'
110+
})
111+
end
112+
113+
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') }
114+
end
115+
96116
describe 'when using package_version auto' do
97117
let(:params) do
98118
{

0 commit comments

Comments
 (0)