beaker 1.12.1 → 1.12.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -15
- data/beaker.gemspec +2 -1
- data/lib/beaker.rb +7 -0
- data/lib/beaker/answers.rb +2 -6
- data/lib/beaker/dsl.rb +2 -6
- data/lib/beaker/dsl/helpers.rb +43 -3
- data/lib/beaker/dsl/install_utils.rb +0 -34
- data/lib/beaker/dsl/roles.rb +2 -14
- data/lib/beaker/dsl/wrappers.rb +0 -12
- data/lib/beaker/host.rb +5 -9
- data/lib/beaker/host/aix.rb +6 -5
- data/lib/beaker/host/unix.rb +6 -9
- data/lib/beaker/host/windows.rb +6 -9
- data/lib/beaker/host_prebuilt_steps.rb +27 -6
- data/lib/beaker/hypervisor.rb +15 -14
- data/lib/beaker/hypervisor/google_compute.rb +1 -0
- data/lib/beaker/hypervisor/vsphere_helper.rb +1 -5
- data/lib/beaker/network_manager.rb +12 -6
- data/lib/beaker/options/command_line_parser.rb +3 -0
- data/lib/beaker/options/parser.rb +42 -0
- data/lib/beaker/options/presets.rb +3 -1
- data/lib/beaker/shared.rb +2 -6
- data/lib/beaker/test_case.rb +2 -6
- data/lib/beaker/test_suite.rb +2 -6
- data/lib/beaker/version.rb +1 -1
- data/spec/beaker/dsl/helpers_spec.rb +28 -1
- data/spec/beaker/dsl/install_utils_spec.rb +6 -28
- data/spec/beaker/dsl/roles_spec.rb +10 -25
- data/spec/beaker/dsl/wrappers_spec.rb +0 -8
- data/spec/beaker/host_prebuilt_steps_spec.rb +26 -0
- data/spec/beaker/options/command_line_parser_spec.rb +2 -2
- data/spec/beaker/options/parser_spec.rb +35 -1
- metadata +154 -259
- data/spec/beaker/hypervisor/google_compute.rb +0 -23
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
|
-
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
ZjJhOTc2YzQ0NTZmMWRmN2ZmODU2NWJmNGNjMWNlZDE1Yjg3MDIzMDIzMGVk
|
10
|
-
MmYyMWM2YmQ5ZjA2OTU4NDUyNDg3YmFiNzZkOTgxM2QyOWNjOGU4NDk3ZWVj
|
11
|
-
NDVmNjNiZDI3Nzg3NGFjOWE1NzBkOTFmMTk5NGExMjgzZGIyNDU=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
YmM5ZjEyNjVjZDhjZGYwZjY0NGZmY2ZmYTg4NmFiMmI1NWZlY2MxY2VhN2U2
|
14
|
-
YTE4ZGUyMTFiOGIzNjc1MDJmNjg0Y2MyMGVlNTgwMjE2ZTc1ZTE0YTg1NWEw
|
15
|
-
ZTIwYWQwMzNjOTdlNTFlN2I2ZWNlMTU3NjA0ZDgzNjU1ZjYzNWY=
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 327165664795e4a3418eee13044471c769062bdf
|
4
|
+
data.tar.gz: 46c4deee7cfdcf64a2f2903246a4a1f54d132b02
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 83dd205dea040996a658f04cec6389ba31b8cbccfd38f9dc608fc94bcaee5eca74c718939e0acd7b3794c2aba0236d36a09214279ef678691b903a11c9bb17f0
|
7
|
+
data.tar.gz: b4c851da76c6e21e4e6a8a5ba3ff229f09b9432dc0a409ccdd52cc221ad9e43868c1c9f3c11e343d57b7ecf18d3dde7601166ad94120cff45c832481b272fb1c
|
data/beaker.gemspec
CHANGED
@@ -23,6 +23,7 @@ Gem::Specification.new do |s|
|
|
23
23
|
s.add_development_dependency 'fakefs', '0.4'
|
24
24
|
s.add_development_dependency 'rake', '~> 10.1.0'
|
25
25
|
s.add_development_dependency 'simplecov' unless RUBY_VERSION < '1.9'
|
26
|
+
s.add_development_dependency 'pry', '~> 0.9.12.6'
|
26
27
|
|
27
28
|
# Documentation dependencies
|
28
29
|
s.add_development_dependency 'yard'
|
@@ -45,7 +46,7 @@ Gem::Specification.new do |s|
|
|
45
46
|
|
46
47
|
# These are transitive dependencies that we include or pin to because...
|
47
48
|
# Ruby 1.8 compatibility
|
48
|
-
s.add_runtime_dependency 'nokogiri', '1.5.10'
|
49
|
+
s.add_runtime_dependency 'nokogiri', '~> 1.5.10'
|
49
50
|
s.add_runtime_dependency 'mime-types', '~> 1.25' # 2.0 won't install on 1.8
|
50
51
|
# So fog doesn't always complain of unmet AWS dependencies
|
51
52
|
s.add_runtime_dependency 'unf', '~> 0.1'
|
data/lib/beaker.rb
CHANGED
data/lib/beaker/answers.rb
CHANGED
@@ -1,9 +1,5 @@
|
|
1
|
-
[ 'version32', 'version30', 'version28', 'version20' ].each do |
|
2
|
-
|
3
|
-
require "beaker/answers/#{file}"
|
4
|
-
rescue LoadError
|
5
|
-
require File.expand_path(File.join(File.dirname(__FILE__), 'answers', file))
|
6
|
-
end
|
1
|
+
[ 'version32', 'version30', 'version28', 'version20' ].each do |lib|
|
2
|
+
require "beaker/answers/#{lib}"
|
7
3
|
end
|
8
4
|
|
9
5
|
module Beaker
|
data/lib/beaker/dsl.rb
CHANGED
@@ -1,10 +1,6 @@
|
|
1
1
|
[ 'install_utils', 'roles', 'outcomes', 'assertions',
|
2
|
-
'structure', 'helpers', 'wrappers' ].each do |
|
3
|
-
|
4
|
-
require "beaker/dsl/#{file}"
|
5
|
-
rescue LoadError
|
6
|
-
require File.expand_path(File.join(File.dirname(__FILE__), 'dsl', file))
|
7
|
-
end
|
2
|
+
'structure', 'helpers', 'wrappers' ].each do |lib|
|
3
|
+
require "beaker/dsl/#{lib}"
|
8
4
|
end
|
9
5
|
|
10
6
|
module Beaker
|
data/lib/beaker/dsl/helpers.rb
CHANGED
@@ -930,6 +930,40 @@ module Beaker
|
|
930
930
|
end
|
931
931
|
end
|
932
932
|
|
933
|
+
#Is semver-ish version a less than semver-ish version b
|
934
|
+
#@param [String] a A version of the from '\d.\d.\d.*'
|
935
|
+
#@param [String] b A version of the form '\d.\d.\d.*'
|
936
|
+
#@return [Boolean] true if a is less than b, otherwise return false
|
937
|
+
#
|
938
|
+
#@note 3.0.0-160-gac44cfb is greater than 3.0.0, and 2.8.2
|
939
|
+
#@note -rc being less than final builds is not yet implemented.
|
940
|
+
def version_is_less a, b
|
941
|
+
a_nums = a.split('-')[0].split('.')
|
942
|
+
b_nums = b.split('-')[0].split('.')
|
943
|
+
(0...a_nums.length).each do |i|
|
944
|
+
if i < b_nums.length
|
945
|
+
if a_nums[i] < b_nums[i]
|
946
|
+
return true
|
947
|
+
elsif a_nums[i] > b_nums[i]
|
948
|
+
return false
|
949
|
+
end
|
950
|
+
else
|
951
|
+
return false
|
952
|
+
end
|
953
|
+
end
|
954
|
+
#checks all dots, they are equal so examine the rest
|
955
|
+
a_rest = a.split('-', 2)[1]
|
956
|
+
b_rest = b.split('-', 2)[1]
|
957
|
+
if a_rest and b_rest and a_rest < b_rest
|
958
|
+
return false
|
959
|
+
elsif a_rest and not b_rest
|
960
|
+
return false
|
961
|
+
elsif not a_rest and b_rest
|
962
|
+
return true
|
963
|
+
end
|
964
|
+
return false
|
965
|
+
end
|
966
|
+
|
933
967
|
#stops the puppet agent running on the host
|
934
968
|
def stop_agent_on(agent)
|
935
969
|
vardir = agent.puppet['vardir']
|
@@ -945,9 +979,15 @@ module Beaker
|
|
945
979
|
# that if the script doesn't exist, we should just use `pe-puppet`
|
946
980
|
result = on agent, "[ -e /etc/init.d/pe-puppet-agent ]", :acceptable_exit_codes => [0,1]
|
947
981
|
agent_service = (result.exit_code == 0) ? 'pe-puppet-agent' : 'pe-puppet'
|
948
|
-
|
949
|
-
|
950
|
-
|
982
|
+
|
983
|
+
# Under a number of stupid circumstances, we can't stop the
|
984
|
+
# agent using puppet. This is usually because of issues with
|
985
|
+
# the init script or system on that particular configuration.
|
986
|
+
avoid_puppet_at_all_costs = false
|
987
|
+
avoid_puppet_at_all_costs ||= agent['platform'] =~ /el-4/
|
988
|
+
avoid_puppet_at_all_costs ||= agent['pe_ver'] && version_is_less(agent['pe_ver'], '3.2') && agent['platform'] =~ /sles/
|
989
|
+
|
990
|
+
if avoid_puppet_at_all_costs
|
951
991
|
on agent, "/etc/init.d/#{agent_service} stop"
|
952
992
|
else
|
953
993
|
on agent, puppet_resource('service', agent_service, 'ensure=stopped')
|
@@ -423,40 +423,6 @@ module Beaker
|
|
423
423
|
on install_hosts, puppet_agent('-t'), :acceptable_exit_codes => [0,2]
|
424
424
|
end
|
425
425
|
|
426
|
-
#Is PE version a less than PE version b
|
427
|
-
#@param [String] a A PE version of the from '\d.\d.\d.*'
|
428
|
-
#@param [String] b A PE version of the form '\d.\d.\d.*'
|
429
|
-
#@return [Boolean] true if a is less than b, otherwise return false
|
430
|
-
#
|
431
|
-
#@note 3.0.0-160-gac44cfb is greater than 3.0.0, and 2.8.2
|
432
|
-
# @!visibility private
|
433
|
-
def version_is_less a, b
|
434
|
-
a_nums = a.split('-')[0].split('.')
|
435
|
-
b_nums = b.split('-')[0].split('.')
|
436
|
-
(0...a_nums.length).each do |i|
|
437
|
-
if i < b_nums.length
|
438
|
-
if a_nums[i] < b_nums[i]
|
439
|
-
return true
|
440
|
-
elsif a_nums[i] > b_nums[i]
|
441
|
-
return false
|
442
|
-
end
|
443
|
-
else
|
444
|
-
return false
|
445
|
-
end
|
446
|
-
end
|
447
|
-
#checks all dots, they are equal so examine the rest
|
448
|
-
a_rest = a.split('-', 2)[1]
|
449
|
-
b_rest = b.split('-', 2)[1]
|
450
|
-
if a_rest and b_rest and a_rest < b_rest
|
451
|
-
return false
|
452
|
-
elsif a_rest and not b_rest
|
453
|
-
return false
|
454
|
-
elsif not a_rest and b_rest
|
455
|
-
return true
|
456
|
-
end
|
457
|
-
return false
|
458
|
-
end
|
459
|
-
|
460
426
|
#Sort array of hosts so that it has the correct order for PE installation based upon each host's role
|
461
427
|
# @example
|
462
428
|
# h = sorted_hosts
|
data/lib/beaker/dsl/roles.rb
CHANGED
@@ -42,11 +42,7 @@ module Beaker
|
|
42
42
|
# on, master, 'cat /etc/puppet/puppet.conf'
|
43
43
|
#
|
44
44
|
def master
|
45
|
-
|
46
|
-
find_only_one :master
|
47
|
-
rescue DSL::Outcomes::FailTest => e
|
48
|
-
default
|
49
|
-
end
|
45
|
+
find_only_one :master
|
50
46
|
end
|
51
47
|
|
52
48
|
# The host for which ['roles'] include 'database'
|
@@ -89,15 +85,7 @@ module Beaker
|
|
89
85
|
# on, default, "curl https://#{database}/nodes/#{agent}"
|
90
86
|
#
|
91
87
|
def default
|
92
|
-
|
93
|
-
return hosts[0]
|
94
|
-
elsif any_hosts_as? :default
|
95
|
-
return find_only_one :default
|
96
|
-
elsif any_hosts_as? :master
|
97
|
-
return find_only_one :master
|
98
|
-
else
|
99
|
-
raise DSL::Outcomes::FailTest, "no default host specified"
|
100
|
-
end
|
88
|
+
find_only_one :default
|
101
89
|
end
|
102
90
|
|
103
91
|
# Determine if there is a host or hosts with the given role defined
|
data/lib/beaker/dsl/wrappers.rb
CHANGED
@@ -32,18 +32,6 @@ module Beaker
|
|
32
32
|
Command.new('hiera', args, options )
|
33
33
|
end
|
34
34
|
|
35
|
-
# This is hairy and because of legacy code it will take a bit more
|
36
|
-
# work to disentangle all of the things that are being passed into
|
37
|
-
# this catchall param.
|
38
|
-
#
|
39
|
-
# @api dsl
|
40
|
-
def razor(*args)
|
41
|
-
options = args.last.is_a?(Hash) ? args.pop : {}
|
42
|
-
options['ENV'] ||= {}
|
43
|
-
options['ENV'] = options['ENV'].merge( Command::DEFAULT_GIT_ENV )
|
44
|
-
Command.new('razor', args, options )
|
45
|
-
end
|
46
|
-
|
47
35
|
# @param [String] command_string A string of to be interpolated
|
48
36
|
# within the context of a host in
|
49
37
|
# question
|
data/lib/beaker/host.rb
CHANGED
@@ -2,12 +2,8 @@ require 'socket'
|
|
2
2
|
require 'timeout'
|
3
3
|
require 'benchmark'
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
require "beaker/#{lib}"
|
8
|
-
rescue LoadError
|
9
|
-
require File.expand_path(File.join(File.dirname(__FILE__), lib))
|
10
|
-
end
|
5
|
+
[ 'command', 'ssh_connection' ].each do |lib|
|
6
|
+
require "beaker/#{lib}"
|
11
7
|
end
|
12
8
|
|
13
9
|
module Beaker
|
@@ -222,7 +218,7 @@ module Beaker
|
|
222
218
|
|
223
219
|
end
|
224
220
|
|
225
|
-
|
226
|
-
|
227
|
-
|
221
|
+
[ 'windows', 'unix', 'aix' ].each do |lib|
|
222
|
+
require "beaker/host/#{lib}"
|
223
|
+
end
|
228
224
|
end
|
data/lib/beaker/host/aix.rb
CHANGED
@@ -1,11 +1,12 @@
|
|
1
|
-
|
2
|
-
require
|
1
|
+
[ 'host', 'command_factory' ].each do |lib|
|
2
|
+
require "beaker/#{lib}"
|
3
|
+
end
|
3
4
|
|
4
5
|
module Aix
|
5
6
|
class Host < Unix::Host
|
6
|
-
|
7
|
-
|
8
|
-
|
7
|
+
[ 'user', 'group', 'file' ].each do |lib|
|
8
|
+
require "beaker/host/aix/#{lib}"
|
9
|
+
end
|
9
10
|
|
10
11
|
include Aix::User
|
11
12
|
include Aix::Group
|
data/lib/beaker/host/unix.rb
CHANGED
@@ -1,15 +1,12 @@
|
|
1
|
-
|
2
|
-
require
|
3
|
-
|
4
|
-
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'options'))
|
1
|
+
[ 'host', 'command_factory', 'command', 'options' ].each do |lib|
|
2
|
+
require "beaker/#{lib}"
|
3
|
+
end
|
5
4
|
|
6
5
|
module Unix
|
7
6
|
class Host < Beaker::Host
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
require File.expand_path(File.join(File.dirname(__FILE__), 'unix', 'pkg'))
|
12
|
-
require File.expand_path(File.join(File.dirname(__FILE__), 'unix', 'file'))
|
7
|
+
[ 'user', 'group', 'exec', 'pkg', 'file' ].each do |lib|
|
8
|
+
require "beaker/host/unix/#{lib}"
|
9
|
+
end
|
13
10
|
|
14
11
|
include Unix::User
|
15
12
|
include Unix::Group
|
data/lib/beaker/host/windows.rb
CHANGED
@@ -1,15 +1,12 @@
|
|
1
|
-
|
2
|
-
require
|
3
|
-
|
4
|
-
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'options'))
|
1
|
+
[ 'host', 'command_factory', 'command', 'options' ].each do |lib|
|
2
|
+
require "beaker/#{lib}"
|
3
|
+
end
|
5
4
|
|
6
5
|
module Windows
|
7
6
|
class Host < Beaker::Host
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
require File.expand_path(File.join(File.dirname(__FILE__), 'windows', 'pkg'))
|
12
|
-
require File.expand_path(File.join(File.dirname(__FILE__), 'windows', 'file'))
|
7
|
+
[ 'user', 'group', 'exec', 'pkg', 'file' ].each do |lib|
|
8
|
+
require "beaker/host/windows/#{lib}"
|
9
|
+
end
|
13
10
|
|
14
11
|
include Windows::User
|
15
12
|
include Windows::Group
|
@@ -1,9 +1,5 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require "beaker/#{lib}"
|
4
|
-
rescue LoadError
|
5
|
-
require File.expand_path(File.join(File.dirname(__FILE__), lib))
|
6
|
-
end
|
1
|
+
[ 'command' ].each do |lib|
|
2
|
+
require "beaker/#{lib}"
|
7
3
|
end
|
8
4
|
|
9
5
|
module Beaker
|
@@ -413,5 +409,30 @@ module Beaker
|
|
413
409
|
end
|
414
410
|
end
|
415
411
|
|
412
|
+
# Setup files for enabling requests to pass to a proxy server
|
413
|
+
# This works for the APT package manager on debian and ubuntu
|
414
|
+
# and YUM package manager on el, centos, fedora and redhat.
|
415
|
+
# @param [Host, Array<Host>, String, Symbol] host One or more hosts to act upon
|
416
|
+
# @param [Hash{Symbol=>String}] opts Options to alter execution.
|
417
|
+
# @option opts [Beaker::Logger] :logger A {Beaker::Logger} object
|
418
|
+
def package_proxy host, opts
|
419
|
+
logger = opts[:logger]
|
420
|
+
|
421
|
+
if host.is_a? Array
|
422
|
+
host.map { |h| package_proxy(h, opts) }
|
423
|
+
else
|
424
|
+
logger.debug("enabling proxy support on #{host.name}")
|
425
|
+
case host['platform']
|
426
|
+
when /ubuntu/, /debian/
|
427
|
+
host.exec(Command.new("echo 'Acquire::http::Proxy \"#{opts[:package_proxy]}/\";' >> /etc/apt/apt.conf.d/10proxy"))
|
428
|
+
when /^el-/, /centos/, /fedora/, /redhat/
|
429
|
+
host.exec(Command.new("echo 'proxy=#{opts[:package_proxy]}/' >> /etc/yum.conf"))
|
430
|
+
else
|
431
|
+
logger.debug("Attempting to enable package manager proxy support on non-supported platform: #{host.name}: #{host['platform']}")
|
432
|
+
end
|
433
|
+
end
|
434
|
+
end
|
435
|
+
|
416
436
|
end
|
437
|
+
|
417
438
|
end
|
data/lib/beaker/hypervisor.rb
CHANGED
@@ -1,9 +1,5 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require lib
|
4
|
-
rescue LoadError
|
5
|
-
require File.expand_path(File.join(File.dirname(__FILE__), lib))
|
6
|
-
end
|
1
|
+
[ 'host_prebuilt_steps' ].each do |lib|
|
2
|
+
require "beaker/#{lib}"
|
7
3
|
end
|
8
4
|
|
9
5
|
module Beaker
|
@@ -51,7 +47,13 @@ module Beaker
|
|
51
47
|
when /none/
|
52
48
|
Beaker::Hypervisor
|
53
49
|
else
|
54
|
-
|
50
|
+
# Custom hypervisor
|
51
|
+
begin
|
52
|
+
require "beaker/hypervisor/#{type}"
|
53
|
+
rescue LoadError
|
54
|
+
raise "Invalid hypervisor: #{type}"
|
55
|
+
end
|
56
|
+
const_get("Beaker::#{type.capitalize}")
|
55
57
|
end
|
56
58
|
|
57
59
|
hypervisor = hyper_class.new(hosts_to_provision, options)
|
@@ -89,6 +91,9 @@ module Beaker
|
|
89
91
|
if @options[:add_master_entry]
|
90
92
|
add_master_entry(@hosts, @options)
|
91
93
|
end
|
94
|
+
if @options[:package_proxy]
|
95
|
+
package_proxy(@hosts, @options)
|
96
|
+
end
|
92
97
|
end
|
93
98
|
|
94
99
|
#Default validation steps to be run for a given hypervisor
|
@@ -98,7 +103,7 @@ module Beaker
|
|
98
103
|
end
|
99
104
|
end
|
100
105
|
|
101
|
-
#Generate a random
|
106
|
+
#Generate a random string composted of letter and numbers
|
102
107
|
def generate_host_name
|
103
108
|
CHARMAP[rand(25)] + (0...14).map{CHARMAP[rand(CHARMAP.length)]}.join
|
104
109
|
end
|
@@ -106,10 +111,6 @@ module Beaker
|
|
106
111
|
end
|
107
112
|
end
|
108
113
|
|
109
|
-
|
110
|
-
|
111
|
-
require "hypervisor/#{lib}"
|
112
|
-
rescue LoadError
|
113
|
-
require File.expand_path(File.join(File.dirname(__FILE__), "hypervisor", lib))
|
114
|
-
end
|
114
|
+
[ 'vsphere_helper', 'vagrant', 'fusion', 'blimper', 'aws_sdk', 'vsphere', 'vcloud', 'vcloud_pooled', 'aixer', 'solaris', 'docker', 'google_compute' ].each do |lib|
|
115
|
+
require "beaker/hypervisor/#{lib}"
|
115
116
|
end
|
@@ -27,6 +27,7 @@ module Beaker
|
|
27
27
|
#@option options [String] :gce_machine_type A Google Compute machine type used to create instances, defaults to n1-highmem-2
|
28
28
|
#@option options [Integer] :timeout The amount of time to attempt execution before quiting and exiting with failure
|
29
29
|
def initialize(google_hosts, options)
|
30
|
+
require 'beaker/hypervisor/google_compute_helper'
|
30
31
|
@options = options
|
31
32
|
@logger = options[:logger]
|
32
33
|
@hosts = google_hosts
|
@@ -1,10 +1,6 @@
|
|
1
1
|
require 'yaml' unless defined?(YAML)
|
2
2
|
require 'rbvmomi'
|
3
|
-
|
4
|
-
require 'beaker/logger'
|
5
|
-
rescue LoadError
|
6
|
-
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'logger.rb'))
|
7
|
-
end
|
3
|
+
require 'beaker/logger'
|
8
4
|
|
9
5
|
class VsphereHelper
|
10
6
|
def initialize vInfo
|
@@ -1,9 +1,5 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require "beaker/#{lib}"
|
4
|
-
rescue LoadError
|
5
|
-
require File.expand_path(File.join(File.dirname(__FILE__), lib))
|
6
|
-
end
|
1
|
+
[ 'hypervisor' ].each do |lib|
|
2
|
+
require "beaker/#{lib}"
|
7
3
|
end
|
8
4
|
|
9
5
|
module Beaker
|
@@ -77,6 +73,16 @@ module Beaker
|
|
77
73
|
end
|
78
74
|
end
|
79
75
|
|
76
|
+
# configure proxy on all provioned machines
|
77
|
+
#@raise [Exception] Raise an exception if virtual machines fail to be configured
|
78
|
+
def package_proxy
|
79
|
+
if @hypervisors
|
80
|
+
@hypervisors.each_key do |type|
|
81
|
+
@hypervisors[type].package_proxy
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
80
86
|
#Shut down network connections and revert all provisioned virtual machines
|
81
87
|
def cleanup
|
82
88
|
#shut down connections
|