beaker-pe 0.2.0 → 0.3.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 +164 -2
- data/lib/beaker-pe/install/pe_utils.rb +111 -9
- data/lib/beaker-pe/version.rb +1 -1
- data/spec/beaker-pe/install/pe_utils_spec.rb +259 -60
- data/spec/helpers.rb +1 -0
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
!binary "U0hBMQ==":
|
|
3
3
|
metadata.gz: !binary |-
|
|
4
|
-
|
|
4
|
+
Yzg3NzgwODgwMmQ4ZTM5YTgxZWUxZjM0MGJhOTViZTA2NjBkYmYyYw==
|
|
5
5
|
data.tar.gz: !binary |-
|
|
6
|
-
|
|
6
|
+
NDlhMTNiZDZjYzZhNGQ5NDEwNzE1ODYyMmFiZjg4M2ViZDZmYjc1OA==
|
|
7
7
|
SHA512:
|
|
8
8
|
metadata.gz: !binary |-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
ZWM3YWJlNDlmMzY0YzM0MTYzZmY3ZGJiN2E0ZmMwMmY2YjQ1MTg3MjAyNWNj
|
|
10
|
+
NjUzNmMwMTQwZWYzYmQ0ZTA1OTg5ZjIzY2VlYTQ5YTkxM2M3YzAyNzdmMTFk
|
|
11
|
+
MzRjMDgyNDgzOWY5MTVlODZkMmFjMzNjYWZjZmUyMzAzMzZlZDE=
|
|
12
12
|
data.tar.gz: !binary |-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
NWFjMDEzODdlNjU3ZGJmMmQwZmZkOTY2NTBiYmM2MjE5ODFjNTM1NDcwMTcz
|
|
14
|
+
M2QxY2YxNDRlMzc5OGMyOGYzODI2MjljNTczOGNlN2NiNDY1NGEwMGNmYjY0
|
|
15
|
+
ZTcxYWQzYWYxMGQ1N2Q0NGY1YzExM2U5OWUzZTNhMjlkODg4Nzc=
|
data/HISTORY.md
CHANGED
|
@@ -1,12 +1,174 @@
|
|
|
1
1
|
# default - History
|
|
2
2
|
## Tags
|
|
3
|
-
* [LATEST -
|
|
3
|
+
* [LATEST - 26 May, 2016 (d58ed99e)](#LATEST)
|
|
4
|
+
* [0.2.0 - 18 May, 2016 (a65f2083)](#0.2.0)
|
|
4
5
|
* [0.1.2 - 4 Apr, 2016 (a6fd7bef)](#0.1.2)
|
|
5
6
|
* [0.1.1 - 4 Apr, 2016 (8203d928)](#0.1.1)
|
|
6
7
|
* [0.1.0 - 29 Feb, 2016 (4fc88d8c)](#0.1.0)
|
|
7
8
|
|
|
8
9
|
## Details
|
|
9
|
-
### <a name = "LATEST">LATEST -
|
|
10
|
+
### <a name = "LATEST">LATEST - 26 May, 2016 (d58ed99e)
|
|
11
|
+
|
|
12
|
+
* (GEM) update beaker-pe version to 0.3.0 (d58ed99e)
|
|
13
|
+
|
|
14
|
+
* Merge pull request #5 from jpartlow/issue/master/pe-14271-wire-for-meep (55aa098f)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
Merge pull request #5 from jpartlow/issue/master/pe-14271-wire-for-meep
|
|
19
|
+
|
|
20
|
+
(PE-14271) Wire beaker-pe for meep
|
|
21
|
+
```
|
|
22
|
+
* (maint) Add some logging context for sign and agent shutdown (398882f4)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
(maint) Add some logging context for sign and agent shutdown
|
|
27
|
+
|
|
28
|
+
...steps.
|
|
29
|
+
```
|
|
30
|
+
* (PE-14271) Do not try to sign certificate for meep core hosts (e485c423)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
(PE-14271) Do not try to sign certificate for meep core hosts
|
|
35
|
+
|
|
36
|
+
Certificate is generated by meep. Step is redundant and produces failed
|
|
37
|
+
puppet agent run and puppet cert sign in log.
|
|
38
|
+
```
|
|
39
|
+
* (PE-15259) Inform BeakerAnswers if we need legacy database defaults (7ef0347d)
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
(PE-15259) Inform BeakerAnswers if we need legacy database defaults
|
|
44
|
+
|
|
45
|
+
Based on this setting, BeakerAnswers can provide legacy bash default
|
|
46
|
+
values for database user parameters in the meep hiera config. This is
|
|
47
|
+
necessary if we are upgrading from an older pe that beaker just
|
|
48
|
+
installed using the legacy script/answer defaults.
|
|
49
|
+
|
|
50
|
+
Also logs the actual answers/pe.conf file that was generated so we can
|
|
51
|
+
see what is going on.
|
|
52
|
+
```
|
|
53
|
+
* (maint) Remove unused variables from spec (61134529)
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
(maint) Remove unused variables from spec
|
|
58
|
+
|
|
59
|
+
Marked by static analysis; specs continue to pass after removal.
|
|
60
|
+
```
|
|
61
|
+
* (PE-14271) Have mock hosts return a hostname (53e90212)
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
(PE-14271) Have mock hosts return a hostname
|
|
66
|
+
|
|
67
|
+
Because BeakerAnswers sets hiera host parameters from Host#hostname, so
|
|
68
|
+
the method needs to exist in our mocks.
|
|
69
|
+
```
|
|
70
|
+
* (maint) Make the previous_pe_ver available on upgrade (0f72aaab)
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
(maint) Make the previous_pe_ver available on upgrade
|
|
75
|
+
|
|
76
|
+
Sometimes during PE upgrades we need to be able to determine what
|
|
77
|
+
version we upgraded from, to know what behavior we expect from the
|
|
78
|
+
upgrade. Prior to this change, that could only be determined by probing
|
|
79
|
+
into the original host.cfg yaml. This patch just sets it explicitly in
|
|
80
|
+
each host prior to overwriting the pe_ver with pe_upgrade_ver.
|
|
81
|
+
```
|
|
82
|
+
* (PE-14271) Adjust higgs commands to provide correct answer (f7cc8d9a)
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
(PE-14271) Adjust higgs commands to provide correct answer
|
|
87
|
+
|
|
88
|
+
...for both legacy and meep installers. The former prompts to continue
|
|
89
|
+
expecting 'Y' and the later prompts with options where '1' is intended
|
|
90
|
+
to kick off Higgs.
|
|
91
|
+
|
|
92
|
+
Also added spec coverage for these methods.
|
|
93
|
+
```
|
|
94
|
+
* (PE-14271) Adjust BeakerAnswers call for meep (6bc392ff)
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
```
|
|
98
|
+
(PE-14271) Adjust BeakerAnswers call for meep
|
|
99
|
+
|
|
100
|
+
Based on changes pending in puppetlabs/beaker-answers#16, change the
|
|
101
|
+
generate_installer_conf_file_for() method to submit the expected :format
|
|
102
|
+
option temporarily. This will go away when we cutover to meep and no
|
|
103
|
+
longer have to have both installer scripts operational in the same
|
|
104
|
+
build.
|
|
105
|
+
|
|
106
|
+
Fleshes out the specs that verify the method returns expected answer or
|
|
107
|
+
pe.conf data from BeakerAnswers, as written out via scp.
|
|
108
|
+
```
|
|
109
|
+
* (PE-14271) Prepare host installer options based on version/env (616612a6)
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
```
|
|
113
|
+
(PE-14271) Prepare host installer options based on version/env
|
|
114
|
+
|
|
115
|
+
The addition of a use_meep? query allows setting host options for either
|
|
116
|
+
legacy or meep installer. This enables installer_cmd to invoke the
|
|
117
|
+
correct installer.
|
|
118
|
+
```
|
|
119
|
+
* (maint) Remove remaining version_is_less mocks (7ea8fbcf)
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
```
|
|
123
|
+
(maint) Remove remaining version_is_less mocks
|
|
124
|
+
|
|
125
|
+
For consistency, removed the rest of the version_is_less mocks.
|
|
126
|
+
|
|
127
|
+
In the three cases where this had an impact on the specs, replaced
|
|
128
|
+
them with a concrete version setting on the test host object.
|
|
129
|
+
```
|
|
130
|
+
* (maint) Stop mocking version_is_less in do_install tests (d3e09cc1)
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
```
|
|
134
|
+
(maint) Stop mocking version_is_less in do_install tests
|
|
135
|
+
|
|
136
|
+
Each change to do_install and supporting methods involving a
|
|
137
|
+
version_is_less call was requiring additional mocking simulating
|
|
138
|
+
version_is_less's behavior. This is unnecessary given that hosts are
|
|
139
|
+
being set with a version, and actually masks behavior of the class.
|
|
140
|
+
Removing these specifically because it was causing churn when
|
|
141
|
+
introducing meep functionality.
|
|
142
|
+
```
|
|
143
|
+
* (PE-14271) Extract installer configuration methods (3071c5e9)
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
```
|
|
147
|
+
(PE-14271) Extract installer configuration methods
|
|
148
|
+
|
|
149
|
+
...from the existing code to generate answers and expand it to
|
|
150
|
+
generalize the installer settings and configuration file. Passes
|
|
151
|
+
existing specs. Will be further specialized to handle legacy/meep
|
|
152
|
+
cases.
|
|
153
|
+
```
|
|
154
|
+
* (PE-14934) Fix specs to cover changes from PE-14934 (b22c3790)
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
```
|
|
158
|
+
(PE-14934) Fix specs to cover changes from PE-14934
|
|
159
|
+
|
|
160
|
+
Introduced chagnes to the do_install method, but specs were failing
|
|
161
|
+
because of the tight coupling between expectations and counts of command
|
|
162
|
+
execution.
|
|
163
|
+
|
|
164
|
+
The need to initialize metadata comes from the fact that the previous
|
|
165
|
+
PR #3 added step() calls, which reference the TestCase metadata attr.
|
|
166
|
+
Since we aren't using an actual TestCase instance, this had to be
|
|
167
|
+
initalized separately.
|
|
168
|
+
```
|
|
169
|
+
### <a name = "0.2.0">0.2.0 - 18 May, 2016 (a65f2083)
|
|
170
|
+
|
|
171
|
+
* (HISTORY) update beaker-pe history for gem release 0.2.0 (a65f2083)
|
|
10
172
|
|
|
11
173
|
* (GEM) update beaker-pe version to 0.2.0 (d9a052a4)
|
|
12
174
|
|
|
@@ -22,6 +22,9 @@ module Beaker
|
|
|
22
22
|
include PuppetUtils
|
|
23
23
|
include WindowsUtils
|
|
24
24
|
|
|
25
|
+
# Version of PE when we switched from legacy installer to MEEP.
|
|
26
|
+
MEEP_CUTOVER_VERSION = '2016.2.0'
|
|
27
|
+
|
|
25
28
|
# @!macro [new] common_opts
|
|
26
29
|
# @param [Hash{Symbol=>String}] opts Options to alter execution.
|
|
27
30
|
# @option opts [Boolean] :silent (false) Do not produce log output
|
|
@@ -106,7 +109,7 @@ module Beaker
|
|
|
106
109
|
host.install_from_file("puppet-enterprise-#{version}-#{host['platform']}.swix")
|
|
107
110
|
else
|
|
108
111
|
pe_debug = host[:pe_debug] || opts[:pe_debug] ? ' -D' : ''
|
|
109
|
-
"cd #{host['working_dir']}/#{host['dist']} && ./#{host['pe_installer']}#{pe_debug}
|
|
112
|
+
"cd #{host['working_dir']}/#{host['dist']} && ./#{host['pe_installer']}#{pe_debug} #{host['pe_installer_conf_setting']}"
|
|
110
113
|
end
|
|
111
114
|
end
|
|
112
115
|
|
|
@@ -433,16 +436,27 @@ module Beaker
|
|
|
433
436
|
acceptable_codes = host['platform'] =~ /osx/ ? [1] : [0, 1]
|
|
434
437
|
setup_defaults_and_config_helper_on(host, master, acceptable_codes)
|
|
435
438
|
else
|
|
436
|
-
|
|
437
|
-
|
|
439
|
+
prepare_host_installer_options(host)
|
|
440
|
+
generate_installer_conf_file_for(host, hosts, opts)
|
|
438
441
|
on host, installer_cmd(host, opts)
|
|
439
442
|
configure_type_defaults_on(host)
|
|
440
443
|
end
|
|
441
444
|
end
|
|
442
445
|
|
|
443
|
-
# On each agent, we ensure the certificate is signed
|
|
444
|
-
|
|
445
|
-
|
|
446
|
+
# On each agent, we ensure the certificate is signed
|
|
447
|
+
if !masterless
|
|
448
|
+
if [master, database, dashboard].include?(host) && use_meep?(host['pe_ver'])
|
|
449
|
+
# This step is not necessary for the core pe nodes when using meep
|
|
450
|
+
else
|
|
451
|
+
step "Sign certificate for #{host}" do
|
|
452
|
+
sign_certificate_for(host)
|
|
453
|
+
end
|
|
454
|
+
end
|
|
455
|
+
end
|
|
456
|
+
# then shut down the agent
|
|
457
|
+
step "Shutting down agent for #{host}" do
|
|
458
|
+
stop_agent_on(host)
|
|
459
|
+
end
|
|
446
460
|
end
|
|
447
461
|
|
|
448
462
|
unless masterless
|
|
@@ -497,6 +511,92 @@ module Beaker
|
|
|
497
511
|
end
|
|
498
512
|
end
|
|
499
513
|
|
|
514
|
+
# True if version is greater than or equal to 2016.2.0 and the
|
|
515
|
+
# INSTALLER_TYPE environment variable is 'meep'.
|
|
516
|
+
#
|
|
517
|
+
# This will be switched to be true if >= 2016.2.0 and INSTALLER_TYPE !=
|
|
518
|
+
# 'legacy' once meep is default.
|
|
519
|
+
#
|
|
520
|
+
# And then to just >= 2016.2.0 for cutover.
|
|
521
|
+
def use_meep?(version)
|
|
522
|
+
!version_is_less(version, MEEP_CUTOVER_VERSION) && ENV['INSTALLER_TYPE'] == 'meep'
|
|
523
|
+
end
|
|
524
|
+
|
|
525
|
+
# Set installer options on the passed *host* according to current
|
|
526
|
+
# version and external INSTALLER_TYPE setting.
|
|
527
|
+
#
|
|
528
|
+
# Sets:
|
|
529
|
+
# * 'pe_installer_conf_file'
|
|
530
|
+
# * 'pe_installer_conf_setting'
|
|
531
|
+
# * 'pe_installer_type'
|
|
532
|
+
#
|
|
533
|
+
# @param [Beaker::Host] host The host object to configure
|
|
534
|
+
# @return [Beaker::Host] The same host object passed in
|
|
535
|
+
def prepare_host_installer_options(host)
|
|
536
|
+
if use_meep?(host['pe_ver'])
|
|
537
|
+
conf_file = "#{host['working_dir']}/pe.conf"
|
|
538
|
+
host['pe_installer_conf_file'] = conf_file
|
|
539
|
+
host['pe_installer_conf_setting'] = "-c #{conf_file}"
|
|
540
|
+
host['pe_installer_type'] = 'meep'
|
|
541
|
+
else
|
|
542
|
+
conf_file = "#{host['working_dir']}/answers"
|
|
543
|
+
host['pe_installer_conf_file'] = conf_file
|
|
544
|
+
host['pe_installer_conf_setting'] = "-a #{conf_file}"
|
|
545
|
+
host['pe_installer_type'] = 'legacy'
|
|
546
|
+
end
|
|
547
|
+
host
|
|
548
|
+
end
|
|
549
|
+
|
|
550
|
+
# Adds in settings needed by BeakerAnswers:
|
|
551
|
+
#
|
|
552
|
+
# * :format => :bash or :hiera depending on which legacy or meep format we need
|
|
553
|
+
# * :include_legacy_database_defaults => true or false. True
|
|
554
|
+
# indicates that we are upgrading from a legacy version and
|
|
555
|
+
# BeakerAnswers should include the database defaults for user
|
|
556
|
+
# which were set for the legacy install.
|
|
557
|
+
#
|
|
558
|
+
# @param [Beaker::Host] host that we are generating answers for
|
|
559
|
+
# @param [Hash] opts The Beaker options hash
|
|
560
|
+
# @return [Hash] a dup of the opts hash with additional settings for BeakerAnswers
|
|
561
|
+
def setup_beaker_answers_opts(host, opts)
|
|
562
|
+
beaker_answers_opts = host['pe_installer_type'] == 'meep' ?
|
|
563
|
+
{ :format => :hiera } :
|
|
564
|
+
{ :format => :bash }
|
|
565
|
+
|
|
566
|
+
beaker_answers_opts[:include_legacy_database_defaults] =
|
|
567
|
+
opts[:type] == :upgrade && !use_meep?(host['previous_pe_ver'])
|
|
568
|
+
|
|
569
|
+
opts.merge(beaker_answers_opts)
|
|
570
|
+
end
|
|
571
|
+
|
|
572
|
+
# Generates a Beaker Answers object for the passed *host* and creates
|
|
573
|
+
# the answer or pe.conf configuration file on the *host* needed for
|
|
574
|
+
# installation.
|
|
575
|
+
#
|
|
576
|
+
# Expects the host['pe_installer_conf_file'] to have been set, which is
|
|
577
|
+
# where the configuration will be written to, and expects
|
|
578
|
+
# host['pe_installer_type'] to have been set to either 'legacy' or
|
|
579
|
+
# 'meep'.
|
|
580
|
+
#
|
|
581
|
+
# @param [Beaker::Host] host The host to create a configuration file on
|
|
582
|
+
# @param [Array<Beaker::Host]> hosts All of the hosts to be configured
|
|
583
|
+
# @param [Hash] opts The Beaker options hash
|
|
584
|
+
# @return [BeakerAnswers::Answers] the generated answers object
|
|
585
|
+
def generate_installer_conf_file_for(host, hosts, opts)
|
|
586
|
+
beaker_answers_opts = setup_beaker_answers_opts(host, opts)
|
|
587
|
+
answers = BeakerAnswers::Answers.create(
|
|
588
|
+
opts[:pe_ver] || host['pe_ver'], hosts, beaker_answers_opts
|
|
589
|
+
)
|
|
590
|
+
configuration = answers.installer_configuration_string(host)
|
|
591
|
+
|
|
592
|
+
step "Generate the #{host['pe_installer_conf_file']} on #{host}" do
|
|
593
|
+
logger.debug(configuration)
|
|
594
|
+
create_remote_file(host, host['pe_installer_conf_file'], configuration)
|
|
595
|
+
end
|
|
596
|
+
|
|
597
|
+
answers
|
|
598
|
+
end
|
|
599
|
+
|
|
500
600
|
# Builds the agent_only and not_agent_only arrays needed for installation.
|
|
501
601
|
#
|
|
502
602
|
# @param [Array<Host>] hosts hosts to split up into the arrays
|
|
@@ -657,6 +757,7 @@ module Beaker
|
|
|
657
757
|
# prep_host_for_upgrade(master, {}, "http://neptune.puppetlabs.lan/3.0/ci-ready/")
|
|
658
758
|
def prep_host_for_upgrade(host, opts={}, path='')
|
|
659
759
|
host['pe_dir'] = host['pe_upgrade_dir'] || path
|
|
760
|
+
host['previous_pe_ver'] = host['pe_ver']
|
|
660
761
|
if host['platform'] =~ /windows/
|
|
661
762
|
host['pe_ver'] = host['pe_upgrade_ver'] || opts['pe_upgrade_ver'] ||
|
|
662
763
|
Options::PEVersionScraper.load_pe_version(host['pe_dir'], opts[:pe_version_file_win])
|
|
@@ -675,9 +776,8 @@ module Beaker
|
|
|
675
776
|
# The host object must have the 'working_dir', 'dist' and 'pe_installer' field set correctly.
|
|
676
777
|
# @api private
|
|
677
778
|
def higgs_installer_cmd host
|
|
678
|
-
|
|
679
|
-
"cd #{host['working_dir']}/#{host['dist']} ; nohup ./#{host['pe_installer']}
|
|
680
|
-
|
|
779
|
+
higgs_answer = host['pe_installer_type'] == 'meep' ? '1' : 'Y'
|
|
780
|
+
"cd #{host['working_dir']}/#{host['dist']} ; nohup ./#{host['pe_installer']} <<<#{higgs_answer} > #{host['higgs_file']} 2>&1 &"
|
|
681
781
|
end
|
|
682
782
|
|
|
683
783
|
#Perform a Puppet Enterprise Higgs install up until web browser interaction is required, runs on linux hosts only.
|
|
@@ -710,6 +810,8 @@ module Beaker
|
|
|
710
810
|
fetch_pe([host], opts)
|
|
711
811
|
|
|
712
812
|
host['higgs_file'] = "higgs_#{File.basename(host['working_dir'])}.log"
|
|
813
|
+
|
|
814
|
+
prepare_host_installer_options(host)
|
|
713
815
|
on host, higgs_installer_cmd(host), opts
|
|
714
816
|
|
|
715
817
|
#wait for output to host['higgs_file']
|
data/lib/beaker-pe/version.rb
CHANGED
|
@@ -10,7 +10,11 @@ class ClassMixedWithDSLInstallUtils
|
|
|
10
10
|
include Beaker::DSL::Patterns
|
|
11
11
|
include Beaker::DSL::PE
|
|
12
12
|
|
|
13
|
-
attr_accessor :hosts
|
|
13
|
+
attr_accessor :hosts, :metadata
|
|
14
|
+
|
|
15
|
+
def initialize
|
|
16
|
+
@metadata = {}
|
|
17
|
+
end
|
|
14
18
|
|
|
15
19
|
# Because some the methods now actually call out to the `step` method, we need to
|
|
16
20
|
# mock out `metadata` that is initialized in a test case.
|
|
@@ -46,7 +50,7 @@ describe ClassMixedWithDSLInstallUtils do
|
|
|
46
50
|
:working_dir => '/tmp' } ) }
|
|
47
51
|
let(:unixhost) { make_host( 'unixhost', { :platform => 'linux',
|
|
48
52
|
:pe_ver => '3.0',
|
|
49
|
-
|
|
53
|
+
:type => 'pe',
|
|
50
54
|
:working_dir => '/tmp',
|
|
51
55
|
:dist => 'puppet-enterprise-3.1.0-rc0-230-g36c9e5c-debian-7-i386' } ) }
|
|
52
56
|
let(:eoshost) { make_host( 'eoshost', { :platform => 'eos',
|
|
@@ -188,26 +192,27 @@ describe ClassMixedWithDSLInstallUtils do
|
|
|
188
192
|
it 'generates a unix PE install command for a unix host' do
|
|
189
193
|
the_host = unixhost.dup
|
|
190
194
|
the_host['pe_installer'] = 'puppet-enterprise-installer'
|
|
195
|
+
the_host['pe_installer_conf_setting'] = '-a /tmp/answers'
|
|
191
196
|
expect( subject.installer_cmd( the_host, {} ) ).to be === "cd /tmp/puppet-enterprise-3.1.0-rc0-230-g36c9e5c-debian-7-i386 && ./puppet-enterprise-installer -a /tmp/answers"
|
|
192
197
|
end
|
|
193
198
|
|
|
194
199
|
it 'generates a unix PE frictionless install command for a unix host with role "frictionless"' do
|
|
195
|
-
allow( subject ).to receive( :version_is_less ).and_return( false )
|
|
196
200
|
allow( subject ).to receive( :master ).and_return( 'testmaster' )
|
|
197
201
|
the_host = unixhost.dup
|
|
202
|
+
the_host['pe_ver'] = '3.8.0'
|
|
198
203
|
the_host['pe_installer'] = 'puppet-enterprise-installer'
|
|
199
204
|
the_host['roles'] = ['frictionless']
|
|
200
|
-
expect( subject.installer_cmd( the_host, {} ) ).to be === "cd /tmp && curl --tlsv1 -kO https://testmaster:8140/packages/3.0/install.bash && bash install.bash"
|
|
205
|
+
expect( subject.installer_cmd( the_host, {} ) ).to be === "cd /tmp && curl --tlsv1 -kO https://testmaster:8140/packages/3.8.0/install.bash && bash install.bash"
|
|
201
206
|
end
|
|
202
207
|
|
|
203
208
|
it 'generates a unix PE frictionless install command for a unix host with role "frictionless" and "frictionless_options"' do
|
|
204
|
-
allow( subject ).to receive( :version_is_less ).and_return( false )
|
|
205
209
|
allow( subject ).to receive( :master ).and_return( 'testmaster' )
|
|
206
210
|
the_host = unixhost.dup
|
|
211
|
+
the_host['pe_ver'] = '3.8.0'
|
|
207
212
|
the_host['pe_installer'] = 'puppet-enterprise-installer'
|
|
208
213
|
the_host['roles'] = ['frictionless']
|
|
209
214
|
the_host['frictionless_options'] = { 'main' => { 'dns_alt_names' => 'puppet' } }
|
|
210
|
-
expect( subject.installer_cmd( the_host, {} ) ).to be === "cd /tmp && curl --tlsv1 -kO https://testmaster:8140/packages/3.0/install.bash && bash install.bash main:dns_alt_names=puppet"
|
|
215
|
+
expect( subject.installer_cmd( the_host, {} ) ).to be === "cd /tmp && curl --tlsv1 -kO https://testmaster:8140/packages/3.8.0/install.bash && bash install.bash main:dns_alt_names=puppet"
|
|
211
216
|
end
|
|
212
217
|
|
|
213
218
|
it 'generates a osx PE install command for a osx host' do
|
|
@@ -225,6 +230,7 @@ describe ClassMixedWithDSLInstallUtils do
|
|
|
225
230
|
it 'generates a unix PE install command in verbose for a unix host when pe_debug is enabled' do
|
|
226
231
|
the_host = unixhost.dup
|
|
227
232
|
the_host['pe_installer'] = 'puppet-enterprise-installer'
|
|
233
|
+
the_host['pe_installer_conf_setting'] = '-a /tmp/answers'
|
|
228
234
|
the_host[:pe_debug] = true
|
|
229
235
|
expect( subject.installer_cmd( the_host, {} ) ).to be === "cd /tmp/puppet-enterprise-3.1.0-rc0-230-g36c9e5c-debian-7-i386 && ./puppet-enterprise-installer -D -a /tmp/answers"
|
|
230
236
|
end
|
|
@@ -237,17 +243,241 @@ describe ClassMixedWithDSLInstallUtils do
|
|
|
237
243
|
end
|
|
238
244
|
|
|
239
245
|
it 'generates a unix PE frictionless install command in verbose for a unix host with role "frictionless" and pe_debug is enabled' do
|
|
240
|
-
allow( subject ).to receive( :version_is_less ).and_return( false )
|
|
241
246
|
allow( subject ).to receive( :master ).and_return( 'testmaster' )
|
|
242
247
|
the_host = unixhost.dup
|
|
248
|
+
the_host['pe_ver'] = '3.8.0'
|
|
243
249
|
the_host['pe_installer'] = 'puppet-enterprise-installer'
|
|
244
250
|
the_host['roles'] = ['frictionless']
|
|
245
251
|
the_host[:pe_debug] = true
|
|
246
|
-
expect( subject.installer_cmd( the_host, {} ) ).to be === "cd /tmp && curl --tlsv1 -kO https://testmaster:8140/packages/3.0/install.bash && bash -x install.bash"
|
|
252
|
+
expect( subject.installer_cmd( the_host, {} ) ).to be === "cd /tmp && curl --tlsv1 -kO https://testmaster:8140/packages/3.8.0/install.bash && bash -x install.bash"
|
|
253
|
+
end
|
|
254
|
+
|
|
255
|
+
end
|
|
256
|
+
|
|
257
|
+
describe 'higgs installer' do
|
|
258
|
+
let(:host) { unixhost }
|
|
259
|
+
let(:higgs_regex) { %r{cd .* ; nohup \./puppet-enterprise-installer <<<#{higgs_answer} .*} }
|
|
260
|
+
before(:each) do
|
|
261
|
+
host['pe_installer'] = 'puppet-enterprise-installer'
|
|
262
|
+
end
|
|
263
|
+
|
|
264
|
+
def prep_host(host)
|
|
265
|
+
allow(subject).to receive(:sleep)
|
|
266
|
+
allow(host).to receive(:tmpdir).and_return('/tmp')
|
|
267
|
+
allow(subject).to receive(:fetch_pe)
|
|
268
|
+
expect(subject).to receive(:on).with(host, higgs_regex, opts).once
|
|
269
|
+
result = double(Beaker::Result, :stdout => 'Please go to https://somewhere in your browser to continue installation')
|
|
270
|
+
expect(subject).to receive(:on).with(host, %r{cd .* && cat .*}, anything)
|
|
271
|
+
.and_return(result)
|
|
272
|
+
end
|
|
273
|
+
|
|
274
|
+
context 'for legacy installer' do
|
|
275
|
+
let(:higgs_answer) { 'Y' }
|
|
276
|
+
|
|
277
|
+
context 'the higgs_installer_cmd' do
|
|
278
|
+
it 'returns correct command to invoke Higgs' do
|
|
279
|
+
expect(subject.higgs_installer_cmd(host)).to match(higgs_regex)
|
|
280
|
+
end
|
|
281
|
+
end
|
|
282
|
+
|
|
283
|
+
context 'the do_higgs_install' do
|
|
284
|
+
it 'submits the correct installer cmd to invoke Higgs' do
|
|
285
|
+
prep_host(host)
|
|
286
|
+
subject.do_higgs_install(host, opts)
|
|
287
|
+
end
|
|
288
|
+
end
|
|
289
|
+
end
|
|
290
|
+
|
|
291
|
+
context 'for meep installer' do
|
|
292
|
+
let(:higgs_answer) { '1' }
|
|
293
|
+
|
|
294
|
+
before(:each) do
|
|
295
|
+
ENV['INSTALLER_TYPE'] = 'meep'
|
|
296
|
+
host['pe_ver'] = '2016.2.0'
|
|
297
|
+
end
|
|
298
|
+
|
|
299
|
+
after(:each) do
|
|
300
|
+
ENV.delete('INSTALLER_TYPE')
|
|
301
|
+
end
|
|
302
|
+
|
|
303
|
+
context 'the higgs_installer_cmd' do
|
|
304
|
+
it 'submits correct command to invoke Higgs' do
|
|
305
|
+
subject.prepare_host_installer_options(host)
|
|
306
|
+
expect(subject.higgs_installer_cmd(host)).to match(higgs_regex)
|
|
307
|
+
end
|
|
308
|
+
end
|
|
309
|
+
|
|
310
|
+
context 'the do_higgs_install' do
|
|
311
|
+
it 'submits the correct installer cmd to invoke Higgs' do
|
|
312
|
+
prep_host(host)
|
|
313
|
+
subject.do_higgs_install(host, opts)
|
|
314
|
+
end
|
|
315
|
+
end
|
|
316
|
+
end
|
|
317
|
+
end
|
|
318
|
+
|
|
319
|
+
describe 'prepare_host_installer_options' do
|
|
320
|
+
let(:legacy_settings) do
|
|
321
|
+
{
|
|
322
|
+
:pe_installer_conf_file => '/tmp/answers',
|
|
323
|
+
:pe_installer_conf_setting => '-a /tmp/answers',
|
|
324
|
+
:pe_installer_type => 'legacy',
|
|
325
|
+
}
|
|
326
|
+
end
|
|
327
|
+
let(:meep_settings) do
|
|
328
|
+
{
|
|
329
|
+
:pe_installer_conf_file => '/tmp/pe.conf',
|
|
330
|
+
:pe_installer_conf_setting => '-c /tmp/pe.conf',
|
|
331
|
+
:pe_installer_type => 'meep',
|
|
332
|
+
}
|
|
333
|
+
end
|
|
334
|
+
let(:installer_type) { nil }
|
|
335
|
+
let(:host) { unixhost }
|
|
336
|
+
|
|
337
|
+
before(:each) do
|
|
338
|
+
ENV['INSTALLER_TYPE'] = installer_type
|
|
339
|
+
host['pe_ver'] = pe_ver
|
|
340
|
+
subject.prepare_host_installer_options(host)
|
|
341
|
+
end
|
|
342
|
+
|
|
343
|
+
after(:each) do
|
|
344
|
+
ENV.delete('INSTALLER_TYPE')
|
|
345
|
+
end
|
|
346
|
+
|
|
347
|
+
def slice_installer_options(host)
|
|
348
|
+
host.select { |k,v| [ :pe_installer_conf_file, :pe_installer_conf_setting, :pe_installer_type].include?(k) }
|
|
349
|
+
end
|
|
350
|
+
|
|
351
|
+
context 'when version < 2016.2.0' do
|
|
352
|
+
let(:pe_ver) { '3.8.5' }
|
|
353
|
+
|
|
354
|
+
it 'sets legacy settings' do
|
|
355
|
+
expect(slice_installer_options(host)).to eq(legacy_settings)
|
|
356
|
+
end
|
|
357
|
+
|
|
358
|
+
context 'and ENV["INSTALLER"]=="meep"' do
|
|
359
|
+
let(:installer_type) { 'meep' }
|
|
360
|
+
|
|
361
|
+
it 'still sets legacy settings' do
|
|
362
|
+
expect(slice_installer_options(host)).to eq(legacy_settings)
|
|
363
|
+
end
|
|
364
|
+
end
|
|
247
365
|
end
|
|
248
366
|
|
|
367
|
+
context 'when version >= 2016.2.0' do
|
|
368
|
+
let (:pe_ver) { '2016.2.0' }
|
|
369
|
+
|
|
370
|
+
context 'and ENV["INSTALLER_TYPE"]=="legacy"' do
|
|
371
|
+
let(:installer_type) { 'legacy' }
|
|
372
|
+
|
|
373
|
+
it 'sets legacy settings' do
|
|
374
|
+
expect(slice_installer_options(host)).to eq(legacy_settings)
|
|
375
|
+
end
|
|
376
|
+
end
|
|
377
|
+
|
|
378
|
+
context 'and ENV["INSTALLER_TYPE"]=="meep"' do
|
|
379
|
+
let(:installer_type) { 'meep' }
|
|
380
|
+
|
|
381
|
+
it 'sets meep settings' do
|
|
382
|
+
expect(slice_installer_options(host)).to eq(meep_settings)
|
|
383
|
+
end
|
|
384
|
+
end
|
|
385
|
+
end
|
|
249
386
|
end
|
|
250
387
|
|
|
388
|
+
describe 'generate_installer_conf_file_for' do
|
|
389
|
+
let(:master) { hosts.first }
|
|
390
|
+
|
|
391
|
+
it 'generates a legacy answer file if host["pe_installer_type"]=="legacy"' do
|
|
392
|
+
master['pe_installer_conf_file'] = '/tmp/answers'
|
|
393
|
+
master['pe_installer_type'] = 'legacy'
|
|
394
|
+
expect(subject).to receive(:create_remote_file).with(
|
|
395
|
+
master,
|
|
396
|
+
'/tmp/answers',
|
|
397
|
+
%r{q_install=y.*q_puppetmaster_certname=#{master}}m
|
|
398
|
+
)
|
|
399
|
+
subject.generate_installer_conf_file_for(master, hosts, opts)
|
|
400
|
+
end
|
|
401
|
+
|
|
402
|
+
it 'generates a meep config file if host["pe_installer_type"]=="meep"' do
|
|
403
|
+
master['pe_installer_conf_file'] = '/tmp/pe.conf'
|
|
404
|
+
master['pe_installer_type'] = 'meep'
|
|
405
|
+
master['pe_ver'] = '2016.2.0'
|
|
406
|
+
expect(subject).to receive(:create_remote_file).with(
|
|
407
|
+
master,
|
|
408
|
+
'/tmp/pe.conf',
|
|
409
|
+
%r{\{.*"puppet_enterprise::puppet_master_host": "#{master.hostname}"}m
|
|
410
|
+
)
|
|
411
|
+
subject.generate_installer_conf_file_for(master, hosts, opts)
|
|
412
|
+
end
|
|
413
|
+
end
|
|
414
|
+
|
|
415
|
+
describe 'setup_beaker_answers_opts' do
|
|
416
|
+
let(:opts) { {} }
|
|
417
|
+
let(:host) { hosts.first }
|
|
418
|
+
|
|
419
|
+
context 'for legacy installer' do
|
|
420
|
+
it 'adds option for bash format' do
|
|
421
|
+
host['pe_installer_type'] = 'legacy'
|
|
422
|
+
expect(subject.setup_beaker_answers_opts(host, opts)).to eq(
|
|
423
|
+
opts.merge(
|
|
424
|
+
:format => :bash,
|
|
425
|
+
:include_legacy_database_defaults => false,
|
|
426
|
+
)
|
|
427
|
+
)
|
|
428
|
+
end
|
|
429
|
+
end
|
|
430
|
+
|
|
431
|
+
context 'for meep installer' do
|
|
432
|
+
before(:each) do
|
|
433
|
+
ENV['INSTALLER_TYPE'] = 'meep'
|
|
434
|
+
host['pe_ver'] = '2016.2.0'
|
|
435
|
+
host['pe_installer_type'] = 'meep'
|
|
436
|
+
end
|
|
437
|
+
|
|
438
|
+
after(:each) do
|
|
439
|
+
ENV.delete('INSTALLER_TYPE')
|
|
440
|
+
end
|
|
441
|
+
|
|
442
|
+
it 'adds option for hiera format' do
|
|
443
|
+
expect(subject.setup_beaker_answers_opts(host, opts)).to eq(
|
|
444
|
+
opts.merge(
|
|
445
|
+
:format => :hiera,
|
|
446
|
+
:include_legacy_database_defaults => false,
|
|
447
|
+
)
|
|
448
|
+
)
|
|
449
|
+
end
|
|
450
|
+
|
|
451
|
+
context 'when upgrading' do
|
|
452
|
+
let(:opts) { { :type => :upgrade } }
|
|
453
|
+
|
|
454
|
+
context 'from meep' do
|
|
455
|
+
it 'sets legacy password defaults false' do
|
|
456
|
+
host['pe_ver'] = '2016.2.1'
|
|
457
|
+
host['previous_pe_ver'] = '2016.2.0'
|
|
458
|
+
expect(subject.setup_beaker_answers_opts(host, opts)).to eq(
|
|
459
|
+
opts.merge(
|
|
460
|
+
:format => :hiera,
|
|
461
|
+
:include_legacy_database_defaults => false,
|
|
462
|
+
)
|
|
463
|
+
)
|
|
464
|
+
end
|
|
465
|
+
end
|
|
466
|
+
|
|
467
|
+
context 'from legacy' do
|
|
468
|
+
it 'sets legacy password defaults to true' do
|
|
469
|
+
host['previous_pe_ver'] = '3.8.5'
|
|
470
|
+
expect(subject.setup_beaker_answers_opts(host, opts)).to eq(
|
|
471
|
+
opts.merge(
|
|
472
|
+
:format => :hiera,
|
|
473
|
+
:include_legacy_database_defaults => true,
|
|
474
|
+
)
|
|
475
|
+
)
|
|
476
|
+
end
|
|
477
|
+
end
|
|
478
|
+
end
|
|
479
|
+
end
|
|
480
|
+
end
|
|
251
481
|
|
|
252
482
|
describe 'fetch_pe' do
|
|
253
483
|
|
|
@@ -295,7 +525,6 @@ describe ClassMixedWithDSLInstallUtils do
|
|
|
295
525
|
end
|
|
296
526
|
allow( subject ).to receive( :on ).and_return( true )
|
|
297
527
|
|
|
298
|
-
path = unixhost['pe_dir']
|
|
299
528
|
filename = "#{ unixhost['dist'] }"
|
|
300
529
|
extension = '.tar'
|
|
301
530
|
expect( subject ).to receive( :fetch_and_push_pe ).with( unixhost, anything, filename, extension ).once
|
|
@@ -320,7 +549,6 @@ describe ClassMixedWithDSLInstallUtils do
|
|
|
320
549
|
allow( subject ).to receive( :link_exists? ).and_return( true ) #is a tar.gz
|
|
321
550
|
allow( subject ).to receive( :on ).and_return( true )
|
|
322
551
|
|
|
323
|
-
path = unixhost['pe_dir']
|
|
324
552
|
filename = "#{ unixhost['dist'] }"
|
|
325
553
|
extension = '.tar.gz'
|
|
326
554
|
expect( subject ).to receive( :fetch_and_push_pe ).with( unixhost, anything, filename, extension ).once
|
|
@@ -380,7 +608,6 @@ describe ClassMixedWithDSLInstallUtils do
|
|
|
380
608
|
|
|
381
609
|
expect( subject).to_not receive(:scp_to)
|
|
382
610
|
expect( subject).to_not receive(:on)
|
|
383
|
-
allow( subject ).to receive(:version_is_less).with('3.2.0', '3.2.0').and_return(false)
|
|
384
611
|
subject.fetch_pe( [unixhost], {} )
|
|
385
612
|
end
|
|
386
613
|
end
|
|
@@ -394,13 +621,6 @@ describe ClassMixedWithDSLInstallUtils do
|
|
|
394
621
|
allow( subject ).to receive( :stop_agent_on ).and_return( true )
|
|
395
622
|
allow( subject ).to receive( :sleep_until_puppetdb_started ).and_return( true )
|
|
396
623
|
allow( subject ).to receive( :max_version ).with(anything, '3.8').and_return('3.0')
|
|
397
|
-
allow( subject ).to receive( :version_is_less ).with('3.0', '4.0').and_return( true )
|
|
398
|
-
allow( subject ).to receive( :version_is_less ).with('3.0', '3.4').and_return( true )
|
|
399
|
-
allow( subject ).to receive( :version_is_less ).with('3.0', '3.0').and_return( false )
|
|
400
|
-
allow( subject ).to receive( :version_is_less ).with('3.0', '3.99').and_return( true )
|
|
401
|
-
allow( subject ).to receive( :version_is_less ).with('3.99', '3.0').and_return( false )
|
|
402
|
-
allow( subject ).to receive( :check_puppetdb_status_endpoint ).and_return( nil )
|
|
403
|
-
allow( subject ).to receive( :version_is_less ).with('3.0', '2016.1.0').and_return( false )
|
|
404
624
|
allow( subject ).to receive( :wait_for_host_in_dashboard ).and_return( true )
|
|
405
625
|
allow( subject ).to receive( :puppet_agent ) do |arg|
|
|
406
626
|
"puppet agent #{arg}"
|
|
@@ -438,7 +658,7 @@ describe ClassMixedWithDSLInstallUtils do
|
|
|
438
658
|
expect( subject ).to receive( :stop_agent_on ).with( hosts[3] ).once
|
|
439
659
|
# We wait for puppetdb to restart 3 times; once before the first puppet run, and then during each puppet run
|
|
440
660
|
expect( subject ).to receive( :sleep_until_puppetdb_started ).with( hosts[0] ).exactly(3).times
|
|
441
|
-
#
|
|
661
|
+
#run each puppet agent (also captures the final run below)
|
|
442
662
|
expect( subject ).to receive( :on ).with( hosts[0], /puppet agent -t/, :acceptable_exit_codes => [0,2] ).twice
|
|
443
663
|
expect( subject ).to receive( :on ).with( hosts[1], /puppet agent -t/, :acceptable_exit_codes => [0,2] ).twice
|
|
444
664
|
expect( subject ).to receive( :on ).with( hosts[2], /puppet agent -t/, :acceptable_exit_codes => [0,2] ).twice
|
|
@@ -446,6 +666,9 @@ describe ClassMixedWithDSLInstallUtils do
|
|
|
446
666
|
#run rake task on dashboard
|
|
447
667
|
|
|
448
668
|
expect( subject ).to receive( :on ).with( hosts[0], /\/opt\/puppet\/bin\/rake -sf \/opt\/puppet\/share\/puppet-dashboard\/Rakefile .* RAILS_ENV=production/ ).once
|
|
669
|
+
#wait for all hosts to appear in the dashboard
|
|
670
|
+
#run puppet agent now that installation is complete
|
|
671
|
+
# This is captured above (run each puppet agent)
|
|
449
672
|
|
|
450
673
|
hosts.each do |host|
|
|
451
674
|
allow( host ).to receive( :tmpdir )
|
|
@@ -468,9 +691,6 @@ describe ClassMixedWithDSLInstallUtils do
|
|
|
468
691
|
allow( subject ).to receive( :create_remote_file ).and_return( true )
|
|
469
692
|
allow( subject ).to receive( :stop_agent_on ).and_return( true )
|
|
470
693
|
allow( subject ).to receive( :max_version ).with(['3.0'], '3.8').and_return('3.0')
|
|
471
|
-
allow( subject ).to receive( :version_is_less ).with('3.99', '3.0').and_return( false )
|
|
472
|
-
allow( subject ).to receive( :version_is_less ).with(anything, '3.2.0').exactly(hosts.length + 1).times.and_return( false )
|
|
473
|
-
allow( subject ).to receive( :version_is_less ).with(anything, '4.0').exactly(hosts.length + 1).times.and_return( true )
|
|
474
694
|
|
|
475
695
|
expect( subject ).to receive( :on ).with( hosts[0], /puppet-enterprise-installer/ ).once
|
|
476
696
|
expect( subject ).to receive( :create_remote_file ).with( hosts[0], /answers/, /q/ ).once
|
|
@@ -506,14 +726,6 @@ describe ClassMixedWithDSLInstallUtils do
|
|
|
506
726
|
allow( subject ).to receive( :stop_agent_on ).and_return( true )
|
|
507
727
|
allow( subject ).to receive( :sleep_until_puppetdb_started ).and_return( true )
|
|
508
728
|
allow( subject ).to receive( :max_version ).with(anything, '3.8').and_return('4.0')
|
|
509
|
-
allow( subject ).to receive( :version_is_less ).with('4.0', '4.0').and_return( false )
|
|
510
|
-
allow( subject ).to receive( :version_is_less ).with('4.0', '3.4').and_return( false )
|
|
511
|
-
allow( subject ).to receive( :version_is_less ).with('4.0', '3.0').and_return( false )
|
|
512
|
-
allow( subject ).to receive( :version_is_less ).with('3.99', '4.0').and_return( true )
|
|
513
|
-
# pe_ver is only set on the hosts for this test, not the opt
|
|
514
|
-
allow( subject ).to receive( :version_is_less ).with('4.0', '3.99').and_return( true )
|
|
515
|
-
allow( subject ).to receive( :version_is_less ).with('4.0', '2016.1.0').and_return( false )
|
|
516
|
-
allow( subject ).to receive( :check_puppetdb_status_endpoint ).and_return( nil )
|
|
517
729
|
allow( subject ).to receive( :wait_for_host_in_dashboard ).and_return( true )
|
|
518
730
|
allow( subject ).to receive( :puppet_agent ) do |arg|
|
|
519
731
|
"puppet agent #{arg}"
|
|
@@ -540,6 +752,9 @@ describe ClassMixedWithDSLInstallUtils do
|
|
|
540
752
|
end
|
|
541
753
|
# We wait for puppetdb to restart 3 times; once before the first puppet run, and then during each puppet run
|
|
542
754
|
expect( subject ).to receive( :sleep_until_puppetdb_started ).with( hosts[0] ).exactly(3).times
|
|
755
|
+
#wait for all hosts to appear in the dashboard
|
|
756
|
+
#run puppet agent now that installation is complete
|
|
757
|
+
# tested above in the hosts loop ^^
|
|
543
758
|
|
|
544
759
|
hosts.each do |host|
|
|
545
760
|
allow( host ).to receive( :tmpdir )
|
|
@@ -568,15 +783,6 @@ describe ClassMixedWithDSLInstallUtils do
|
|
|
568
783
|
allow( subject ).to receive( :stop_agent_on ).and_return( true )
|
|
569
784
|
allow( subject ).to receive( :sleep_until_puppetdb_started ).and_return( true )
|
|
570
785
|
allow( subject ).to receive( :max_version ).with(anything, '3.8').and_return('4.0')
|
|
571
|
-
allow( subject ).to receive( :version_is_less ).with('4.0', '4.0').and_return( false )
|
|
572
|
-
allow( subject ).to receive( :version_is_less ).with('4.0', '3.4').and_return( false )
|
|
573
|
-
allow( subject ).to receive( :version_is_less ).with('4.0', '3.0').and_return( false )
|
|
574
|
-
allow( subject ).to receive( :version_is_less ).with('3.99', '4.0').and_return( true )
|
|
575
|
-
allow( subject ).to receive( :version_is_less ).with('3.8', '4.0').and_return( true )
|
|
576
|
-
# pe_ver is only set on the hosts for this test, not the opt
|
|
577
|
-
allow( subject ).to receive( :version_is_less ).with('4.0', '2016.1.0').and_return( false )
|
|
578
|
-
allow( subject ).to receive( :check_puppetdb_status_endpoint ).and_return( nil )
|
|
579
|
-
allow( subject ).to receive( :version_is_less ).with('4.0', '3.99').and_return( true )
|
|
580
786
|
allow( subject ).to receive( :wait_for_host_in_dashboard ).and_return( true )
|
|
581
787
|
allow( subject ).to receive( :puppet_agent ) do |arg|
|
|
582
788
|
"puppet agent #{arg}"
|
|
@@ -602,6 +808,9 @@ describe ClassMixedWithDSLInstallUtils do
|
|
|
602
808
|
end
|
|
603
809
|
# We wait for puppetdb to restart 3 times; once before the first puppet run, and then during each puppet run
|
|
604
810
|
expect( subject ).to receive( :sleep_until_puppetdb_started ).with( hosts[0] ).exactly(3).times
|
|
811
|
+
#wait for all hosts to appear in the dashboard
|
|
812
|
+
#run puppet agent now that installation is complete
|
|
813
|
+
# tested above in the hosts loop ^^
|
|
605
814
|
|
|
606
815
|
hosts.each do |host|
|
|
607
816
|
allow( host ).to receive( :tmpdir )
|
|
@@ -613,6 +822,7 @@ describe ClassMixedWithDSLInstallUtils do
|
|
|
613
822
|
|
|
614
823
|
it 'sets puppet-agent acceptable_exit_codes correctly for config helper on upgrade' do
|
|
615
824
|
hosts = make_hosts({
|
|
825
|
+
:previous_pe_ver => '3.0',
|
|
616
826
|
:pe_ver => '4.0',
|
|
617
827
|
:roles => ['agent'],
|
|
618
828
|
}, 2)
|
|
@@ -628,15 +838,6 @@ describe ClassMixedWithDSLInstallUtils do
|
|
|
628
838
|
allow( subject ).to receive( :stop_agent_on ).and_return( true )
|
|
629
839
|
allow( subject ).to receive( :sleep_until_puppetdb_started ).and_return( true )
|
|
630
840
|
allow( subject ).to receive( :max_version ).with(anything, '3.8').and_return('4.0')
|
|
631
|
-
allow( subject ).to receive( :version_is_less ).with('4.0', '4.0').and_return( false )
|
|
632
|
-
allow( subject ).to receive( :version_is_less ).with('4.0', '3.4').and_return( false )
|
|
633
|
-
allow( subject ).to receive( :version_is_less ).with('4.0', '3.0').and_return( false )
|
|
634
|
-
allow( subject ).to receive( :version_is_less ).with('3.99', '4.0').and_return( true )
|
|
635
|
-
allow( subject ).to receive( :version_is_less ).with('3.8', '4.0').and_return( true )
|
|
636
|
-
# pe_ver is only set on the hosts for this test, not the opt
|
|
637
|
-
allow( subject ).to receive( :version_is_less ).with('4.0', '3.99').and_return( true )
|
|
638
|
-
allow( subject ).to receive( :version_is_less ).with('4.0', '2016.1.0').and_return( false )
|
|
639
|
-
allow( subject ).to receive( :check_puppetdb_status_endpoint ).and_return( nil )
|
|
640
841
|
allow( subject ).to receive( :wait_for_host_in_dashboard ).and_return( true )
|
|
641
842
|
allow( subject ).to receive( :puppet_agent ) do |arg|
|
|
642
843
|
"puppet agent #{arg}"
|
|
@@ -783,9 +984,6 @@ describe ClassMixedWithDSLInstallUtils do
|
|
|
783
984
|
the_hosts = [ hosts[0].dup, hosts[1].dup, hosts[2].dup ]
|
|
784
985
|
allow( subject ).to receive( :hosts ).and_return( the_hosts )
|
|
785
986
|
allow( subject ).to receive( :options ).and_return( {} )
|
|
786
|
-
allow( subject ).to receive( :version_is_less ).with('3.0', '3.4.0').and_return( true )
|
|
787
|
-
allow( subject ).to receive( :version_is_less ).with('2.8', '3.0').and_return( true )
|
|
788
|
-
version = version_win = '2.8'
|
|
789
987
|
path = "/path/to/upgradepkg"
|
|
790
988
|
expect( subject ).to receive( :do_install ).with( the_hosts, {:type=>:upgrade, :set_console_password=>true} )
|
|
791
989
|
subject.upgrade_pe( path )
|
|
@@ -800,9 +998,6 @@ describe ClassMixedWithDSLInstallUtils do
|
|
|
800
998
|
the_hosts = [ hosts[0].dup, hosts[1].dup, hosts[2].dup ]
|
|
801
999
|
allow( subject ).to receive( :hosts ).and_return( the_hosts )
|
|
802
1000
|
allow( subject ).to receive( :options ).and_return( {} )
|
|
803
|
-
allow( subject ).to receive( :version_is_less ).with('3.0', '3.4.0').and_return( true )
|
|
804
|
-
allow( subject ).to receive( :version_is_less ).with('3.1', '3.0').and_return( false )
|
|
805
|
-
version = version_win = '3.1'
|
|
806
1001
|
path = "/path/to/upgradepkg"
|
|
807
1002
|
expect( subject ).to receive( :do_install ).with( the_hosts, {:type=>:upgrade, :set_console_password=>true} )
|
|
808
1003
|
subject.upgrade_pe( path )
|
|
@@ -817,9 +1012,6 @@ describe ClassMixedWithDSLInstallUtils do
|
|
|
817
1012
|
the_hosts = [ hosts[0].dup, hosts[1].dup, hosts[2].dup ]
|
|
818
1013
|
allow( subject ).to receive( :hosts ).and_return( the_hosts )
|
|
819
1014
|
allow( subject ).to receive( :options ).and_return( {} )
|
|
820
|
-
allow( subject ).to receive( :version_is_less ).with('3.0', '3.4.0').and_return( true )
|
|
821
|
-
allow( subject ).to receive( :version_is_less ).with('2.8', '3.0').and_return( true )
|
|
822
|
-
version = version_win = '2.8'
|
|
823
1015
|
path = "/path/to/upgradepkg"
|
|
824
1016
|
expect( subject ).to receive( :do_install ).with( the_hosts, {:type=>:upgrade, :set_console_password=>true} )
|
|
825
1017
|
subject.upgrade_pe( path )
|
|
@@ -832,15 +1024,22 @@ describe ClassMixedWithDSLInstallUtils do
|
|
|
832
1024
|
allow( Beaker::Options::PEVersionScraper ).to receive( :load_pe_version ).and_return( '3.1' )
|
|
833
1025
|
allow( Beaker::Options::PEVersionScraper ).to receive( :load_pe_version_win ).and_return( '3.1' )
|
|
834
1026
|
allow( subject ).to receive( :hosts ).and_return( hosts )
|
|
835
|
-
allow( subject ).to receive( :version_is_less ).with('3.0', '3.4.0').and_return( true )
|
|
836
|
-
allow( subject ).to receive( :version_is_less ).with('3.1', '3.0').and_return( false )
|
|
837
1027
|
allow( subject ).to receive( :sorted_hosts ).and_return( [hosts[0]] )
|
|
838
|
-
version = version_win = '3.1'
|
|
839
1028
|
path = "/path/to/upgradepkg"
|
|
840
1029
|
expect( subject ).to receive( :do_install ).with( [hosts[0]], {:type=>:upgrade, :set_console_password=>true} )
|
|
841
1030
|
subject.upgrade_pe_on(hosts[0], {}, path)
|
|
842
1031
|
end
|
|
843
1032
|
|
|
1033
|
+
it 'sets previous_pe_ver' do
|
|
1034
|
+
subject.hosts = hosts
|
|
1035
|
+
host = hosts[0]
|
|
1036
|
+
host['pe_ver'] = '3.8.5'
|
|
1037
|
+
host['pe_upgrade_ver'] = '2016.2.0'
|
|
1038
|
+
expect(subject).to receive(:do_install).with([host], Hash)
|
|
1039
|
+
subject.upgrade_pe_on([host], {})
|
|
1040
|
+
expect(host['pe_ver']).to eq('2016.2.0')
|
|
1041
|
+
expect(host['previous_pe_ver']).to eq('3.8.5')
|
|
1042
|
+
end
|
|
844
1043
|
end
|
|
845
1044
|
|
|
846
1045
|
describe 'fetch_and_push_pe' do
|
data/spec/helpers.rb
CHANGED
|
@@ -83,6 +83,7 @@ module HostHelpers
|
|
|
83
83
|
host = make_opts.merge(host_hash)
|
|
84
84
|
|
|
85
85
|
allow(host).to receive( :name ).and_return( name )
|
|
86
|
+
allow(host).to receive( :hostname ).and_return( "#{name}.test" )
|
|
86
87
|
allow(host).to receive( :to_s ).and_return( name )
|
|
87
88
|
allow(host).to receive( :exec ).and_return( generate_result( name, host_hash ) )
|
|
88
89
|
host
|
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: 0.
|
|
4
|
+
version: 0.3.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-05-
|
|
11
|
+
date: 2016-05-26 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rspec
|