beaker-puppet 1.26.1 → 1.27.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +32 -0
- data/lib/beaker-puppet/install_utils/foss_utils.rb +12 -6
- data/lib/beaker-puppet/install_utils/windows_utils.rb +6 -4
- data/lib/beaker-puppet/version.rb +1 -1
- data/setup/common/005_redhat_subscription_fix.rb +10 -0
- data/spec/beaker-puppet/install_utils/puppet_utils_spec.rb +3 -1
- data/spec/beaker-puppet/install_utils/windows_utils_spec.rb +86 -46
- data/tasks/ci.rake +15 -9
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 68502ef5f5e7277b97ce2192ef1d51f571d084e705e98d69f1f4a53e303fcac0
|
4
|
+
data.tar.gz: 3c3c471c33bf0481e6a3d8e44fdaabae4f5efec04377f56a66135d905995c043
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 036c6489dd3157d13fb07123dfc27dba5bf7ef1e6ac488f8230942072057a01fd9f32a36922747fc8e656562ffc88f967e0c54f7b4ca15dab9ba4ae6c2ce88dc
|
7
|
+
data.tar.gz: bca6b6878ed42eb9126af029381df3144c5c7e540ffafc07031c14d478e34212256ccf56dd4b9972852ef0f894616b7c1ed95e8b2c7a3f31587a223abbad03e5
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,38 @@
|
|
2
2
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
4
4
|
|
5
|
+
## [1.27.0](https://github.com/voxpupuli/beaker-puppet/tree/1.27.0) (2022-08-31)
|
6
|
+
|
7
|
+
[Full Changelog](https://github.com/voxpupuli/beaker-puppet/compare/1.26.3...1.27.0)
|
8
|
+
|
9
|
+
**Implemented enhancements:**
|
10
|
+
|
11
|
+
- \(ITSYS-2543\) Adds workaround for EL8 PPCLE [\#198](https://github.com/voxpupuli/beaker-puppet/pull/198) ([mhashizume](https://github.com/mhashizume))
|
12
|
+
|
13
|
+
**Fixed bugs:**
|
14
|
+
|
15
|
+
- \(PA-4566\) Retry beaker exec if presuite completes [\#195](https://github.com/voxpupuli/beaker-puppet/pull/195) ([joshcooper](https://github.com/joshcooper))
|
16
|
+
|
17
|
+
## [1.26.3](https://github.com/voxpupuli/beaker-puppet/tree/1.26.3) (2022-08-09)
|
18
|
+
|
19
|
+
[Full Changelog](https://github.com/voxpupuli/beaker-puppet/compare/1.26.2...1.26.3)
|
20
|
+
|
21
|
+
**Fixed bugs:**
|
22
|
+
|
23
|
+
- Actually print the versions.txt file [\#193](https://github.com/voxpupuli/beaker-puppet/pull/193) ([joshcooper](https://github.com/joshcooper))
|
24
|
+
|
25
|
+
**Merged pull requests:**
|
26
|
+
|
27
|
+
- Release 1.26.3 [\#196](https://github.com/voxpupuli/beaker-puppet/pull/196) ([joshcooper](https://github.com/joshcooper))
|
28
|
+
|
29
|
+
## [1.26.2](https://github.com/voxpupuli/beaker-puppet/tree/1.26.2) (2022-05-31)
|
30
|
+
|
31
|
+
[Full Changelog](https://github.com/voxpupuli/beaker-puppet/compare/1.26.1...1.26.2)
|
32
|
+
|
33
|
+
**Merged pull requests:**
|
34
|
+
|
35
|
+
- \(PA-4178\) Only clear and add non-default gem sources [\#190](https://github.com/voxpupuli/beaker-puppet/pull/190) ([joshcooper](https://github.com/joshcooper))
|
36
|
+
|
5
37
|
## [1.26.1](https://github.com/voxpupuli/beaker-puppet/tree/1.26.1) (2022-03-24)
|
6
38
|
|
7
39
|
[Full Changelog](https://github.com/voxpupuli/beaker-puppet/compare/1.26.0...1.26.1)
|
@@ -1625,12 +1625,18 @@ module Beaker
|
|
1625
1625
|
# Configures gem sources on hosts to use a mirror, if specified
|
1626
1626
|
# This is a duplicate of the Gemfile logic.
|
1627
1627
|
def configure_gem_mirror(hosts)
|
1628
|
-
gem_source = ENV['GEM_SOURCE']
|
1629
|
-
|
1630
|
-
|
1631
|
-
|
1632
|
-
|
1633
|
-
|
1628
|
+
gem_source = ENV['GEM_SOURCE']
|
1629
|
+
|
1630
|
+
# Newer versions of rubygems always default the source to https://rubygems.org
|
1631
|
+
# and versions >= 3.1 will try to prompt (and fail) if you add a source that is
|
1632
|
+
# too similar to rubygems.org to prevent typo squatting:
|
1633
|
+
# https://github.com/rubygems/rubygems/commit/aa967b85dd96bbfb350f104125f23d617e82a00a
|
1634
|
+
if gem_source && gem_source !~ /rubygems\.org/
|
1635
|
+
Array(hosts).each do |host|
|
1636
|
+
gem = gem_command(host)
|
1637
|
+
on host, "#{gem} source --clear-all"
|
1638
|
+
on(host, "#{gem} source --add #{gem_source}")
|
1639
|
+
end
|
1634
1640
|
end
|
1635
1641
|
end
|
1636
1642
|
end
|
@@ -177,11 +177,13 @@ module Beaker
|
|
177
177
|
# emit the misc/versions.txt file which contains component versions for
|
178
178
|
# puppet, facter, hiera, pxp-agent, packaging and vendored Ruby
|
179
179
|
[
|
180
|
-
'
|
181
|
-
'
|
180
|
+
"'%PROGRAMFILES%\\Puppet Labs\\puppet\\misc\\versions.txt'",
|
181
|
+
"'%PROGRAMFILES(X86)%\\Puppet Labs\\puppet\\misc\\versions.txt'",
|
182
182
|
].each do |path|
|
183
|
-
|
184
|
-
|
183
|
+
result = on(host, "cmd /c type #{path}", :accept_all_exit_codes => true)
|
184
|
+
if result.exit_code == 0
|
185
|
+
logger.info(result.stdout)
|
186
|
+
break
|
185
187
|
end
|
186
188
|
end
|
187
189
|
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
test_name 'Refresh Red Hat 8 subscription repository'
|
2
|
+
|
3
|
+
# Only need to run this on Red Hat Enterprise Linux 8 on little-endian PowerPC
|
4
|
+
skip_test 'Not Red Hat 8 PPCle' if ! hosts.any? { |host| host.platform == 'el-8-ppc64le' }
|
5
|
+
|
6
|
+
hosts.each do |host|
|
7
|
+
next unless host.platform == 'el-8-ppc64le'
|
8
|
+
|
9
|
+
on(host, '/usr/sbin/subscription-manager repos --disable rhel-8-for-ppc64le-baseos-rpms && /usr/sbin/subscription-manager repos --enable rhel-8-for-ppc64le-baseos-rpms')
|
10
|
+
end
|
@@ -153,7 +153,9 @@ describe ClassMixedWithDSLInstallUtils do
|
|
153
153
|
|
154
154
|
describe '#puppet_collection_for' do
|
155
155
|
it 'raises an error when given an invalid package' do
|
156
|
-
expect {
|
156
|
+
expect {
|
157
|
+
subject.puppet_collection_for(:foo, '5.5.4')
|
158
|
+
}.to raise_error(RuntimeError, /package must be one of puppet_agent, puppet, puppetserver/)
|
157
159
|
end
|
158
160
|
|
159
161
|
context 'when the :puppet_agent package is passed in' do
|
@@ -26,31 +26,45 @@ describe ClassMixedWithDSLInstallUtils do
|
|
26
26
|
:is_cygwin => 'false' } ) }
|
27
27
|
let(:hosts) { [ winhost, winhost_non_cygwin ] }
|
28
28
|
|
29
|
-
def expect_install_called
|
30
|
-
result =
|
31
|
-
|
32
|
-
.exactly( times ).times
|
29
|
+
def expect_install_called
|
30
|
+
result = Beaker::Result.new(nil, 'temp')
|
31
|
+
result.exit_code = 0
|
33
32
|
|
34
|
-
|
33
|
+
hosts.each do |host|
|
34
|
+
expectation = expect(subject).to receive(:on).with(host, having_attributes(command: "\"#{batch_path}\""), anything).and_return(result)
|
35
|
+
if block_given?
|
36
|
+
should_break = yield expectation
|
37
|
+
break if should_break
|
38
|
+
end
|
39
|
+
end
|
35
40
|
end
|
36
41
|
|
37
|
-
def expect_status_called(
|
38
|
-
|
39
|
-
|
40
|
-
|
42
|
+
def expect_status_called(start_type = 'DEMAND_START')
|
43
|
+
result = Beaker::Result.new(nil, 'temp')
|
44
|
+
result.exit_code = 0
|
45
|
+
result.stdout = case start_type
|
46
|
+
when 'DISABLED'
|
47
|
+
" START_TYPE : 4 DISABLED"
|
48
|
+
when 'AUTOMATIC'
|
49
|
+
" START_TYPE : 2 AUTO_START"
|
50
|
+
else # 'DEMAND_START'
|
51
|
+
" START_TYPE : 3 DEMAND_START"
|
52
|
+
end
|
53
|
+
|
54
|
+
hosts.each do |host|
|
55
|
+
expect(subject).to receive(:on).with(host, having_attributes(command: "sc qc puppet || sc qc pe-puppet")).and_yield(result)
|
56
|
+
end
|
41
57
|
end
|
42
58
|
|
43
59
|
def expect_version_log_called(times = hosts.length)
|
44
|
-
path = %
|
60
|
+
path = "'%PROGRAMFILES%\\Puppet Labs\\puppet\\misc\\versions.txt'"
|
45
61
|
|
46
|
-
|
47
|
-
|
48
|
-
.exactly( times ).times
|
49
|
-
.and_return(true)
|
62
|
+
result = Beaker::Result.new(nil, 'temp')
|
63
|
+
result.exit_code = 0
|
50
64
|
|
51
|
-
|
52
|
-
.with(
|
53
|
-
|
65
|
+
hosts.each do |host|
|
66
|
+
expect(subject).to receive(:on).with(host, "cmd /c type #{path}", anything).and_return(result)
|
67
|
+
end
|
54
68
|
end
|
55
69
|
|
56
70
|
def expect_script_matches(hosts, contents)
|
@@ -68,30 +82,43 @@ describe ClassMixedWithDSLInstallUtils do
|
|
68
82
|
expect(host).to receive(:is_x86_64?).and_return(:true)
|
69
83
|
end
|
70
84
|
|
71
|
-
|
72
|
-
.
|
73
|
-
|
85
|
+
hosts.each do |host|
|
86
|
+
expect(subject).to receive(:on)
|
87
|
+
.with(host, having_attributes(command: %r{reg query "HKLM\\SOFTWARE\\Wow6432Node\\Puppet Labs\\PuppetInstaller}))
|
88
|
+
end
|
74
89
|
end
|
75
90
|
|
76
|
-
def expect_puppet_path_called
|
77
|
-
|
78
|
-
|
79
|
-
|
91
|
+
def expect_puppet_path_called
|
92
|
+
hosts.each do |host|
|
93
|
+
next if host.is_cygwin?
|
94
|
+
|
95
|
+
result = Beaker::Result.new(nil, 'temp')
|
96
|
+
result.exit_code = 0
|
97
|
+
|
98
|
+
expect(subject).to receive(:on)
|
99
|
+
.with(host, having_attributes(command: 'puppet -h'), anything)
|
100
|
+
.and_return(result)
|
101
|
+
end
|
80
102
|
end
|
81
103
|
|
82
104
|
describe "#install_msi_on" do
|
83
105
|
let( :log_file ) { '/fake/log/file.log' }
|
84
106
|
|
85
107
|
before :each do
|
86
|
-
|
87
|
-
|
108
|
+
result = Beaker::Result.new(nil, 'temp')
|
109
|
+
result.exit_code = 0
|
110
|
+
|
111
|
+
hosts.each do |host|
|
112
|
+
allow(subject).to receive(:on)
|
113
|
+
.with(host, having_attributes(command: "\"#{batch_path}\""))
|
114
|
+
.and_return(result)
|
115
|
+
end
|
88
116
|
|
89
|
-
allow( subject ).to receive( :on ).and_return( exit_code_result )
|
90
117
|
allow( subject ).to receive( :file_exists_on ).and_return(true)
|
91
118
|
allow( subject ).to receive( :create_install_msi_batch_on ).and_return( [batch_path, log_file] )
|
92
119
|
end
|
93
120
|
|
94
|
-
it "will specify a PUPPET_AGENT_STARTUP_MODE of Manual
|
121
|
+
it "will specify a PUPPET_AGENT_STARTUP_MODE of Manual by default" do
|
95
122
|
expect_install_called
|
96
123
|
expect_puppet_path_called
|
97
124
|
expect_status_called
|
@@ -103,10 +130,10 @@ describe ClassMixedWithDSLInstallUtils do
|
|
103
130
|
subject.install_msi_on(hosts, msi_path, {})
|
104
131
|
end
|
105
132
|
|
106
|
-
it "allows configuration of PUPPET_AGENT_STARTUP_MODE" do
|
133
|
+
it "allows configuration of PUPPET_AGENT_STARTUP_MODE to Automatic" do
|
107
134
|
expect_install_called
|
108
135
|
expect_puppet_path_called
|
109
|
-
expect_status_called
|
136
|
+
expect_status_called('AUTOMATIC')
|
110
137
|
expect_reg_query_called
|
111
138
|
expect_version_log_called
|
112
139
|
value = 'Automatic'
|
@@ -116,6 +143,19 @@ describe ClassMixedWithDSLInstallUtils do
|
|
116
143
|
subject.install_msi_on(hosts, msi_path, {'PUPPET_AGENT_STARTUP_MODE' => value})
|
117
144
|
end
|
118
145
|
|
146
|
+
it "allows configuration of PUPPET_AGENT_STARTUP_MODE to Disabled" do
|
147
|
+
expect_install_called
|
148
|
+
expect_puppet_path_called
|
149
|
+
expect_status_called('DISABLED')
|
150
|
+
expect_reg_query_called
|
151
|
+
expect_version_log_called
|
152
|
+
value = 'Disabled'
|
153
|
+
expect( subject ).to receive( :create_install_msi_batch_on ).with(
|
154
|
+
anything, anything,
|
155
|
+
{'PUPPET_AGENT_STARTUP_MODE' => value})
|
156
|
+
subject.install_msi_on(hosts, msi_path, {'PUPPET_AGENT_STARTUP_MODE' => value})
|
157
|
+
end
|
158
|
+
|
119
159
|
it "will not generate a command to emit a log file without the :debug option set" do
|
120
160
|
expect_install_called
|
121
161
|
expect_puppet_path_called
|
@@ -130,13 +170,15 @@ describe ClassMixedWithDSLInstallUtils do
|
|
130
170
|
|
131
171
|
it "will generate a command to emit a log file when the install script fails" do
|
132
172
|
# note a single failure aborts executing against remaining hosts
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
173
|
+
expect_install_called do |e|
|
174
|
+
e.and_raise
|
175
|
+
true # break
|
176
|
+
end
|
137
177
|
|
138
178
|
expect( subject ).to receive( :file_contents_on ).with(anything, log_file)
|
139
|
-
expect {
|
179
|
+
expect {
|
180
|
+
subject.install_msi_on(hosts, msi_path)
|
181
|
+
}.to raise_error(RuntimeError)
|
140
182
|
end
|
141
183
|
|
142
184
|
it "will generate a command to emit a log file with the :debug option set" do
|
@@ -146,7 +188,7 @@ describe ClassMixedWithDSLInstallUtils do
|
|
146
188
|
expect_status_called
|
147
189
|
expect_version_log_called
|
148
190
|
|
149
|
-
expect( subject ).to receive( :file_contents_on ).with(anything, log_file).
|
191
|
+
expect( subject ).to receive( :file_contents_on ).with(anything, log_file).exactly(hosts.length).times
|
150
192
|
|
151
193
|
subject.install_msi_on(hosts, msi_path, {}, { :debug => true })
|
152
194
|
end
|
@@ -171,13 +213,12 @@ describe ClassMixedWithDSLInstallUtils do
|
|
171
213
|
|
172
214
|
hosts.each do |host|
|
173
215
|
expect(host).to receive(:is_x86_64?).and_return(true)
|
174
|
-
end
|
175
216
|
|
176
|
-
|
177
|
-
.with('reg query "HKLM\\SOFTWARE\\Wow6432Node\\Puppet Labs\\PuppetInstaller" /v "RememberedPuppetAgentStartupMode" | findstr
|
178
|
-
|
217
|
+
expect(subject).to receive(:on)
|
218
|
+
.with(host, having_attributes(command: 'reg query "HKLM\\SOFTWARE\\Wow6432Node\\Puppet Labs\\PuppetInstaller" /v "RememberedPuppetAgentStartupMode" | findstr Manual'))
|
219
|
+
end
|
179
220
|
|
180
|
-
subject.install_msi_on(hosts, msi_path, {'PUPPET_AGENT_STARTUP_MODE' => "
|
221
|
+
subject.install_msi_on(hosts, msi_path, {'PUPPET_AGENT_STARTUP_MODE' => "Manual"})
|
181
222
|
end
|
182
223
|
|
183
224
|
it 'will omit Wow6432Node in the registry search for remembered startup setting on 32-bit hosts' do
|
@@ -188,13 +229,12 @@ describe ClassMixedWithDSLInstallUtils do
|
|
188
229
|
|
189
230
|
hosts.each do |host|
|
190
231
|
expect(host).to receive(:is_x86_64?).and_return(false)
|
191
|
-
end
|
192
232
|
|
193
|
-
|
194
|
-
|
195
|
-
|
233
|
+
expect(subject).to receive(:on)
|
234
|
+
.with(host, having_attributes(command: 'reg query "HKLM\\SOFTWARE\\Puppet Labs\\PuppetInstaller" /v "RememberedPuppetAgentStartupMode" | findstr Manual'))
|
235
|
+
end
|
196
236
|
|
197
|
-
subject.install_msi_on(hosts, msi_path, {'PUPPET_AGENT_STARTUP_MODE' => "
|
237
|
+
subject.install_msi_on(hosts, msi_path, {'PUPPET_AGENT_STARTUP_MODE' => "Manual"})
|
198
238
|
end
|
199
239
|
end
|
200
240
|
|
data/tasks/ci.rake
CHANGED
@@ -285,17 +285,22 @@ def beaker_suite_retry(type)
|
|
285
285
|
beaker(:provision)
|
286
286
|
|
287
287
|
begin
|
288
|
-
json_results_file = Tempfile.new
|
289
|
-
|
290
288
|
beaker(:exec, 'pre-suite', '--preserve-state', '--pre-suite', pre_suites(type))
|
291
289
|
beaker(:exec, 'pre-suite', '--preserve-state')
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
puts
|
298
|
-
|
290
|
+
|
291
|
+
begin
|
292
|
+
json_results_file = Tempfile.new
|
293
|
+
beaker(:exec, ENV['TESTS'], '--test-results-file', json_results_file.path)
|
294
|
+
rescue RuntimeError => e
|
295
|
+
puts "ERROR: #{e.message}"
|
296
|
+
tests_to_rerun = JSON.load(File.read(json_results_file.path))
|
297
|
+
if tests_to_rerun.nil? || tests_to_rerun.empty?
|
298
|
+
raise e
|
299
|
+
else
|
300
|
+
puts '*** Retrying the following:'
|
301
|
+
puts tests_to_rerun.map { |spec| " #{spec}" }
|
302
|
+
beaker(:exec, tests_to_rerun.map { |str| "#{str}" }.join(',') )
|
303
|
+
end
|
299
304
|
end
|
300
305
|
ensure
|
301
306
|
beaker(:exec, 'post-suite')
|
@@ -312,6 +317,7 @@ def pre_suites(type)
|
|
312
317
|
[
|
313
318
|
"#{beaker_root}/setup/common/000-delete-puppet-when-none.rb",
|
314
319
|
"#{beaker_root}/setup/common/003_solaris_cert_fix.rb",
|
320
|
+
"#{beaker_root}/setup/common/005_redhat_subscription_fix.rb",
|
315
321
|
"#{beaker_root}/setup/aio/010_Install_Puppet_Agent.rb",
|
316
322
|
"#{beaker_root}/setup/common/011_Install_Puppet_Server.rb",
|
317
323
|
"#{beaker_root}/setup/common/012_Finalize_Installs.rb",
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: beaker-puppet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.27.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vox Pupuli
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-08-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -221,6 +221,7 @@ files:
|
|
221
221
|
- setup/aio/010_Install_Puppet_Agent.rb
|
222
222
|
- setup/common/000-delete-puppet-when-none.rb
|
223
223
|
- setup/common/003_solaris_cert_fix.rb
|
224
|
+
- setup/common/005_redhat_subscription_fix.rb
|
224
225
|
- setup/common/011_Install_Puppet_Server.rb
|
225
226
|
- setup/common/012_Finalize_Installs.rb
|
226
227
|
- setup/common/020_InstallCumulusModules.rb
|
@@ -269,7 +270,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
269
270
|
- !ruby/object:Gem::Version
|
270
271
|
version: '0'
|
271
272
|
requirements: []
|
272
|
-
rubygems_version: 3.2.
|
273
|
+
rubygems_version: 3.2.33
|
273
274
|
signing_key:
|
274
275
|
specification_version: 4
|
275
276
|
summary: Beaker's Puppet DSL Extension Helpers!
|