beaker 2.30.1 → 2.31.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 +189 -2
- data/lib/beaker/dsl/helpers/web_helpers.rb +1 -1
- data/lib/beaker/dsl/install_utils/foss_utils.rb +2 -1
- data/lib/beaker/dsl/install_utils/pe_utils.rb +6 -0
- data/lib/beaker/dsl/install_utils/puppet_utils.rb +1 -1
- data/lib/beaker/host.rb +6 -0
- data/lib/beaker/host/aix.rb +2 -1
- data/lib/beaker/host/mac/group.rb +1 -1
- data/lib/beaker/host/unix/exec.rb +19 -5
- data/lib/beaker/host/windows/pkg.rb +7 -1
- data/lib/beaker/host_prebuilt_steps.rb +12 -1
- data/lib/beaker/hypervisor.rb +3 -0
- data/lib/beaker/hypervisor/vagrant_libvirt.rb +21 -1
- data/lib/beaker/options/presets.rb +2 -0
- data/lib/beaker/version.rb +1 -1
- data/spec/beaker/dsl/helpers/web_helpers_spec.rb +27 -9
- data/spec/beaker/dsl/install_utils/foss_utils_spec.rb +15 -0
- data/spec/beaker/host/aix_spec.rb +51 -0
- data/spec/beaker/host/mac/group_spec.rb +10 -0
- data/spec/beaker/host/unix/exec_spec.rb +18 -0
- data/spec/beaker/host/windows/pkg_spec.rb +57 -0
- data/spec/beaker/host_prebuilt_steps_spec.rb +1 -1
- data/spec/beaker/hypervisor/hypervisor_spec.rb +16 -0
- data/spec/beaker/hypervisor/vagrant_libvirt_spec.rb +16 -7
- metadata +4 -2
checksums.yaml
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
!binary "U0hBMQ==":
|
|
3
3
|
metadata.gz: !binary |-
|
|
4
|
-
|
|
4
|
+
YTVhYzY3M2U5ZTcxZWY2MzU4MjExNmZjMjZkMGUwZDQ3ZGI5OGIyNA==
|
|
5
5
|
data.tar.gz: !binary |-
|
|
6
|
-
|
|
6
|
+
NzFlNDFlZjk3NGE0MTNiMTcxYWVmNzY1YWNkYTc3YjQ2MTM1OGM2MQ==
|
|
7
7
|
SHA512:
|
|
8
8
|
metadata.gz: !binary |-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
ZGFmOGI0Yjc3MzViMDE0MGU3ODBjZDA4ZDNmM2ExZDQ1NDZmODA2NWEwNDk3
|
|
10
|
+
N2YyYjM1NmNmNTY1Y2RjN2E3ZjU5ZDQ0ODVkYjJlYTBhMmU4M2JhMmRlMDBj
|
|
11
|
+
MzU3MGZiYzJiOTIzNGJiYTIxZTZjYzgxOWViY2E2NTUyOGJhYjU=
|
|
12
12
|
data.tar.gz: !binary |-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
NGZhNDUwMmIxZjhiOWIxNTkzOTAyMzA2MGZmZGQyOGI2ZDJjZjBhMDc4NmUw
|
|
14
|
+
YjAwMGE3ZDc3ZmJmYzE1MmVmODY1YTEwOTJlYjg5ZGNmYWE4ZGNiYTI1M2U4
|
|
15
|
+
Zjk2ODhlZTRlZDgzN2E5MDg3ODhkYzBlNjgxM2MwZTZhNGI0NDE=
|
data/HISTORY.md
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# default - History
|
|
2
2
|
## Tags
|
|
3
|
-
* [LATEST -
|
|
3
|
+
* [LATEST - 16 Dec, 2015 (da1729b0)](#LATEST)
|
|
4
|
+
* [2.30.1 - 3 Dec, 2015 (9f1376ef)](#2.30.1)
|
|
4
5
|
* [2.30.0 - 2 Dec, 2015 (dbb72630)](#2.30.0)
|
|
5
6
|
* [2.29.1 - 23 Nov, 2015 (5d824690)](#2.29.1)
|
|
6
7
|
* [2.29.0 - 18 Nov, 2015 (33fd2399)](#2.29.0)
|
|
@@ -104,7 +105,193 @@
|
|
|
104
105
|
* [pe1.2 - 6 Sep, 2011 (ba3dadd2)](#pe1.2)
|
|
105
106
|
|
|
106
107
|
## Details
|
|
107
|
-
### <a name = "LATEST">LATEST -
|
|
108
|
+
### <a name = "LATEST">LATEST - 16 Dec, 2015 (da1729b0)
|
|
109
|
+
|
|
110
|
+
* (GEM) update beaker version to 2.31.0 (da1729b0)
|
|
111
|
+
|
|
112
|
+
* Revert "Added netscaler platform" (112ef320)
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
```
|
|
116
|
+
Revert "Added netscaler platform"
|
|
117
|
+
|
|
118
|
+
This reverts commit 6a2abd36fe5b36db163582b12dca11b5cd018c7f.
|
|
119
|
+
```
|
|
120
|
+
* Added netscaler platform (6a2abd36)
|
|
121
|
+
|
|
122
|
+
* Merge pull request #1034 from erikPrime/(BKR-237)_disable_updates.puppetlabs.com (23bc8f94)
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
```
|
|
126
|
+
Merge pull request #1034 from erikPrime/(BKR-237)_disable_updates.puppetlabs.com
|
|
127
|
+
|
|
128
|
+
(BKR-237) disable updates.puppetlabs.com
|
|
129
|
+
```
|
|
130
|
+
* (BKR-237) fixed option & updated tests (85a99ef8)
|
|
131
|
+
|
|
132
|
+
* Merge pull request #1033 from kevpl/bkr647_windows_pkgcygwin (e0d06f7f)
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
```
|
|
136
|
+
Merge pull request #1033 from kevpl/bkr647_windows_pkgcygwin
|
|
137
|
+
|
|
138
|
+
(BKR-647) windows.install_package now uses SSL cygwin URL with fallback
|
|
139
|
+
```
|
|
140
|
+
* (BKR-237) mods in response to review (af321acf)
|
|
141
|
+
|
|
142
|
+
* (MAINT) fix spec test for set_etc_hosts (cf6dc589)
|
|
143
|
+
|
|
144
|
+
* (MAINT) makes set_etc_hosts APPEND instead of REPLACE (09cbdf77)
|
|
145
|
+
|
|
146
|
+
* (BKR-237) updates.puppetlabs.com resolves to 127.0.0.1 (a78ee042)
|
|
147
|
+
|
|
148
|
+
* Merge pull request #1031 from kevpl/bkr642_aix_fix (ab4ebd1d)
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
```
|
|
152
|
+
Merge pull request #1031 from kevpl/bkr642_aix_fix
|
|
153
|
+
|
|
154
|
+
(BKR-642) include aix exec, error checking to unix exec
|
|
155
|
+
```
|
|
156
|
+
* Merge pull request #1032 from kevpl/bkr628_mac_group (2c79ac19)
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
```
|
|
160
|
+
Merge pull request #1032 from kevpl/bkr628_mac_group
|
|
161
|
+
|
|
162
|
+
(BKR-628) fixed mac group_present check
|
|
163
|
+
```
|
|
164
|
+
* (BKR-647) windows.install_package now uses SSL cygwin URL with fallback (95bf615b)
|
|
165
|
+
|
|
166
|
+
* Merge pull request #1025 from ody/add_privatebindir_to_path (6e7333f5)
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
```
|
|
170
|
+
Merge pull request #1025 from ody/add_privatebindir_to_path
|
|
171
|
+
|
|
172
|
+
Add privatebindir to PATH
|
|
173
|
+
```
|
|
174
|
+
* (BKR-628) fixed mac group_present check (35b12e53)
|
|
175
|
+
|
|
176
|
+
* Merge pull request #1029 from kevpl/bkr569_fetch_nocache (3ffd8b42)
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
```
|
|
180
|
+
Merge pull request #1029 from kevpl/bkr569_fetch_nocache
|
|
181
|
+
|
|
182
|
+
(BKR-569) added caching disable option
|
|
183
|
+
```
|
|
184
|
+
* (BKR-642) include aix exec, error checking to unix exec (7ba2bf64)
|
|
185
|
+
|
|
186
|
+
* Merge pull request #1026 from ody/reorder_permiteuserenv (77581a29)
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
```
|
|
190
|
+
Merge pull request #1026 from ody/reorder_permiteuserenv
|
|
191
|
+
|
|
192
|
+
Swap the placement of PermiteUserEnvironment
|
|
193
|
+
```
|
|
194
|
+
* Merge pull request #1030 from kevpl/bkr626_puppetagent_docs (7173bd15)
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
```
|
|
198
|
+
Merge pull request #1030 from kevpl/bkr626_puppetagent_docs
|
|
199
|
+
|
|
200
|
+
(BKR-626) added puppet-agent doc links
|
|
201
|
+
```
|
|
202
|
+
* Merge pull request #1018 from sathlan/feature/add_memory_option_to_vagrant_libvirt (91621239)
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
```
|
|
206
|
+
Merge pull request #1018 from sathlan/feature/add_memory_option_to_vagrant_libvirt
|
|
207
|
+
|
|
208
|
+
(BKR-631) Add memory option to vagrant libvirt.
|
|
209
|
+
```
|
|
210
|
+
* (BKR-626) added puppet-agent doc links (dee654e4)
|
|
211
|
+
|
|
212
|
+
* (BKR-569) added caching disable option (1cf628e4)
|
|
213
|
+
|
|
214
|
+
* Merge pull request #1028 from joshcooper/ticket/master/BKR-644-fedora-puppet-agent-dev-repo (a6e41cc1)
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
```
|
|
218
|
+
Merge pull request #1028 from joshcooper/ticket/master/BKR-644-fedora-puppet-agent-dev-repo
|
|
219
|
+
|
|
220
|
+
(BKR-644) Prepend 'f' to the fedora version
|
|
221
|
+
```
|
|
222
|
+
* Merge pull request #1027 from bmjen/fix-solaris (3df53898)
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
```
|
|
226
|
+
Merge pull request #1027 from bmjen/fix-solaris
|
|
227
|
+
|
|
228
|
+
(maint) Fix typo in solaris install_pe util function.
|
|
229
|
+
```
|
|
230
|
+
* (BKR-644) Prepend 'f' to the fedora version (1b15425d)
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
```
|
|
234
|
+
(BKR-644) Prepend 'f' to the fedora version
|
|
235
|
+
|
|
236
|
+
Previously, install_puppet_agent_dev_repo_on did not work for fedora,
|
|
237
|
+
because we were constructing a URL of the form:
|
|
238
|
+
|
|
239
|
+
http://<host>/puppet-agent/<sha>/repos/fedora/22/PC1/x86_64/puppet-agent-1.3.2-1.fedora22.x86_64.rpm
|
|
240
|
+
|
|
241
|
+
However, we unfortunately prepend 'f' to the version string when
|
|
242
|
+
publishing the package, see RE-4191.
|
|
243
|
+
|
|
244
|
+
This commit prepends an 'f' to the version string for fedora-only, so
|
|
245
|
+
the new URL is:
|
|
246
|
+
|
|
247
|
+
http://<host>/puppet-agent/<sha>/repos/fedora/f22/PC1/x86_64/puppet-agent-1.3.2-1.fedoraf22.x86_64.rpm
|
|
248
|
+
|
|
249
|
+
Note f22 appears in two places, "fedora/f22" and
|
|
250
|
+
"puppet-agent...-fedoraf22.x86_64.rpm"
|
|
251
|
+
```
|
|
252
|
+
* (maint) Fix typo in solaris install_pe util function. (3e68260a)
|
|
253
|
+
|
|
254
|
+
* (MAINT) Swap placement of PermitUserEnvironment (2cb7f6d6)
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
```
|
|
258
|
+
(MAINT) Swap placement of PermitUserEnvironment
|
|
259
|
+
|
|
260
|
+
This commit will rework the way PermiteUserEnvironment is added to
|
|
261
|
+
sshd_config by putting it at the top of the file.
|
|
262
|
+
|
|
263
|
+
Without this commit you will create a bad sshd_config if your sut's
|
|
264
|
+
base image containes matching blocks the end of its sshd_config
|
|
265
|
+
because the PermitUserEnvironment option is not allowed there. This
|
|
266
|
+
ordering is likely perferred since it is generally the norm to put
|
|
267
|
+
matching blocks at the end of the sshd_config.
|
|
268
|
+
```
|
|
269
|
+
* (MAINT) Add privatebindir to PATH (5e45c1f1)
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
```
|
|
273
|
+
(MAINT) Add privatebindir to PATH
|
|
274
|
+
|
|
275
|
+
This commit will add privatebindir to the list of paths added to the
|
|
276
|
+
PATH variable stored in ~/.ssh/environment.
|
|
277
|
+
|
|
278
|
+
This needs to happen so that the gem command and any excutables
|
|
279
|
+
installed using that gem command are available for use during a suite.
|
|
280
|
+
A requirement if your suite deploys dependencies with r10k on both aio
|
|
281
|
+
and foss agent types.
|
|
282
|
+
```
|
|
283
|
+
* (BKR-631) Add memory option to vagrant libvirt. (349501e0)
|
|
284
|
+
|
|
285
|
+
|
|
286
|
+
```
|
|
287
|
+
(BKR-631) Add memory option to vagrant libvirt.
|
|
288
|
+
|
|
289
|
+
This add the possibility to specify the memory for each host separately
|
|
290
|
+
or for every host.
|
|
291
|
+
```
|
|
292
|
+
### <a name = "2.30.1">2.30.1 - 3 Dec, 2015 (9f1376ef)
|
|
293
|
+
|
|
294
|
+
* (HISTORY) update beaker history for gem release 2.30.1 (9f1376ef)
|
|
108
295
|
|
|
109
296
|
* (GEM) update beaker version to 2.30.1 (a1ee5206)
|
|
110
297
|
|
|
@@ -47,7 +47,7 @@ module Beaker
|
|
|
47
47
|
base_url.chomp!('/')
|
|
48
48
|
src = "#{base_url}/#{file_name}"
|
|
49
49
|
dst = File.join(dst_dir, file_name)
|
|
50
|
-
if File.exists?(dst)
|
|
50
|
+
if options[:cache_files_locally] && File.exists?(dst)
|
|
51
51
|
logger.notify "Already fetched #{dst}"
|
|
52
52
|
else
|
|
53
53
|
logger.notify "Fetching: #{src}"
|
|
@@ -1112,6 +1112,7 @@ module Beaker
|
|
|
1112
1112
|
release_path << release_path_end
|
|
1113
1113
|
when /^(fedora|el|centos|sles)$/
|
|
1114
1114
|
variant = ((variant == 'centos') ? 'el' : variant)
|
|
1115
|
+
version = ((variant == 'fedora') ? "f#{version}" : version)
|
|
1115
1116
|
release_path << "#{variant}/#{version}/#{opts[:puppet_collection]}/#{arch}"
|
|
1116
1117
|
release_file = "puppet-agent-#{opts[:puppet_agent_version]}-1.#{variant}#{version}.#{arch}.rpm"
|
|
1117
1118
|
when /^(aix)$/
|
|
@@ -1343,7 +1344,7 @@ NOASK
|
|
|
1343
1344
|
arch = 'i386'
|
|
1344
1345
|
end
|
|
1345
1346
|
release_file = "/repos/solaris/#{version}/#{opts[:puppet_collection]}/puppet-agent-*#{arch}.pkg.gz"
|
|
1346
|
-
download_file = "puppet-agent-#{
|
|
1347
|
+
download_file = "puppet-agent-#{variant}-#{version}-#{arch}.tar.gz"
|
|
1347
1348
|
else
|
|
1348
1349
|
raise "No pe-promoted installation step for #{variant} yet..."
|
|
1349
1350
|
end
|
|
@@ -327,6 +327,9 @@ module Beaker
|
|
|
327
327
|
# @note on windows, the +:ruby_arch+ host parameter can determine in addition
|
|
328
328
|
# to other settings whether the 32 or 64bit install is used
|
|
329
329
|
#
|
|
330
|
+
# @note for puppet-agent install options, refer to
|
|
331
|
+
# {Beaker::DSL::InstallUtils::FOSSUtils#install_puppet_agent_pe_promoted_repo_on}
|
|
332
|
+
#
|
|
330
333
|
# @api private
|
|
331
334
|
#
|
|
332
335
|
def do_install hosts, opts = {}
|
|
@@ -548,6 +551,9 @@ module Beaker
|
|
|
548
551
|
# Install file names are assumed to be of the format puppet-enterprise-VERSION-PLATFORM.(tar)|(tar.gz)
|
|
549
552
|
# for Unix like systems and puppet-enterprise-VERSION.msi for Windows systems.
|
|
550
553
|
#
|
|
554
|
+
# @note For further installation parameters (such as puppet-agent install)
|
|
555
|
+
# options, refer to {#do_install} documentation
|
|
556
|
+
#
|
|
551
557
|
def install_pe_on(install_hosts, opts)
|
|
552
558
|
confine_block(:to, {}, install_hosts) do
|
|
553
559
|
sorted_hosts.each do |host|
|
|
@@ -35,7 +35,7 @@ module Beaker
|
|
|
35
35
|
#Given a host construct a PATH that includes puppetbindir, facterbindir and hierabindir
|
|
36
36
|
# @param [Host] host A single host to construct pathing for
|
|
37
37
|
def construct_puppet_path(host)
|
|
38
|
-
path = (%w(puppetbindir facterbindir hierabindir)).compact.reject(&:empty?)
|
|
38
|
+
path = (%w(puppetbindir privatebindir facterbindir hierabindir)).compact.reject(&:empty?)
|
|
39
39
|
#get the PATH defaults
|
|
40
40
|
path.map! { |val| host[val] }
|
|
41
41
|
path = path.compact.reject(&:empty?)
|
data/lib/beaker/host.rb
CHANGED
|
@@ -3,6 +3,9 @@ require 'timeout'
|
|
|
3
3
|
require 'benchmark'
|
|
4
4
|
require 'rsync'
|
|
5
5
|
|
|
6
|
+
require 'beaker/dsl/helpers'
|
|
7
|
+
require 'beaker/dsl/patterns'
|
|
8
|
+
|
|
6
9
|
[ 'command', 'ssh_connection'].each do |lib|
|
|
7
10
|
require "beaker/#{lib}"
|
|
8
11
|
end
|
|
@@ -11,6 +14,9 @@ module Beaker
|
|
|
11
14
|
class Host
|
|
12
15
|
SELECT_TIMEOUT = 30
|
|
13
16
|
|
|
17
|
+
include Beaker::DSL::Helpers
|
|
18
|
+
include Beaker::DSL::Patterns
|
|
19
|
+
|
|
14
20
|
class CommandFailure < StandardError; end
|
|
15
21
|
|
|
16
22
|
# This class provides array syntax for using puppet --configprint on a host
|
data/lib/beaker/host/aix.rb
CHANGED
|
@@ -4,13 +4,14 @@ end
|
|
|
4
4
|
|
|
5
5
|
module Aix
|
|
6
6
|
class Host < Unix::Host
|
|
7
|
-
[ 'user', 'group', 'file' ].each do |lib|
|
|
7
|
+
[ 'user', 'group', 'file', 'exec' ].each do |lib|
|
|
8
8
|
require "beaker/host/aix/#{lib}"
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
include Aix::User
|
|
12
12
|
include Aix::Group
|
|
13
13
|
include Aix::File
|
|
14
|
+
include Aix::Exec
|
|
14
15
|
|
|
15
16
|
end
|
|
16
17
|
end
|
|
@@ -66,7 +66,7 @@ module Mac::Group
|
|
|
66
66
|
# @param [Proc] block Additional actions or insertions
|
|
67
67
|
def group_present(name, &block)
|
|
68
68
|
group_exists = false
|
|
69
|
-
execute("dscacheutil -q
|
|
69
|
+
execute("dscacheutil -q group -a name #{name}") do |result|
|
|
70
70
|
group_exists = result.stdout =~ /^name: #{name}/
|
|
71
71
|
end
|
|
72
72
|
|
|
@@ -176,6 +176,8 @@ module Unix::Exec
|
|
|
176
176
|
exec(Beaker::Command.new("svcadm restart svc:/network/ssh:default"))
|
|
177
177
|
when /(free|open)bsd/
|
|
178
178
|
exec(Beaker::Command.new("sudo /etc/rc.d/sshd restart"))
|
|
179
|
+
else
|
|
180
|
+
raise ArgumentError, "Unsupported Platform: '#{self['platform']}'"
|
|
179
181
|
end
|
|
180
182
|
end
|
|
181
183
|
|
|
@@ -187,19 +189,31 @@ module Unix::Exec
|
|
|
187
189
|
def ssh_permit_user_environment
|
|
188
190
|
case self['platform']
|
|
189
191
|
when /debian|ubuntu|cumulus/
|
|
190
|
-
|
|
192
|
+
directory = create_tmpdir_on(self)
|
|
193
|
+
exec(Beaker::Command.new("echo 'PermitUserEnvironment yes' | cat - /etc/ssh/sshd_config > #{directory}/sshd_config.permit"))
|
|
194
|
+
exec(Beaker::Command.new("mv #{directory}/sshd_config.permit /etc/ssh/sshd_config"))
|
|
191
195
|
when /el-7|centos-7|redhat-7|oracle-7|scientific-7|eos-7/
|
|
192
|
-
|
|
196
|
+
directory = create_tmpdir_on(self)
|
|
197
|
+
exec(Beaker::Command.new("echo 'PermitUserEnvironment yes' | cat - /etc/ssh/sshd_config > #{directory}/sshd_config.permit"))
|
|
198
|
+
exec(Beaker::Command.new("mv #{directory}/sshd_config.permit /etc/ssh/sshd_config"))
|
|
193
199
|
when /el-|centos|fedora|redhat|oracle|scientific|eos/
|
|
194
|
-
|
|
200
|
+
directory = create_tmpdir_on(self)
|
|
201
|
+
exec(Beaker::Command.new("echo 'PermitUserEnvironment yes' | cat - /etc/ssh/sshd_config > #{directory}/sshd_config.permit"))
|
|
202
|
+
exec(Beaker::Command.new("mv #{directory}/sshd_config.permit /etc/ssh/sshd_config"))
|
|
195
203
|
when /sles/
|
|
196
|
-
|
|
204
|
+
directory = create_tmpdir_on(self)
|
|
205
|
+
exec(Beaker::Command.new("echo 'PermitUserEnvironment yes' | cat - /etc/ssh/sshd_config > #{directory}/sshd_config.permit"))
|
|
206
|
+
exec(Beaker::Command.new("mv #{directory}/sshd_config.permit /etc/ssh/sshd_config"))
|
|
197
207
|
when /solaris/
|
|
198
208
|
# kept solaris here because refactoring it into its own Host module
|
|
199
209
|
# conflicts with the solaris hypervisor that already exists
|
|
200
|
-
|
|
210
|
+
directory = create_tmpdir_on(self)
|
|
211
|
+
exec(Beaker::Command.new("echo 'PermitUserEnvironment yes' | cat - /etc/ssh/sshd_config > #{directory}/sshd_config.permit"))
|
|
212
|
+
exec(Beaker::Command.new("mv #{directory}/sshd_config.permit /etc/ssh/sshd_config"))
|
|
201
213
|
when /(free|open)bsd/
|
|
202
214
|
exec(Beaker::Command.new("sudo perl -pi -e 's/^#?PermitUserEnvironment no/PermitUserEnvironment yes/' /etc/ssh/sshd_config"), {:pty => true} )
|
|
215
|
+
else
|
|
216
|
+
raise ArgumentError, "Unsupported Platform: '#{self['platform']}'"
|
|
203
217
|
end
|
|
204
218
|
|
|
205
219
|
ssh_service_restart()
|
|
@@ -26,7 +26,13 @@ module Windows::Pkg
|
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
if not check_for_command(cygwin)
|
|
29
|
-
|
|
29
|
+
command = "curl --retry 5 https://cygwin.com/#{cygwin} -o /cygdrive/c/Windows/System32/#{cygwin}"
|
|
30
|
+
begin
|
|
31
|
+
execute(command)
|
|
32
|
+
rescue Beaker::Host::CommandFailure
|
|
33
|
+
command.sub!('https', 'http')
|
|
34
|
+
execute(command)
|
|
35
|
+
end
|
|
30
36
|
end
|
|
31
37
|
execute("#{cygwin} -q -n -N -d -R #{cmdline_args} #{rootdir} -s http://cygwin.osuosl.org -P #{name}")
|
|
32
38
|
end
|
|
@@ -323,7 +323,7 @@ module Beaker
|
|
|
323
323
|
if host['platform'] =~ /freebsd/
|
|
324
324
|
host.echo_to_file(etc_hosts, '/etc/hosts')
|
|
325
325
|
else
|
|
326
|
-
host.exec(Command.new("echo '#{etc_hosts}'
|
|
326
|
+
host.exec(Command.new("echo '#{etc_hosts}' >> /etc/hosts"))
|
|
327
327
|
end
|
|
328
328
|
end
|
|
329
329
|
|
|
@@ -377,6 +377,17 @@ module Beaker
|
|
|
377
377
|
end
|
|
378
378
|
end
|
|
379
379
|
|
|
380
|
+
# Update /etc/hosts to make updates.puppetlabs.com (aka the dujour server) resolve to 127.0.01,
|
|
381
|
+
# so that we don't pollute the server with test data. See SERVER-1000, BKR-182, BKR-237, DJ-10
|
|
382
|
+
# for additional details.
|
|
383
|
+
def disable_updates hosts, opts
|
|
384
|
+
logger = opts[:logger]
|
|
385
|
+
hosts.each do |host|
|
|
386
|
+
logger.notify "Disabling updates.puppetlabs.com by modifying hosts file to resolve updates to 127.0.0.1 on #{host}"
|
|
387
|
+
set_etc_hosts(host, "127.0.0.1\tupdates.puppetlabs.com\n")
|
|
388
|
+
end
|
|
389
|
+
end
|
|
390
|
+
|
|
380
391
|
# Update sshd_config on debian, ubuntu, centos, el, redhat, cumulus, and fedora boxes to allow for root login
|
|
381
392
|
#
|
|
382
393
|
# Does nothing on other platfoms.
|
data/lib/beaker/hypervisor.rb
CHANGED
|
@@ -118,6 +118,9 @@ module Beaker
|
|
|
118
118
|
if @options[:set_env]
|
|
119
119
|
set_env(@hosts, @options)
|
|
120
120
|
end
|
|
121
|
+
if @options[:disable_updates]
|
|
122
|
+
disable_updates(@hosts, @options)
|
|
123
|
+
end
|
|
121
124
|
end
|
|
122
125
|
|
|
123
126
|
#Default validation steps to be run for a given hypervisor. Ensures that SUTs meet requirements to be
|
|
@@ -1,11 +1,31 @@
|
|
|
1
1
|
require 'beaker/hypervisor/vagrant'
|
|
2
2
|
|
|
3
3
|
class Beaker::VagrantLibvirt < Beaker::Vagrant
|
|
4
|
+
@memory = nil
|
|
5
|
+
|
|
6
|
+
class << self
|
|
7
|
+
attr_reader :memory
|
|
8
|
+
end
|
|
9
|
+
|
|
4
10
|
def provision(provider = 'libvirt')
|
|
5
11
|
super
|
|
6
12
|
end
|
|
7
13
|
|
|
8
14
|
def self.provider_vfile_section(host, options)
|
|
9
|
-
" v.vm.provider :libvirt"
|
|
15
|
+
" v.vm.provider :libvirt do |node|\n" +
|
|
16
|
+
" node.memory = #{memory(host, options)}\n" +
|
|
17
|
+
" end\n"
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def self.memory(host, options)
|
|
21
|
+
return @memory unless @memory.nil?
|
|
22
|
+
@memory = case
|
|
23
|
+
when host['vagrant_memsize']
|
|
24
|
+
host['vagrant_memsize']
|
|
25
|
+
when options['vagrant_memsize']
|
|
26
|
+
options['vagrant_memsize']
|
|
27
|
+
else
|
|
28
|
+
'512'
|
|
29
|
+
end
|
|
10
30
|
end
|
|
11
31
|
end
|
|
@@ -161,6 +161,7 @@ module Beaker
|
|
|
161
161
|
:timesync => false,
|
|
162
162
|
:disable_iptables => false,
|
|
163
163
|
:set_env => true,
|
|
164
|
+
:disable_updates => true,
|
|
164
165
|
:repo_proxy => false,
|
|
165
166
|
:package_proxy => false,
|
|
166
167
|
:add_el_extras => false,
|
|
@@ -185,6 +186,7 @@ module Beaker
|
|
|
185
186
|
:puppetdb_port_nonssl => 8080,
|
|
186
187
|
:puppetserver_port => 8140,
|
|
187
188
|
:nodeclassifier_port => 4433,
|
|
189
|
+
:cache_files_locally => true, # TODO change to false in next major version
|
|
188
190
|
:aws_keyname_modifier => rand(10 ** 10).to_s.rjust(10,'0'), # 10 digit random number string
|
|
189
191
|
:ssh => {
|
|
190
192
|
:config => false,
|
data/lib/beaker/version.rb
CHANGED
|
@@ -13,13 +13,19 @@ class ClassMixedWithDSLHelpers
|
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
describe ClassMixedWithDSLHelpers do
|
|
16
|
+
let( :logger ) { double("Beaker::Logger", :notify => nil , :debug => nil ) }
|
|
17
|
+
let( :url ) { "http://beaker.tool" }
|
|
18
|
+
let( :name ) { "name" }
|
|
19
|
+
let( :destdir ) { "destdir" }
|
|
16
20
|
|
|
17
21
|
def fetch_allows
|
|
18
|
-
allow(subject).to receive( :logger )
|
|
22
|
+
allow( subject ).to receive( :logger ) { logger }
|
|
23
|
+
allow( subject ).to receive( :options ) { options }
|
|
19
24
|
end
|
|
20
25
|
|
|
21
26
|
describe "#fetch_http_file" do
|
|
22
|
-
let( :
|
|
27
|
+
let( :presets ) { Beaker::Options::Presets.new }
|
|
28
|
+
let( :options ) { presets.presets.merge(presets.env_vars) }
|
|
23
29
|
|
|
24
30
|
before do
|
|
25
31
|
fetch_allows
|
|
@@ -28,9 +34,21 @@ describe ClassMixedWithDSLHelpers do
|
|
|
28
34
|
describe "given valid arguments" do
|
|
29
35
|
|
|
30
36
|
it "returns its second and third arguments concatenated." do
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
expect(
|
|
37
|
+
concat_path = "#{destdir}/#{name}"
|
|
38
|
+
create_files([concat_path])
|
|
39
|
+
expect( logger ).to receive( :notify ).with( /^Already\ fetched\ / )
|
|
40
|
+
result = subject.fetch_http_file url, name, destdir
|
|
41
|
+
expect(result).to eq(concat_path)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it 'doesn\'t cache if :cache_files_locally set false' do
|
|
45
|
+
options[:cache_files_locally] = false
|
|
46
|
+
|
|
47
|
+
expect( logger ).to receive( :notify ).with( /^Fetching/ ).ordered
|
|
48
|
+
expect( logger ).to receive( :notify ).with( /^\ \ and\ saving\ to\ / ).ordered
|
|
49
|
+
expect( subject ).to receive( :open )
|
|
50
|
+
|
|
51
|
+
subject.fetch_http_file( url, name, destdir )
|
|
34
52
|
end
|
|
35
53
|
|
|
36
54
|
end
|
|
@@ -38,8 +56,8 @@ describe ClassMixedWithDSLHelpers do
|
|
|
38
56
|
describe 'given invalid arguments' do
|
|
39
57
|
|
|
40
58
|
it 'chomps correctly when given a URL ending with a / character' do
|
|
41
|
-
expect( subject ).to receive( :open ).with(
|
|
42
|
-
subject.fetch_http_file(
|
|
59
|
+
expect( subject ).to receive( :open ).with( "#{url}/#{name}", anything )
|
|
60
|
+
subject.fetch_http_file( url, name, destdir )
|
|
43
61
|
end
|
|
44
62
|
|
|
45
63
|
end
|
|
@@ -59,8 +77,8 @@ describe ClassMixedWithDSLHelpers do
|
|
|
59
77
|
it "returns basename of first argument concatenated to second." do
|
|
60
78
|
expect(subject).to receive(:`).with(/^wget.*/).ordered { result }
|
|
61
79
|
expect($?).to receive(:to_i).and_return(0)
|
|
62
|
-
result = subject.fetch_http_dir "
|
|
63
|
-
expect(result).to eq("destdir/beep")
|
|
80
|
+
result = subject.fetch_http_dir "#{url}/beep", destdir
|
|
81
|
+
expect(result).to eq("#{destdir}/beep")
|
|
64
82
|
end
|
|
65
83
|
|
|
66
84
|
end
|
|
@@ -882,6 +882,21 @@ describe ClassMixedWithDSLInstallUtils do
|
|
|
882
882
|
subject.install_puppet_agent_dev_repo_on( host, opts )
|
|
883
883
|
end
|
|
884
884
|
|
|
885
|
+
it 'prepends f to the version in the URL and rpm' do
|
|
886
|
+
platform = Object.new()
|
|
887
|
+
allow(platform).to receive(:to_array) { ['fedora', '22', 'x4']}
|
|
888
|
+
host = basic_hosts.first
|
|
889
|
+
host['platform'] = platform
|
|
890
|
+
opts = { :version => '0.1.0' }
|
|
891
|
+
allow( subject ).to receive( :options ).and_return( {} )
|
|
892
|
+
|
|
893
|
+
expect(subject).to receive(:fetch_http_file).once.with(/\/fedora\/f22\//, /-agent-0.1.0-1.fedoraf22/, /fedora/)
|
|
894
|
+
expect(subject).to receive(:scp_to).once.with(host, /puppet-agent-0.1.0-1.fedoraf22.x4.rpm/, "/root")
|
|
895
|
+
expect(subject).to receive(:on).ordered.with(host, /rpm -ivh/)
|
|
896
|
+
|
|
897
|
+
subject.install_puppet_agent_dev_repo_on( host, opts )
|
|
898
|
+
end
|
|
899
|
+
|
|
885
900
|
it 'runs the correct install for windows platforms' do
|
|
886
901
|
platform = Object.new()
|
|
887
902
|
allow(platform).to receive(:to_array) { ['windows', '5', 'x64']}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
module Aix
|
|
4
|
+
describe Host do
|
|
5
|
+
let(:options) { @options ? @options : {} }
|
|
6
|
+
let(:platform) {
|
|
7
|
+
if @platform
|
|
8
|
+
{ :platform => Beaker::Platform.new( @platform) }
|
|
9
|
+
else
|
|
10
|
+
{ :platform => Beaker::Platform.new( 'aix-vers-arch-extra' ) }
|
|
11
|
+
end
|
|
12
|
+
}
|
|
13
|
+
let(:host) { make_host( 'name', options.merge(platform) ) }
|
|
14
|
+
|
|
15
|
+
describe '#ssh_service_restart' do
|
|
16
|
+
it 'invokes the correct commands on the host' do
|
|
17
|
+
expect( Beaker::Command ).to receive( :new ).with( 'stopsrc -g ssh' ).once.ordered
|
|
18
|
+
expect( Beaker::Command ).to receive( :new ).with( 'startsrc -g ssh' ).once.ordered
|
|
19
|
+
host.ssh_service_restart
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
describe '#ssh_permit_user_environment' do
|
|
24
|
+
it 'calls echo to set PermitUserEnvironment' do
|
|
25
|
+
expect( Beaker::Command ).to receive( :new ).with( /^echo\ / ).once.ordered
|
|
26
|
+
allow( host ).to receive( :ssh_service_restart )
|
|
27
|
+
host.ssh_permit_user_environment
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it 'uses the correct ssh config file' do
|
|
31
|
+
expect( Beaker::Command ).to receive( :new ).with( /#{Regexp.escape(' >> /etc/ssh/sshd_config')}$/ ).once
|
|
32
|
+
allow( host ).to receive( :ssh_service_restart )
|
|
33
|
+
host.ssh_permit_user_environment
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
describe '#reboot' do
|
|
38
|
+
it 'invokes the correct command on the host' do
|
|
39
|
+
expect( Beaker::Command ).to receive( :new ).with( 'shutdown -Fr' ).once
|
|
40
|
+
host.reboot
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
describe '#get_ip' do
|
|
45
|
+
it 'invokes the correct command on the host' do
|
|
46
|
+
expect( host ).to receive( :execute ).with( /^ifconfig\ \-a\ inet\|\ / ).once.and_return( '' )
|
|
47
|
+
host.get_ip
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -86,6 +86,7 @@ EOS
|
|
|
86
86
|
it 'returns group existence without running create command if it already exists' do
|
|
87
87
|
result.stdout = puppet1
|
|
88
88
|
expect( subject ).to receive( :execute ).once.and_yield(result)
|
|
89
|
+
expect( subject ).not_to receive( :gid_next )
|
|
89
90
|
subject.group_present( 'puppet1' )
|
|
90
91
|
end
|
|
91
92
|
|
|
@@ -100,6 +101,15 @@ EOS
|
|
|
100
101
|
subject.group_present( name )
|
|
101
102
|
end
|
|
102
103
|
|
|
104
|
+
it 'makes the correct call to dscacheutil' do
|
|
105
|
+
result.stdout = puppet1
|
|
106
|
+
expect( subject ).to receive( :execute ).with(
|
|
107
|
+
/^dscacheutil\ \-q\ group\ \-a\ name\ /
|
|
108
|
+
).once.and_yield(result)
|
|
109
|
+
expect( subject ).not_to receive( :gid_next )
|
|
110
|
+
subject.group_present( 'puppet1' )
|
|
111
|
+
end
|
|
112
|
+
|
|
103
113
|
end
|
|
104
114
|
|
|
105
115
|
describe '#group_absent' do
|
|
@@ -49,5 +49,23 @@ module Beaker
|
|
|
49
49
|
expect( instance.mv(origin, destination, false) ).to be === 0
|
|
50
50
|
end
|
|
51
51
|
end
|
|
52
|
+
|
|
53
|
+
describe '#ssh_permit_user_environment' do
|
|
54
|
+
it 'raises an error on unsupported platforms' do
|
|
55
|
+
opts['platform'] = 'notarealthing01-parts-arch'
|
|
56
|
+
expect {
|
|
57
|
+
instance.ssh_permit_user_environment
|
|
58
|
+
}.to raise_error( ArgumentError, /#{opts['platform']}/ )
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
describe '#ssh_service_restart' do
|
|
63
|
+
it 'raises an error on unsupported platforms' do
|
|
64
|
+
opts['platform'] = 'notarealthing02-parts-arch'
|
|
65
|
+
expect {
|
|
66
|
+
instance.ssh_service_restart
|
|
67
|
+
}.to raise_error( ArgumentError, /#{opts['platform']}/ )
|
|
68
|
+
end
|
|
69
|
+
end
|
|
52
70
|
end
|
|
53
71
|
end
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
module Beaker
|
|
4
|
+
describe Windows::Pkg do
|
|
5
|
+
class WindowsPkgTest
|
|
6
|
+
include Windows::Pkg
|
|
7
|
+
|
|
8
|
+
def initialize(hash, logger)
|
|
9
|
+
@hash = hash
|
|
10
|
+
@logger = logger
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def [](k)
|
|
14
|
+
@hash[k]
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def to_s
|
|
18
|
+
"me"
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def exec
|
|
22
|
+
#noop
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
let (:opts) { @opts || {} }
|
|
28
|
+
let (:logger) { double( 'logger' ).as_null_object }
|
|
29
|
+
let (:instance) { WindowsPkgTest.new(opts, logger) }
|
|
30
|
+
|
|
31
|
+
describe '#install_package' do
|
|
32
|
+
before :each do
|
|
33
|
+
allow( instance ).to receive( :identify_windows_architecture )
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
context 'cygwin does not exist' do
|
|
37
|
+
before :each do
|
|
38
|
+
allow( instance ).to receive( :check_for_command ).and_return( false )
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it 'curls the SSL URL for cygwin\'s installer' do
|
|
42
|
+
expect( instance ).to receive( :execute ).with( /^curl.*https\:/ ).ordered
|
|
43
|
+
allow( instance ).to receive( :execute ).with( /^setup\-x86/ ).ordered
|
|
44
|
+
instance.install_package( 'curl' )
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
it 'falls back to the non-SSL URL if that one fails' do
|
|
48
|
+
allow( instance ).to receive( :execute ).with( /^curl.*https\:/ ).and_raise( Beaker::Host::CommandFailure ).ordered
|
|
49
|
+
expect( instance ).to receive( :execute ).with( /^curl.*http\:/ ).ordered
|
|
50
|
+
allow( instance ).to receive( :execute ).with( /^setup\-x86/ ).ordered
|
|
51
|
+
instance.install_package( 'curl' )
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
end
|
|
57
|
+
end
|
|
@@ -456,7 +456,7 @@ describe Beaker do
|
|
|
456
456
|
host = make_host('name', {})
|
|
457
457
|
etc_hosts = "127.0.0.1 localhost\n192.168.2.130 pe-ubuntu-lucid\n192.168.2.128 pe-centos6\n192.168.2.131 pe-debian6"
|
|
458
458
|
|
|
459
|
-
expect( Beaker::Command ).to receive( :new ).with( "echo '#{etc_hosts}'
|
|
459
|
+
expect( Beaker::Command ).to receive( :new ).with( "echo '#{etc_hosts}' >> /etc/hosts" ).once
|
|
460
460
|
expect( host ).to receive( :exec ).once
|
|
461
461
|
|
|
462
462
|
subject.set_etc_hosts(host, etc_hosts)
|
|
@@ -89,6 +89,22 @@ module Beaker
|
|
|
89
89
|
end
|
|
90
90
|
end
|
|
91
91
|
|
|
92
|
+
context "if :disable_updates option set true" do
|
|
93
|
+
it "calls disable_updates" do
|
|
94
|
+
options[:disable_updates] = true
|
|
95
|
+
expect( hypervisor ).to receive( :disable_updates ).once
|
|
96
|
+
hypervisor.configure
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
context "if :disable_updates option set false" do
|
|
101
|
+
it "does not call disable_updates_puppetlabs_com" do
|
|
102
|
+
options[:disable_updates] = false
|
|
103
|
+
expect( hypervisor ).to receive( :disable_updates ).never
|
|
104
|
+
hypervisor.configure
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
92
108
|
context 'if :configure option set false' do
|
|
93
109
|
it 'does not make any configure calls' do
|
|
94
110
|
options[:configure] = false
|
|
@@ -21,14 +21,23 @@ describe Beaker::VagrantLibvirt do
|
|
|
21
21
|
vagrant.provision
|
|
22
22
|
end
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
context 'Correct vagrant configuration' do
|
|
25
|
+
before(:each) do
|
|
26
|
+
FakeFS.activate!
|
|
27
|
+
path = vagrant.instance_variable_get( :@vagrant_path )
|
|
28
|
+
allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
|
|
28
29
|
|
|
29
|
-
|
|
30
|
+
vagrant.make_vfile( @hosts )
|
|
31
|
+
@vagrantfile = File.read( File.expand_path( File.join( path, "Vagrantfile")))
|
|
32
|
+
end
|
|
30
33
|
|
|
31
|
-
|
|
32
|
-
|
|
34
|
+
it "can make a Vagranfile for a set of hosts" do
|
|
35
|
+
expect( @vagrantfile ).to include( %Q{ v.vm.provider :libvirt do |node|})
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it "can specify the memory as an integer" do
|
|
39
|
+
expect( @vagrantfile.split("\n").map(&:strip) )
|
|
40
|
+
.to include('node.memory = 512')
|
|
41
|
+
end
|
|
33
42
|
end
|
|
34
43
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: beaker
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.31.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Puppetlabs
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2015-12-
|
|
11
|
+
date: 2015-12-16 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rspec
|
|
@@ -694,6 +694,7 @@ files:
|
|
|
694
694
|
- spec/beaker/dsl/roles_spec.rb
|
|
695
695
|
- spec/beaker/dsl/structure_spec.rb
|
|
696
696
|
- spec/beaker/dsl/wrappers_spec.rb
|
|
697
|
+
- spec/beaker/host/aix_spec.rb
|
|
697
698
|
- spec/beaker/host/eos_spec.rb
|
|
698
699
|
- spec/beaker/host/freebsd/exec_spec.rb
|
|
699
700
|
- spec/beaker/host/mac/group_spec.rb
|
|
@@ -702,6 +703,7 @@ files:
|
|
|
702
703
|
- spec/beaker/host/unix/pkg_spec.rb
|
|
703
704
|
- spec/beaker/host/windows/exec_spec.rb
|
|
704
705
|
- spec/beaker/host/windows/group_spec.rb
|
|
706
|
+
- spec/beaker/host/windows/pkg_spec.rb
|
|
705
707
|
- spec/beaker/host_prebuilt_steps_spec.rb
|
|
706
708
|
- spec/beaker/host_spec.rb
|
|
707
709
|
- spec/beaker/hypervisor/aixer_spec.rb
|