beaker-puppet 1.18.11 → 1.18.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/beaker-puppet/install_utils/puppet5.rb +31 -5
- data/lib/beaker-puppet/install_utils/puppet_utils.rb +2 -0
- data/lib/beaker-puppet/install_utils/windows_utils.rb +16 -13
- data/lib/beaker-puppet/version.rb +1 -1
- data/spec/beaker-puppet/install_utils/puppet5_spec.rb +23 -8
- data/spec/beaker-puppet/install_utils/windows_utils_spec.rb +26 -9
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f74846dbd9ab793e04e052df3fd3059af667b0b42221c5d4505237f3b57f6074
|
4
|
+
data.tar.gz: ba44e5139f6596f2c3d5501701b4a8bb82bfe0f0b1fbd0f5f9b426344dbca21a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3fd8f76111d3226bf9ceee47827c04a3d6163c9f29d2a64496003a9e4b7be39e0821af9b5e8678589d6e2578fb33d8a4bbf94f3c18dbfd50bb24950100fc4ad2
|
7
|
+
data.tar.gz: 71474c705fa2fb388ea95adbca9b23a9883e79735c2d3693e624ffa28d6b682d45b3776c2e8f541a7cc89ad1fdf89975639b2233fc758febec7daf6032816ed0
|
@@ -17,15 +17,40 @@ module Beaker
|
|
17
17
|
# @return [Hash{String=>String}] build json parsed into a ruby hash
|
18
18
|
def fetch_build_details(sha_yaml_url)
|
19
19
|
dst_folder = Dir.mktmpdir
|
20
|
-
|
21
|
-
|
20
|
+
|
21
|
+
at_exit do
|
22
|
+
if $!.nil? || ($!.is_a?(SystemExit) && $!.success?)
|
23
|
+
if File.directory?(dst_folder)
|
24
|
+
require 'fileutils'
|
25
|
+
|
26
|
+
FileUtils.rm_rf(dst_folder)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
sha_yaml_filename = File.basename(sha_yaml_url)
|
32
|
+
sha_yaml_folder_url = File.dirname(sha_yaml_url)
|
22
33
|
|
23
34
|
sha_yaml_file_local_path = fetch_http_file(
|
24
35
|
sha_yaml_folder_url,
|
25
36
|
sha_yaml_filename,
|
26
37
|
dst_folder
|
27
38
|
)
|
28
|
-
|
39
|
+
|
40
|
+
file_hash = YAML.load_file(sha_yaml_file_local_path)
|
41
|
+
|
42
|
+
unless file_hash.is_a?(Hash)
|
43
|
+
message = <<-EOF
|
44
|
+
Data fetched from #{sha_yaml_url} is invalid
|
45
|
+
|
46
|
+
If the URL appears to be something that you should not normally
|
47
|
+
access, your ISP may be hijacking failed web results. Updating
|
48
|
+
your DNS settings to use a public DNS resolver should remedy the
|
49
|
+
issue.
|
50
|
+
EOF
|
51
|
+
|
52
|
+
fail_test(message)
|
53
|
+
end
|
29
54
|
|
30
55
|
return sha_yaml_folder_url, file_hash[:platform_data]
|
31
56
|
end
|
@@ -93,7 +118,7 @@ module Beaker
|
|
93
118
|
repoconfig_url = "#{build_url}/#{repoconfig_buildserver_path}" unless repoconfig_buildserver_path.nil?
|
94
119
|
artifact_url_correct = link_exists?( artifact_url )
|
95
120
|
logger.debug("- artifact url: '#{artifact_url}'. Exists? #{artifact_url_correct}")
|
96
|
-
fail_test('artifact url built incorrectly')
|
121
|
+
fail_test('artifact url built incorrectly') unless artifact_url_correct
|
97
122
|
|
98
123
|
return artifact_url, repoconfig_url
|
99
124
|
end
|
@@ -183,10 +208,11 @@ module Beaker
|
|
183
208
|
#
|
184
209
|
# @return nil
|
185
210
|
def install_from_build_data_url(project_name, sha_yaml_url, local_hosts = nil)
|
186
|
-
|
211
|
+
unless link_exists?( sha_yaml_url )
|
187
212
|
message = <<-EOF
|
188
213
|
Unable to locate a downloadable build of #{project_name} (tried #{sha_yaml_url})
|
189
214
|
EOF
|
215
|
+
|
190
216
|
fail_test( message )
|
191
217
|
end
|
192
218
|
|
@@ -46,6 +46,7 @@ module Beaker
|
|
46
46
|
if not host.is_powershell?
|
47
47
|
separator = ':'
|
48
48
|
end
|
49
|
+
|
49
50
|
path.join(separator)
|
50
51
|
end
|
51
52
|
|
@@ -55,6 +56,7 @@ module Beaker
|
|
55
56
|
def add_puppet_paths_on(hosts)
|
56
57
|
block_on hosts do | host |
|
57
58
|
puppet_path = construct_puppet_path(host)
|
59
|
+
|
58
60
|
host.add_env_var('PATH', puppet_path)
|
59
61
|
host.add_env_var('PATH', 'PATH') # don't destroy the path!
|
60
62
|
end
|
@@ -120,19 +120,24 @@ exit /B %errorlevel%
|
|
120
120
|
begin
|
121
121
|
# 1641 = ERROR_SUCCESS_REBOOT_INITIATED
|
122
122
|
# 3010 = ERROR_SUCCESS_REBOOT_REQUIRED
|
123
|
-
on host, Command.new("
|
123
|
+
on host, Command.new(%{"#{batch_path}"}, [], { :cmdexe => true }), :acceptable_exit_codes => [0, 1641, 3010]
|
124
124
|
rescue
|
125
|
-
on host, Command.new(
|
125
|
+
on host, Command.new(%{more "#{log_file}"}, [], { :cmdexe => true })
|
126
126
|
raise
|
127
127
|
end
|
128
128
|
|
129
129
|
if opts[:debug]
|
130
|
-
on host, Command.new(
|
130
|
+
on host, Command.new(%{more "#{log_file}"}, [], { :cmdexe => true })
|
131
131
|
end
|
132
132
|
|
133
133
|
if !host.is_cygwin?
|
134
|
-
#
|
134
|
+
# Enable the PATH updates
|
135
135
|
host.close
|
136
|
+
|
137
|
+
# Some systems require a full reboot to trigger the enabled path
|
138
|
+
unless on(host, Command.new('puppet -h', [], { :cmdexe => true}), :accept_all_exit_codes => true).exit_code == 0
|
139
|
+
host.reboot
|
140
|
+
end
|
136
141
|
end
|
137
142
|
|
138
143
|
# verify service status post install
|
@@ -170,10 +175,10 @@ exit /B %errorlevel%
|
|
170
175
|
# emit the misc/versions.txt file which contains component versions for
|
171
176
|
# puppet, facter, hiera, pxp-agent, packaging and vendored Ruby
|
172
177
|
[
|
173
|
-
|
174
|
-
|
178
|
+
'%ProgramFiles%/Puppet Labs/puppet/misc/versions.txt',
|
179
|
+
'%ProgramFiles(x86)%/Puppet Labs/puppet/misc/versions.txt'
|
175
180
|
].each do |path|
|
176
|
-
on
|
181
|
+
on(host, Command.new(%{if exist "#{path}" more "#{path}"}, [], { :cmdexe => true }))
|
177
182
|
end
|
178
183
|
end
|
179
184
|
end
|
@@ -199,25 +204,23 @@ exit /B %errorlevel%
|
|
199
204
|
begin
|
200
205
|
# 1641 = ERROR_SUCCESS_REBOOT_INITIATED
|
201
206
|
# 3010 = ERROR_SUCCESS_REBOOT_REQUIRED
|
202
|
-
on host, Command.new("
|
207
|
+
on host, Command.new(%{"#{batch_path}"}, [], { :cmdexe => true }), :acceptable_exit_codes => [0, 1641, 3010]
|
203
208
|
rescue
|
204
|
-
on host, Command.new(
|
209
|
+
on host, Command.new(%{more "#{log_file}"}, [], { :cmdexe => true })
|
205
210
|
raise
|
206
211
|
end
|
207
212
|
|
208
213
|
if opts[:debug]
|
209
|
-
on host, Command.new(
|
214
|
+
on host, Command.new(%{more "#{log_file}"}, [], { :cmdexe => true })
|
210
215
|
end
|
211
216
|
|
212
217
|
if !host.is_cygwin?
|
213
218
|
# HACK: for some reason, post install we need to refresh the connection to make puppet available for execution
|
214
219
|
host.close
|
215
220
|
end
|
216
|
-
|
217
221
|
end
|
218
222
|
end
|
219
|
-
|
220
223
|
end
|
221
224
|
end
|
222
225
|
end
|
223
|
-
end
|
226
|
+
end
|
@@ -391,16 +391,31 @@ describe ClassMixedWithDSLInstallUtils do
|
|
391
391
|
end
|
392
392
|
|
393
393
|
describe '#install_puppet_agent_from_dev_builds_on' do
|
394
|
+
ref="sha"
|
395
|
+
sha_yaml_url="#{Beaker::DSL::Puppet5::DEFAULT_DEV_BUILDS_URL}/puppet-agent/#{ref}/artifacts/#{ref}.yaml"
|
396
|
+
|
397
|
+
begin
|
398
|
+
require 'net/http'
|
399
|
+
|
400
|
+
Net::HTTP.get(sha_yaml_url)
|
401
|
+
rescue
|
402
|
+
real_world = true
|
403
|
+
end
|
404
|
+
|
394
405
|
let(:host) { make_host('test_host', { platform: 'el-7-x86_64' }) }
|
395
|
-
let(:ref) { "sha" }
|
396
|
-
let(:sha_yaml_url) { "#{Beaker::DSL::Puppet5::DEFAULT_DEV_BUILDS_URL}/puppet-agent/#{ref}/artifacts/#{ref}.yaml" }
|
397
406
|
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
407
|
+
if real_world
|
408
|
+
it 'installs puppet-agent from internal builds when they are accessible' do
|
409
|
+
skip('The Puppet development network is not available in the real world')
|
410
|
+
end
|
411
|
+
else
|
412
|
+
it 'installs puppet-agent from internal builds when they are accessible' do
|
413
|
+
expect( subject ).to receive(:block_on).with(anything, :run_in_parallel => true)
|
414
|
+
allow(subject).to receive(:dev_builds_accessible_on?).and_return(true)
|
415
|
+
allow(subject).to receive(:install_from_build_data_url).with('puppet-agent', sha_yaml_url, host)
|
416
|
+
subject.install_puppet_agent_from_dev_builds_on(host, ref)
|
417
|
+
expect(subject).to have_received(:install_from_build_data_url).with('puppet-agent', sha_yaml_url, host)
|
418
|
+
end
|
404
419
|
end
|
405
420
|
|
406
421
|
it 'fails the test when internal builds are inaccessible' do
|
@@ -12,7 +12,7 @@ end
|
|
12
12
|
|
13
13
|
describe ClassMixedWithDSLInstallUtils do
|
14
14
|
let(:windows_temp) { 'C:\\Windows\\Temp' }
|
15
|
-
let(
|
15
|
+
let(:batch_path) { '/fake/batch/path' }
|
16
16
|
let(:msi_path) { 'c:\\foo\\puppet.msi' }
|
17
17
|
let(:winhost) { make_host( 'winhost',
|
18
18
|
{ :platform => Beaker::Platform.new('windows-2008r2-64'),
|
@@ -42,11 +42,11 @@ describe ClassMixedWithDSLInstallUtils do
|
|
42
42
|
|
43
43
|
def expect_version_log_called(times = hosts.length)
|
44
44
|
[
|
45
|
-
|
46
|
-
|
45
|
+
%{%ProgramFiles%/Puppet Labs/puppet/misc/versions.txt},
|
46
|
+
%{%ProgramFiles(x86)%/Puppet Labs/puppet/misc/versions.txt}
|
47
47
|
].each do |path|
|
48
48
|
expect( Beaker::Command ).to receive( :new )
|
49
|
-
.with(
|
49
|
+
.with( %{if exist "#{path}" more "#{path}"}, [], {:cmdexe => true} )
|
50
50
|
.exactly( times ).times
|
51
51
|
end
|
52
52
|
end
|
@@ -71,15 +71,25 @@ describe ClassMixedWithDSLInstallUtils do
|
|
71
71
|
.exactly(times).times
|
72
72
|
end
|
73
73
|
|
74
|
+
def expect_check_puppet_path_called(times = 1)
|
75
|
+
expect( Beaker::Command ).to receive( :new )
|
76
|
+
.with( 'puppet -h', [], {:cmdexe => true} )
|
77
|
+
.exactly( times ).times
|
78
|
+
end
|
79
|
+
|
74
80
|
describe "#install_msi_on" do
|
75
81
|
let( :log_file ) { '/fake/log/file.log' }
|
76
82
|
before :each do
|
77
|
-
|
83
|
+
exit_code_result = Beaker::Result.new(nil, 'temp')
|
84
|
+
exit_code_result.exit_code = 0
|
85
|
+
|
86
|
+
allow( subject ).to receive( :on ).and_return( exit_code_result )
|
78
87
|
allow( subject ).to receive( :create_install_msi_batch_on ).and_return( [batch_path, log_file] )
|
79
88
|
end
|
80
89
|
|
81
90
|
it "will specify a PUPPET_AGENT_STARTUP_MODE of Manual (disabling the service) by default" do
|
82
91
|
expect_install_called
|
92
|
+
expect_check_puppet_path_called
|
83
93
|
expect_status_called
|
84
94
|
expect_reg_query_called
|
85
95
|
expect_version_log_called
|
@@ -91,6 +101,7 @@ describe ClassMixedWithDSLInstallUtils do
|
|
91
101
|
|
92
102
|
it "allows configuration of PUPPET_AGENT_STARTUP_MODE" do
|
93
103
|
expect_install_called
|
104
|
+
expect_check_puppet_path_called
|
94
105
|
expect_status_called
|
95
106
|
expect_reg_query_called
|
96
107
|
expect_version_log_called
|
@@ -103,8 +114,9 @@ describe ClassMixedWithDSLInstallUtils do
|
|
103
114
|
|
104
115
|
it "will not generate a command to emit a log file without the :debug option set" do
|
105
116
|
expect_install_called
|
117
|
+
expect_check_puppet_path_called
|
106
118
|
expect_status_called
|
107
|
-
expect( Beaker::Command ).not_to receive( :new ).with( /^
|
119
|
+
expect( Beaker::Command ).not_to receive( :new ).with( /^more .*\.log$/, [], {:cmdexe => true} )
|
108
120
|
subject.install_msi_on(hosts, msi_path)
|
109
121
|
end
|
110
122
|
|
@@ -113,25 +125,28 @@ describe ClassMixedWithDSLInstallUtils do
|
|
113
125
|
hosts_affected = 1
|
114
126
|
|
115
127
|
expect_install_called(hosts_affected) { |e| e.and_raise }
|
128
|
+
expect_check_puppet_path_called(0)
|
116
129
|
expect_status_called(0)
|
117
130
|
|
118
|
-
expect( Beaker::Command ).to receive( :new ).with( /^
|
131
|
+
expect( Beaker::Command ).to receive( :new ).with( /^more \".*\.log\"$/, [], {:cmdexe => true} ).exactly( hosts_affected ).times
|
119
132
|
expect { subject.install_msi_on(hosts, msi_path) }.to raise_error(RuntimeError)
|
120
133
|
end
|
121
134
|
|
122
135
|
it "will generate a command to emit a log file with the :debug option set" do
|
123
136
|
expect_install_called
|
124
137
|
expect_reg_query_called
|
138
|
+
expect_check_puppet_path_called
|
125
139
|
expect_status_called
|
126
140
|
expect_version_log_called
|
127
141
|
|
128
|
-
expect( Beaker::Command ).to receive( :new ).with( /^
|
142
|
+
expect( Beaker::Command ).to receive( :new ).with( /^more \".*\.log\"$/, [], {:cmdexe => true} ).exactly( hosts.length ).times
|
129
143
|
subject.install_msi_on(hosts, msi_path, {}, { :debug => true })
|
130
144
|
end
|
131
145
|
|
132
146
|
it 'will pass msi_path to #create_install_msi_batch_on as-is' do
|
133
147
|
expect_install_called
|
134
148
|
expect_reg_query_called
|
149
|
+
expect_check_puppet_path_called
|
135
150
|
expect_status_called
|
136
151
|
expect_version_log_called
|
137
152
|
test_path = 'test/path'
|
@@ -142,6 +157,7 @@ describe ClassMixedWithDSLInstallUtils do
|
|
142
157
|
|
143
158
|
it 'will search in Wow6432Node for the remembered startup setting on 64-bit hosts' do
|
144
159
|
expect_install_called
|
160
|
+
expect_check_puppet_path_called
|
145
161
|
expect_status_called
|
146
162
|
expect_version_log_called
|
147
163
|
|
@@ -158,6 +174,7 @@ describe ClassMixedWithDSLInstallUtils do
|
|
158
174
|
|
159
175
|
it 'will omit Wow6432Node in the registry search for remembered startup setting on 32-bit hosts' do
|
160
176
|
expect_install_called
|
177
|
+
expect_check_puppet_path_called
|
161
178
|
expect_status_called
|
162
179
|
expect_version_log_called
|
163
180
|
|
@@ -260,4 +277,4 @@ describe ClassMixedWithDSLInstallUtils do
|
|
260
277
|
end
|
261
278
|
end
|
262
279
|
end
|
263
|
-
end
|
280
|
+
end
|
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.18.
|
4
|
+
version: 1.18.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Puppet
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-02-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|