beaker-pe 1.38.0 → 1.39.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/beaker-pe/install/pe_utils.rb +18 -4
- data/lib/beaker-pe/version.rb +1 -1
- data/spec/beaker-pe/install/pe_utils_spec.rb +43 -16
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bc167d062d00e928c3edab27aba88917f54740c0
|
4
|
+
data.tar.gz: be559e84df01d94b0476d6cd8ffa016f8e9a553e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4be7886aef369fad8961946989a0f62e8de2a27fce265d23067fcaa8226b06b0d6988611e3f8fca5ae4300e76a51f52e7fdd6ea6d560185ace4b2c6c65e26e1d
|
7
|
+
data.tar.gz: ad0d95afca16cb36b9d7c492d29d2430ce002d2298cac88d328d107f53542e9cf7359daed05117b4a6d8d777140d77cd0de0dcb7988c23f6532906d66d9982df
|
@@ -1424,10 +1424,7 @@ module Beaker
|
|
1424
1424
|
begin
|
1425
1425
|
execute_installer_cmd(master, opts)
|
1426
1426
|
rescue Beaker::Host::CommandFailure => e
|
1427
|
-
|
1428
|
-
latest_installer_log_file = on(master, "ls -1t #{installer_log_dir} | head -n1").stdout.chomp
|
1429
|
-
#Check the lastest install log to confirm the expected failure is there
|
1430
|
-
unless on(master, "grep 'The operation could not be completed because RBACs database has not been initialized' #{installer_log_dir}/#{latest_installer_log_file}", :acceptable_exit_codes => [0,1]).exit_code == 0
|
1427
|
+
unless is_expected_pe_postgres_failure?(master)
|
1431
1428
|
raise "Install on master failed in an unexpected manner"
|
1432
1429
|
end
|
1433
1430
|
end
|
@@ -1464,6 +1461,23 @@ module Beaker
|
|
1464
1461
|
end
|
1465
1462
|
end
|
1466
1463
|
|
1464
|
+
#Check the lastest install log to confirm the expected failure is there
|
1465
|
+
def is_expected_pe_postgres_failure?(host)
|
1466
|
+
installer_log_dir = '/var/log/puppetlabs/installer'
|
1467
|
+
latest_installer_log_file = on(host, "ls -1t #{installer_log_dir} | head -n1").stdout.chomp
|
1468
|
+
# As of PE Irving (PE 2018.1.x), these are the only two expected errors
|
1469
|
+
allowed_errors = ["The operation could not be completed because RBACs database has not been initialized",
|
1470
|
+
"Timeout waiting for the database pool to become ready"]
|
1471
|
+
|
1472
|
+
allowed_errors.each do |error|
|
1473
|
+
if(on(host, "grep '#{error}' #{installer_log_dir}/#{latest_installer_log_file}", :acceptable_exit_codes => [0,1]).exit_code == 0)
|
1474
|
+
return true
|
1475
|
+
end
|
1476
|
+
end
|
1477
|
+
|
1478
|
+
false
|
1479
|
+
end
|
1480
|
+
|
1467
1481
|
# Grabs the pe file from a remote host to the machine running Beaker, then
|
1468
1482
|
# scp's the file out to the host.
|
1469
1483
|
#
|
data/lib/beaker-pe/version.rb
CHANGED
@@ -1164,6 +1164,47 @@ describe ClassMixedWithDSLInstallUtils do
|
|
1164
1164
|
end
|
1165
1165
|
end
|
1166
1166
|
|
1167
|
+
describe 'is_expected_pe_postgres_failure? method' do
|
1168
|
+
let(:mono_master) { make_host('mono_master', :pe_ver => '2017.2', :platform => 'ubuntu-16.04-x86_64', :roles => ['master', 'database', 'dashboard']) }
|
1169
|
+
|
1170
|
+
it 'will return true if it is the RBAC database string matcher' do
|
1171
|
+
@installer_log_file_name = Beaker::Result.new( {}, '' )
|
1172
|
+
@installer_log_file_name.stdout = "installer_log_name"
|
1173
|
+
zero_exit_code_mock = Object.new
|
1174
|
+
allow(zero_exit_code_mock).to receive(:exit_code).and_return(0)
|
1175
|
+
one_exit_code_mock = Object.new
|
1176
|
+
allow(one_exit_code_mock).to receive(:exit_code).and_return(1)
|
1177
|
+
allow(subject).to receive(:on).with(mono_master, "ls -1t /var/log/puppetlabs/installer | head -n1").and_return(@installer_log_file_name)
|
1178
|
+
allow(subject).to receive(:on).with(mono_master, "grep 'The operation could not be completed because RBACs database has not been initialized' /var/log/puppetlabs/installer/installer_log_name", :acceptable_exit_codes=>[0, 1]).and_return(zero_exit_code_mock)
|
1179
|
+
allow(subject).to receive(:on).with(mono_master, "grep 'Timeout waiting for the database pool to become ready' /var/log/puppetlabs/installer/installer_log_name", :acceptable_exit_codes=>[0, 1]).and_return(one_exit_code_mock)
|
1180
|
+
expect(subject.is_expected_pe_postgres_failure?(mono_master)). to eq(true)
|
1181
|
+
end
|
1182
|
+
|
1183
|
+
it 'will return true if it is the database pool timeout string matcher' do
|
1184
|
+
@installer_log_file_name = Beaker::Result.new( {}, '' )
|
1185
|
+
@installer_log_file_name.stdout = "installer_log_name"
|
1186
|
+
zero_exit_code_mock = Object.new
|
1187
|
+
allow(zero_exit_code_mock).to receive(:exit_code).and_return(0)
|
1188
|
+
one_exit_code_mock = Object.new
|
1189
|
+
allow(one_exit_code_mock).to receive(:exit_code).and_return(1)
|
1190
|
+
allow(subject).to receive(:on).with(mono_master, "ls -1t /var/log/puppetlabs/installer | head -n1").and_return(@installer_log_file_name)
|
1191
|
+
allow(subject).to receive(:on).with(mono_master, "grep 'The operation could not be completed because RBACs database has not been initialized' /var/log/puppetlabs/installer/installer_log_name", :acceptable_exit_codes=>[0, 1]).and_return(one_exit_code_mock)
|
1192
|
+
allow(subject).to receive(:on).with(mono_master, "grep 'Timeout waiting for the database pool to become ready' /var/log/puppetlabs/installer/installer_log_name", :acceptable_exit_codes=>[0, 1]).and_return(zero_exit_code_mock)
|
1193
|
+
expect(subject.is_expected_pe_postgres_failure?(mono_master)). to eq(true)
|
1194
|
+
end
|
1195
|
+
|
1196
|
+
it 'will return false if no error messages are matched' do
|
1197
|
+
@installer_log_file_name = Beaker::Result.new( {}, '' )
|
1198
|
+
@installer_log_file_name.stdout = "installer_log_name"
|
1199
|
+
one_exit_code_mock = Object.new
|
1200
|
+
allow(one_exit_code_mock).to receive(:exit_code).and_return(1)
|
1201
|
+
allow(subject).to receive(:on).with(mono_master, "ls -1t /var/log/puppetlabs/installer | head -n1").and_return(@installer_log_file_name)
|
1202
|
+
allow(subject).to receive(:on).with(mono_master, "grep 'The operation could not be completed because RBACs database has not been initialized' /var/log/puppetlabs/installer/installer_log_name", :acceptable_exit_codes=>[0, 1]).and_return(one_exit_code_mock)
|
1203
|
+
allow(subject).to receive(:on).with(mono_master, "grep 'Timeout waiting for the database pool to become ready' /var/log/puppetlabs/installer/installer_log_name", :acceptable_exit_codes=>[0, 1]).and_return(one_exit_code_mock)
|
1204
|
+
expect(subject.is_expected_pe_postgres_failure?(mono_master)). to eq(false)
|
1205
|
+
end
|
1206
|
+
end
|
1207
|
+
|
1167
1208
|
describe 'do_install_pe_with_pe_managed_external_postgres with an agent' do
|
1168
1209
|
let(:mono_master) { make_host('mono_master', :pe_ver => '2017.2', :platform => 'ubuntu-16.04-x86_64', :roles => ['master', 'database', 'dashboard']) }
|
1169
1210
|
let(:pe_postgres) { make_host('pe_postgres', :pe_ver => '2017.2', :platform => 'el-7-x86_64', :roles => ['pe_postgres', 'agent']) }
|
@@ -1210,14 +1251,7 @@ describe ClassMixedWithDSLInstallUtils do
|
|
1210
1251
|
#installer command on master is called twice on install
|
1211
1252
|
expect(subject).to receive(:execute_installer_cmd).with(mono_master, {}).and_raise(Beaker::Host::CommandFailure).once.ordered
|
1212
1253
|
|
1213
|
-
|
1214
|
-
@installer_log_file_name = Beaker::Result.new( {}, '' )
|
1215
|
-
@installer_log_file_name.stdout = "installer_log_name"
|
1216
|
-
exit_code_mock = Object.new
|
1217
|
-
allow(exit_code_mock).to receive(:exit_code).and_return( 0 )
|
1218
|
-
allow(subject).to receive(:on).with(mono_master, "ls -1t /var/log/puppetlabs/installer | head -n1").and_return(@installer_log_file_name)
|
1219
|
-
allow(subject).to receive(:on).with(mono_master, "grep 'The operation could not be completed because RBACs database has not been initialized' /var/log/puppetlabs/installer/installer_log_name", :acceptable_exit_codes=>[0, 1]).and_return(exit_code_mock)
|
1220
|
-
|
1254
|
+
allow(subject).to receive(:is_expected_pe_postgres_failure?).and_return(true)
|
1221
1255
|
allow(subject).to receive(:execute_installer_cmd).with(pe_postgres, {}).once
|
1222
1256
|
expect(subject).to receive(:execute_installer_cmd).with(mono_master, {}).once.ordered
|
1223
1257
|
allow(subject).to receive(:on).with(mono_master, "puppet agent -t", :acceptable_exit_codes=>[0, 2]).exactly(3).times
|
@@ -1241,14 +1275,7 @@ describe ClassMixedWithDSLInstallUtils do
|
|
1241
1275
|
allow(subject).to receive(:setup_pe_conf).exactly(2).times
|
1242
1276
|
|
1243
1277
|
expect(subject).to receive(:execute_installer_cmd).with(mono_master, {}).and_raise(Beaker::Host::CommandFailure).once.ordered
|
1244
|
-
|
1245
|
-
#Error handling
|
1246
|
-
@installer_log_file_name = Beaker::Result.new( {}, '' )
|
1247
|
-
@installer_log_file_name.stdout = "installer_log_name"
|
1248
|
-
exit_code_mock = Object.new
|
1249
|
-
allow(exit_code_mock).to receive(:exit_code).and_return(1)
|
1250
|
-
allow(subject).to receive(:on).with(mono_master, "ls -1t /var/log/puppetlabs/installer | head -n1").and_return(@installer_log_file_name)
|
1251
|
-
allow(subject).to receive(:on).with(mono_master, "grep 'The operation could not be completed because RBACs database has not been initialized' /var/log/puppetlabs/installer/installer_log_name", :acceptable_exit_codes=>[0, 1]).and_return(exit_code_mock)
|
1278
|
+
allow(subject).to receive(:is_expected_pe_postgres_failure?).and_return(false)
|
1252
1279
|
|
1253
1280
|
expect{ subject.do_install_pe_with_pe_managed_external_postgres([mono_master, pe_postgres, agent], {}) }.to raise_error(RuntimeError, "Install on master failed in an unexpected manner")
|
1254
1281
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: beaker-pe
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.39.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Puppetlabs
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-03-
|
11
|
+
date: 2018-03-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|