beaker-pe 1.6.1 → 1.7.0
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 +8 -8
- data/HISTORY.md +49 -2
- data/lib/beaker-pe/install/pe_utils.rb +90 -38
- data/lib/beaker-pe/version.rb +1 -1
- data/spec/beaker-pe/install/pe_utils_spec.rb +129 -13
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
!binary "U0hBMQ==":
|
|
3
3
|
metadata.gz: !binary |-
|
|
4
|
-
|
|
4
|
+
ZWU4ZTk5NzEzNTQyM2YzNDAzZjY0YWMxMmQwMjA4MDE3MTkwM2JhNg==
|
|
5
5
|
data.tar.gz: !binary |-
|
|
6
|
-
|
|
6
|
+
Y2RiZDllMDhiY2Q4ZDhlMzUzNDU3ZTg1MjU1MjlhYzg3ZmFiODdmNg==
|
|
7
7
|
SHA512:
|
|
8
8
|
metadata.gz: !binary |-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
MTM1YjU2ODYwZGZmMDVlNGQ4MDhjMzcwNDU1Yzc3N2IxNTIzODFkZTQ4YzEy
|
|
10
|
+
OTBhZjI5NjIxY2ZmYjA0ODBiMTljZWViNDFhNGNhZDI4Y2RhMDQ4MmVlNTlm
|
|
11
|
+
MTcwZGQ1NmZmNTkyZjQ5ZTFkM2QyYTJkOWNjOTc4Y2NmNmMyZWM=
|
|
12
12
|
data.tar.gz: !binary |-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
NmExZjQzNzA1OTMxMmMyZDJiZmExMTgwODMyMjBjMmIwZmE1YjI1M2U0YTBi
|
|
14
|
+
YzIxM2I2Mzc0N2RkZjhkYjk2OTdmMDU1OGViYmM0MzMzYTYzYTY2MjJhNzA4
|
|
15
|
+
ODFhYTgzYzAyNTdmMjE2MGVjNWEyN2FkZTY5ZjRiY2M3OTg2MzY=
|
data/HISTORY.md
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# default - History
|
|
2
2
|
## Tags
|
|
3
|
-
* [LATEST -
|
|
3
|
+
* [LATEST - 20 Dec, 2016 (80c18a2b)](#LATEST)
|
|
4
|
+
* [1.6.1 - 22 Nov, 2016 (52e30609)](#1.6.1)
|
|
4
5
|
* [1.6.0 - 16 Nov, 2016 (0da1b64c)](#1.6.0)
|
|
5
6
|
* [1.5.0 - 7 Nov, 2016 (24d78992)](#1.5.0)
|
|
6
7
|
* [1.4.0 - 11 Oct, 2016 (6becdbb2)](#1.4.0)
|
|
@@ -25,7 +26,53 @@
|
|
|
25
26
|
* [0.1.0 - 29 Feb, 2016 (4fc88d8c)](#0.1.0)
|
|
26
27
|
|
|
27
28
|
## Details
|
|
28
|
-
### <a name = "LATEST">LATEST -
|
|
29
|
+
### <a name = "LATEST">LATEST - 20 Dec, 2016 (80c18a2b)
|
|
30
|
+
|
|
31
|
+
* (GEM) update beaker-pe version to 1.7.0 (80c18a2b)
|
|
32
|
+
|
|
33
|
+
* Merge pull request #44 from kevpl/maint_version_fix (a1a01605)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
Merge pull request #44 from kevpl/maint_version_fix
|
|
38
|
+
|
|
39
|
+
(MAINT) fix broken version number
|
|
40
|
+
```
|
|
41
|
+
* (MAINT) fix broken version number (46340fb7)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
(MAINT) fix broken version number
|
|
46
|
+
|
|
47
|
+
[skip ci]
|
|
48
|
+
```
|
|
49
|
+
* Merge pull request #19 from kevpl/bkr831_install_windows (415d3f3c)
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
Merge pull request #19 from kevpl/bkr831_install_windows
|
|
54
|
+
|
|
55
|
+
(BKR-831) added dynamic puppet-agent version read from master
|
|
56
|
+
```
|
|
57
|
+
* Merge pull request #42 from kevpl/maint_fix_specs (e185d0da)
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
Merge pull request #42 from kevpl/maint_fix_specs
|
|
62
|
+
|
|
63
|
+
(MAINT) fix spec testing
|
|
64
|
+
```
|
|
65
|
+
* (MAINT) fix spec testing (9dc8b8d7)
|
|
66
|
+
|
|
67
|
+
* (BKR-831) add fallback to aio_agent_version (d42ef8ef)
|
|
68
|
+
|
|
69
|
+
* (BKR-831) cleaned up host preparation for installs (f544d6aa)
|
|
70
|
+
|
|
71
|
+
* (BKR-831) added dynamic puppet-agent version read from master (76d2f9a7)
|
|
72
|
+
|
|
73
|
+
### <a name = "1.6.1">1.6.1 - 22 Nov, 2016 (52e30609)
|
|
74
|
+
|
|
75
|
+
* (HISTORY) update beaker-pe history for gem release 1.6.1 (52e30609)
|
|
29
76
|
|
|
30
77
|
* (GEM) update beaker-pe version to 1.6.1 (4b812f78)
|
|
31
78
|
|
|
@@ -386,39 +386,7 @@ module Beaker
|
|
|
386
386
|
add_extended_gpg_key_to_hosts(hosts, opts)
|
|
387
387
|
|
|
388
388
|
# Set PE distribution for all the hosts, create working dir
|
|
389
|
-
|
|
390
|
-
hosts.each do |host|
|
|
391
|
-
next if agent_only_check_needed && hosts_agent_only.include?(host)
|
|
392
|
-
host['pe_installer'] ||= 'puppet-enterprise-installer'
|
|
393
|
-
if host['platform'] !~ /windows|osx/
|
|
394
|
-
platform = use_all_tar ? 'all' : host['platform']
|
|
395
|
-
version = host['pe_ver'] || opts[:pe_ver]
|
|
396
|
-
host['dist'] = "puppet-enterprise-#{version}-#{platform}"
|
|
397
|
-
elsif host['platform'] =~ /osx/
|
|
398
|
-
version = host['pe_ver'] || opts[:pe_ver]
|
|
399
|
-
host['dist'] = "puppet-enterprise-#{version}-#{host['platform']}"
|
|
400
|
-
elsif host['platform'] =~ /windows/
|
|
401
|
-
version = host[:pe_ver] || opts['pe_ver_win']
|
|
402
|
-
is_config_32 = true == (host['ruby_arch'] == 'x86') || host['install_32'] || opts['install_32']
|
|
403
|
-
should_install_64bit = !(version_is_less(version, '3.4')) && host.is_x86_64? && !is_config_32
|
|
404
|
-
#only install 64bit builds if
|
|
405
|
-
# - we are on pe version 3.4+
|
|
406
|
-
# - we do not have install_32 set on host
|
|
407
|
-
# - we do not have install_32 set globally
|
|
408
|
-
if !(version_is_less(version, '3.99'))
|
|
409
|
-
if should_install_64bit
|
|
410
|
-
host['dist'] = "puppet-agent-#{version}-x64"
|
|
411
|
-
else
|
|
412
|
-
host['dist'] = "puppet-agent-#{version}-x86"
|
|
413
|
-
end
|
|
414
|
-
elsif should_install_64bit
|
|
415
|
-
host['dist'] = "puppet-enterprise-#{version}-x64"
|
|
416
|
-
else
|
|
417
|
-
host['dist'] = "puppet-enterprise-#{version}"
|
|
418
|
-
end
|
|
419
|
-
end
|
|
420
|
-
host['working_dir'] = host.tmpdir(Time.new.strftime("%Y-%m-%d_%H.%M.%S"))
|
|
421
|
-
end
|
|
389
|
+
prepare_hosts(hosts_not_agent_only, opts)
|
|
422
390
|
|
|
423
391
|
fetch_pe(hosts_not_agent_only, opts)
|
|
424
392
|
|
|
@@ -434,10 +402,12 @@ module Beaker
|
|
|
434
402
|
|
|
435
403
|
if agent_only_check_needed && hosts_agent_only.include?(host) || is_windows_msi_and_aio
|
|
436
404
|
host['type'] = 'aio'
|
|
437
|
-
install_puppet_agent_pe_promoted_repo_on(host, {
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
405
|
+
install_puppet_agent_pe_promoted_repo_on(host, {
|
|
406
|
+
:puppet_agent_version => get_puppet_agent_version(host, opts),
|
|
407
|
+
:puppet_agent_sha => host[:puppet_agent_sha] || opts[:puppet_agent_sha],
|
|
408
|
+
:pe_ver => host[:pe_ver] || opts[:pe_ver],
|
|
409
|
+
:puppet_collection => host[:puppet_collection] || opts[:puppet_collection]
|
|
410
|
+
})
|
|
441
411
|
# 1 since no certificate found and waitforcert disabled
|
|
442
412
|
acceptable_exit_codes = [0, 1]
|
|
443
413
|
acceptable_exit_codes << 2 if opts[:type] == :upgrade
|
|
@@ -558,6 +528,88 @@ module Beaker
|
|
|
558
528
|
end
|
|
559
529
|
end
|
|
560
530
|
|
|
531
|
+
# Prepares hosts for rest of {#do_install} operations.
|
|
532
|
+
# This includes doing these tasks:
|
|
533
|
+
# - setting 'pe_installer' property on hosts
|
|
534
|
+
# - setting 'dist' property on hosts
|
|
535
|
+
# - creating and setting 'working_dir' property on hosts
|
|
536
|
+
#
|
|
537
|
+
# @note that these steps aren't necessary for all hosts. Specifically,
|
|
538
|
+
# 'agent_only' hosts do not require these steps to be executed.
|
|
539
|
+
#
|
|
540
|
+
# @param [Array<Host>] hosts Hosts to prepare
|
|
541
|
+
# @param [Hash{Symbol=>String}] local_options Local options, used to
|
|
542
|
+
# pass misc configuration required for the prep steps
|
|
543
|
+
#
|
|
544
|
+
# @return nil
|
|
545
|
+
def prepare_hosts(hosts, local_options={})
|
|
546
|
+
use_all_tar = ENV['PE_USE_ALL_TAR'] == 'true'
|
|
547
|
+
hosts.each do |host|
|
|
548
|
+
host['pe_installer'] ||= 'puppet-enterprise-installer'
|
|
549
|
+
if host['platform'] !~ /windows|osx/
|
|
550
|
+
platform = use_all_tar ? 'all' : host['platform']
|
|
551
|
+
version = host['pe_ver'] || local_options[:pe_ver]
|
|
552
|
+
host['dist'] = "puppet-enterprise-#{version}-#{platform}"
|
|
553
|
+
elsif host['platform'] =~ /osx/
|
|
554
|
+
version = host['pe_ver'] || local_options[:pe_ver]
|
|
555
|
+
host['dist'] = "puppet-enterprise-#{version}-#{host['platform']}"
|
|
556
|
+
elsif host['platform'] =~ /windows/
|
|
557
|
+
version = host[:pe_ver] || local_options['pe_ver_win']
|
|
558
|
+
is_config_32 = true == (host['ruby_arch'] == 'x86') || host['install_32'] || local_options['install_32']
|
|
559
|
+
should_install_64bit = !(version_is_less(version, '3.4')) && host.is_x86_64? && !is_config_32
|
|
560
|
+
#only install 64bit builds if
|
|
561
|
+
# - we are on pe version 3.4+
|
|
562
|
+
# - we do not have install_32 set on host
|
|
563
|
+
# - we do not have install_32 set globally
|
|
564
|
+
if !(version_is_less(version, '3.99'))
|
|
565
|
+
if should_install_64bit
|
|
566
|
+
host['dist'] = "puppet-agent-#{version}-x64"
|
|
567
|
+
else
|
|
568
|
+
host['dist'] = "puppet-agent-#{version}-x86"
|
|
569
|
+
end
|
|
570
|
+
elsif should_install_64bit
|
|
571
|
+
host['dist'] = "puppet-enterprise-#{version}-x64"
|
|
572
|
+
else
|
|
573
|
+
host['dist'] = "puppet-enterprise-#{version}"
|
|
574
|
+
end
|
|
575
|
+
end
|
|
576
|
+
host['working_dir'] = host.tmpdir(Time.new.strftime("%Y-%m-%d_%H.%M.%S"))
|
|
577
|
+
end
|
|
578
|
+
end
|
|
579
|
+
|
|
580
|
+
# Gets the puppet-agent version, hopefully from the host or local options.
|
|
581
|
+
# Will fall back to reading the `aio_agent_build` property on the master
|
|
582
|
+
# if neither of those two options are passed
|
|
583
|
+
#
|
|
584
|
+
# @note This method does have a side-effect: if it reads the
|
|
585
|
+
# `aio_agent_build` property from master, it will store it in the local
|
|
586
|
+
# options hash so that it won't have to do this more than once.
|
|
587
|
+
#
|
|
588
|
+
# @param [Beaker::Host] host Host to get puppet-agent for
|
|
589
|
+
# @param [Hash{Symbol=>String}] local_options local method options hash
|
|
590
|
+
#
|
|
591
|
+
# @return [String] puppet-agent version to install
|
|
592
|
+
def get_puppet_agent_version(host, local_options={})
|
|
593
|
+
puppet_agent_version = host[:puppet_agent_version] || local_options[:puppet_agent_version]
|
|
594
|
+
return puppet_agent_version if puppet_agent_version
|
|
595
|
+
log_prefix = "No :puppet_agent_version in host #{host} or local options."
|
|
596
|
+
fail_message = "#{log_prefix} Could not read facts from master to determine puppet_agent_version"
|
|
597
|
+
# we can query the master because do_install is called passing
|
|
598
|
+
# the {#sorted_hosts}, so we know the master will be installed
|
|
599
|
+
# before the agents
|
|
600
|
+
facts_result = on(master, 'puppet facts')
|
|
601
|
+
raise ArgumentError, fail_message if facts_result.exit_code != 0
|
|
602
|
+
facts_hash = JSON.parse(facts_result.stdout.chomp)
|
|
603
|
+
puppet_agent_version = facts_hash['values']['aio_agent_build']
|
|
604
|
+
# released masters don't have _build fact, fallback to _version
|
|
605
|
+
puppet_agent_version ||= facts_hash['values']['aio_agent_version']
|
|
606
|
+
raise ArgumentError, fail_message if puppet_agent_version.nil?
|
|
607
|
+
logger.warn("#{log_prefix} Read puppet-agent version #{puppet_agent_version} from master")
|
|
608
|
+
# saving so that we don't have to query the master more than once
|
|
609
|
+
local_options[:puppet_agent_version] = puppet_agent_version
|
|
610
|
+
puppet_agent_version
|
|
611
|
+
end
|
|
612
|
+
|
|
561
613
|
# True if version is greater than or equal to MEEP_CUTOVER_VERSION (2016.2.0)
|
|
562
614
|
def use_meep?(version)
|
|
563
615
|
!version_is_less(version, MEEP_CUTOVER_VERSION)
|
|
@@ -903,7 +955,7 @@ module Beaker
|
|
|
903
955
|
|
|
904
956
|
#wait for output to host['higgs_file']
|
|
905
957
|
#we're all done when we find this line in the PE installation log
|
|
906
|
-
if version_is_less(
|
|
958
|
+
if version_is_less(opts[:pe_ver] || host['pe_ver'], '2016.3')
|
|
907
959
|
higgs_re = /Please\s+go\s+to\s+https:\/\/.*\s+in\s+your\s+browser\s+to\s+continue\s+installation/m
|
|
908
960
|
else
|
|
909
961
|
higgs_re = /o\s+to\s+https:\/\/.*\s+in\s+your\s+browser\s+to\s+continue\s+installation/m
|
data/lib/beaker-pe/version.rb
CHANGED
|
@@ -772,15 +772,32 @@ describe ClassMixedWithDSLInstallUtils do
|
|
|
772
772
|
"puppet #{arg}"
|
|
773
773
|
end
|
|
774
774
|
|
|
775
|
+
pa_version = 'rarified_air_9364'
|
|
776
|
+
allow( subject ).to receive( :get_puppet_agent_version ).and_return( pa_version )
|
|
777
|
+
|
|
775
778
|
allow( subject ).to receive( :hosts ).and_return( hosts )
|
|
776
779
|
#create answers file per-host, except windows
|
|
777
780
|
expect( subject ).to receive( :create_remote_file ).with( hosts[0], /answers/, /q/ ).once
|
|
778
781
|
#run installer on all hosts
|
|
779
782
|
expect( subject ).to receive( :on ).with( hosts[0], /puppet-enterprise-installer/ ).once
|
|
780
|
-
expect( subject ).to receive( :install_puppet_agent_pe_promoted_repo_on ).with(
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
783
|
+
expect( subject ).to receive( :install_puppet_agent_pe_promoted_repo_on ).with(
|
|
784
|
+
hosts[1],
|
|
785
|
+
{
|
|
786
|
+
:puppet_agent_version => pa_version,
|
|
787
|
+
:puppet_agent_sha => nil,
|
|
788
|
+
:pe_ver => hosts[1][:pe_ver],
|
|
789
|
+
:puppet_collection => nil
|
|
790
|
+
}
|
|
791
|
+
).once
|
|
792
|
+
expect( subject ).to receive( :install_puppet_agent_pe_promoted_repo_on ).with(
|
|
793
|
+
hosts[2],
|
|
794
|
+
{
|
|
795
|
+
:puppet_agent_version => pa_version,
|
|
796
|
+
:puppet_agent_sha => nil,
|
|
797
|
+
:pe_ver => hosts[2][:pe_ver],
|
|
798
|
+
:puppet_collection => nil
|
|
799
|
+
}
|
|
800
|
+
).once
|
|
784
801
|
hosts.each do |host|
|
|
785
802
|
expect( subject ).to receive( :configure_type_defaults_on ).with( host ).once
|
|
786
803
|
expect( subject ).to receive( :sign_certificate_for ).with( host ).once
|
|
@@ -812,6 +829,9 @@ describe ClassMixedWithDSLInstallUtils do
|
|
|
812
829
|
hosts[2][:platform] = Beaker::Platform.new('el-6-x86_64')
|
|
813
830
|
hosts[2][:pe_ver] = '3.8'
|
|
814
831
|
|
|
832
|
+
pa_version = 'rarified_air_1675'
|
|
833
|
+
allow( subject ).to receive( :get_puppet_agent_version ).and_return( pa_version )
|
|
834
|
+
|
|
815
835
|
allow( subject ).to receive( :hosts ).and_return( hosts )
|
|
816
836
|
allow( subject ).to receive( :options ).and_return(Beaker::Options::Presets.new.presets)
|
|
817
837
|
allow( subject ).to receive( :on ).and_return( Beaker::Result.new( {}, '' ) )
|
|
@@ -834,8 +854,15 @@ describe ClassMixedWithDSLInstallUtils do
|
|
|
834
854
|
expect( subject ).to receive( :create_remote_file ).with( hosts[0], /answers/, /q/ ).once
|
|
835
855
|
#run installer on all hosts
|
|
836
856
|
expect( subject ).to receive( :on ).with( hosts[0], /puppet-enterprise-installer/ ).once
|
|
837
|
-
expect( subject ).to receive( :install_puppet_agent_pe_promoted_repo_on ).with(
|
|
838
|
-
|
|
857
|
+
expect( subject ).to receive( :install_puppet_agent_pe_promoted_repo_on ).with(
|
|
858
|
+
hosts[1],
|
|
859
|
+
{
|
|
860
|
+
:puppet_agent_version => pa_version,
|
|
861
|
+
:puppet_agent_sha => nil,
|
|
862
|
+
:pe_ver => hosts[1][:pe_ver],
|
|
863
|
+
:puppet_collection => nil
|
|
864
|
+
}
|
|
865
|
+
).once
|
|
839
866
|
expect( subject ).to receive( :on ).with( hosts[2], /puppet-enterprise-installer/ ).once
|
|
840
867
|
hosts.each do |host|
|
|
841
868
|
expect( subject ).to receive( :configure_type_defaults_on ).with( host ).once
|
|
@@ -860,10 +887,11 @@ describe ClassMixedWithDSLInstallUtils do
|
|
|
860
887
|
|
|
861
888
|
it 'sets puppet-agent acceptable_exit_codes correctly for config helper on upgrade' do
|
|
862
889
|
hosts = make_hosts({
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
890
|
+
:previous_pe_ver => '3.0',
|
|
891
|
+
:pe_ver => '4.0',
|
|
892
|
+
:pe_upgrade_ver => '4.0',
|
|
893
|
+
:roles => ['agent'],
|
|
894
|
+
}, 2)
|
|
867
895
|
hosts[0][:roles] = ['master', 'database', 'dashboard']
|
|
868
896
|
hosts[1][:platform] = Beaker::Platform.new('el-6-x86_64')
|
|
869
897
|
opts[:HOSTS] = {}
|
|
@@ -871,6 +899,9 @@ describe ClassMixedWithDSLInstallUtils do
|
|
|
871
899
|
opts[:HOSTS][host.name] = host
|
|
872
900
|
end
|
|
873
901
|
|
|
902
|
+
pa_version = 'rarified_air_75699'
|
|
903
|
+
allow( subject ).to receive( :get_puppet_agent_version ).and_return( pa_version )
|
|
904
|
+
|
|
874
905
|
allow( subject ).to receive( :hosts ).and_return( hosts )
|
|
875
906
|
allow( subject ).to receive( :options ).and_return(Beaker::Options::Presets.new.presets)
|
|
876
907
|
allow( subject ).to receive( :on ).and_return( Beaker::Result.new( {}, '' ) )
|
|
@@ -893,8 +924,14 @@ describe ClassMixedWithDSLInstallUtils do
|
|
|
893
924
|
allow( subject ).to receive( :create_remote_file ).with( hosts[0], /answers/, /q/ )
|
|
894
925
|
#run installer on all hosts
|
|
895
926
|
allow( subject ).to receive( :on ).with( hosts[0], /puppet-enterprise-installer/ )
|
|
896
|
-
allow( subject ).to receive(
|
|
897
|
-
|
|
927
|
+
allow( subject ).to receive(
|
|
928
|
+
:install_puppet_agent_pe_promoted_repo_on
|
|
929
|
+
).with( hosts[1], {
|
|
930
|
+
:puppet_agent_version => pa_version,
|
|
931
|
+
:puppet_agent_sha => nil,
|
|
932
|
+
:pe_ver => hosts[1][:pe_ver],
|
|
933
|
+
:puppet_collection => nil
|
|
934
|
+
} )
|
|
898
935
|
# expect( subject ).to receive( :on ).with( hosts[2], /puppet-enterprise-installer/ ).once
|
|
899
936
|
hosts.each do |host|
|
|
900
937
|
allow( subject ).to receive( :add_pe_defaults_on ).with( host ) unless subject.aio_version?(host)
|
|
@@ -1260,7 +1297,86 @@ describe ClassMixedWithDSLInstallUtils do
|
|
|
1260
1297
|
expect(subject).to receive(:fail_test)
|
|
1261
1298
|
subject.check_console_status_endpoint({})
|
|
1262
1299
|
end
|
|
1263
|
-
|
|
1264
1300
|
end
|
|
1265
1301
|
|
|
1302
|
+
describe '#get_puppet_agent_version' do
|
|
1303
|
+
|
|
1304
|
+
context 'when the puppet_agent version is set on an argument' do
|
|
1305
|
+
|
|
1306
|
+
it 'uses host setting over all others' do
|
|
1307
|
+
pa_version = 'pants of the dance'
|
|
1308
|
+
host_arg = { :puppet_agent_version => pa_version }
|
|
1309
|
+
local_options = { :puppet_agent_version => 'something else' }
|
|
1310
|
+
expect( subject.get_puppet_agent_version( host_arg, local_options ) ).to be === pa_version
|
|
1311
|
+
end
|
|
1312
|
+
|
|
1313
|
+
it 'uses local options over all others (except host setting)' do
|
|
1314
|
+
pa_version = 'who did it?'
|
|
1315
|
+
local_options = { :puppet_agent_version => pa_version }
|
|
1316
|
+
expect( subject.get_puppet_agent_version( {}, local_options ) ).to be === pa_version
|
|
1317
|
+
end
|
|
1318
|
+
end
|
|
1319
|
+
|
|
1320
|
+
context 'when the puppet_agent version has to be read dynamically' do
|
|
1321
|
+
|
|
1322
|
+
def test_setup(mock_values={})
|
|
1323
|
+
json_hash = mock_values[:json_hash]
|
|
1324
|
+
pa_version = mock_values[:pa_version]
|
|
1325
|
+
pa_version ||= 'pa_version_' + rand(10 ** 5).to_s.rjust(5,'0') # 5 digit random number string
|
|
1326
|
+
json_hash ||= "{ \"values\": { \"aio_agent_build\": \"#{pa_version}\" }}"
|
|
1327
|
+
|
|
1328
|
+
allow( subject ).to receive( :master ).and_return( {} )
|
|
1329
|
+
result_mock = Object.new
|
|
1330
|
+
allow( result_mock ).to receive( :stdout ).and_return( json_hash )
|
|
1331
|
+
allow( result_mock ).to receive( :exit_code ).and_return( 0 )
|
|
1332
|
+
allow( subject ).to receive( :on ).and_return( result_mock )
|
|
1333
|
+
pa_version
|
|
1334
|
+
end
|
|
1335
|
+
|
|
1336
|
+
it 'parses and returns the command output correctly' do
|
|
1337
|
+
pa_version = test_setup
|
|
1338
|
+
expect( subject.get_puppet_agent_version( {} ) ).to be === pa_version
|
|
1339
|
+
end
|
|
1340
|
+
|
|
1341
|
+
it 'saves the puppet_agent version in the local_options argument' do
|
|
1342
|
+
pa_version = test_setup
|
|
1343
|
+
local_options_hash = {}
|
|
1344
|
+
subject.get_puppet_agent_version( {}, local_options_hash )
|
|
1345
|
+
expect( local_options_hash[:puppet_agent_version] ).to be === pa_version
|
|
1346
|
+
end
|
|
1347
|
+
|
|
1348
|
+
it 'falls back on aio_agent_version if _build is not available' do
|
|
1349
|
+
pa_version = 'your_face_13587'
|
|
1350
|
+
test_setup( :json_hash => "{ \"values\": { \"aio_agent_version\": \"#{pa_version}\" }}" )
|
|
1351
|
+
expect( subject.get_puppet_agent_version( {} ) ).to be === pa_version
|
|
1352
|
+
end
|
|
1353
|
+
end
|
|
1354
|
+
|
|
1355
|
+
context 'failures' do
|
|
1356
|
+
|
|
1357
|
+
def test_setup(mock_values)
|
|
1358
|
+
exit_code = mock_values[:exit_code] || 0
|
|
1359
|
+
json_hash = mock_values[:json_hash]
|
|
1360
|
+
pa_version = 'pa_version_'
|
|
1361
|
+
pa_version << rand(10 ** 5).to_s.rjust(5,'0') # 5 digit random number string
|
|
1362
|
+
json_hash ||= "{ \"values\": { \"aio_agent_build\": \"#{pa_version}\" }}"
|
|
1363
|
+
|
|
1364
|
+
allow( subject ).to receive( :master ).and_return( {} )
|
|
1365
|
+
result_mock = Object.new
|
|
1366
|
+
allow( result_mock ).to receive( :stdout ).and_return( json_hash )
|
|
1367
|
+
allow( result_mock ).to receive( :exit_code ).and_return( exit_code )
|
|
1368
|
+
allow( subject ).to receive( :on ).and_return( result_mock )
|
|
1369
|
+
end
|
|
1370
|
+
|
|
1371
|
+
it 'fails if "puppet facts" does not succeed' do
|
|
1372
|
+
test_setup( :exit_code => 1 )
|
|
1373
|
+
expect { subject.get_puppet_agent_version( {} ) }.to raise_error( ArgumentError )
|
|
1374
|
+
end
|
|
1375
|
+
|
|
1376
|
+
it 'fails if neither fact exists' do
|
|
1377
|
+
test_setup( :json_hash => "{ \"values\": {}}" )
|
|
1378
|
+
expect { subject.get_puppet_agent_version( {} ) }.to raise_error( ArgumentError )
|
|
1379
|
+
end
|
|
1380
|
+
end
|
|
1381
|
+
end
|
|
1266
1382
|
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.7.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Puppetlabs
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2016-
|
|
11
|
+
date: 2016-12-20 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rspec
|