cucumber-chef 2.0.4 → 2.0.5
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.
- data/.travis.yml +0 -3
- data/TODO.md +3 -3
- data/bin/cc-knife +2 -2
- data/bin/cc-push +38 -0
- data/bin/cc-server +49 -0
- data/bin/cucumber-chef +23 -51
- data/cucumber-chef.gemspec +4 -4
- data/lib/cucumber/chef.rb +1 -11
- data/lib/cucumber/chef/bootstrap.rb +7 -7
- data/lib/cucumber/chef/helpers.rb +2 -8
- data/lib/cucumber/chef/helpers/chef_server.rb +1 -0
- data/lib/cucumber/chef/helpers/container.rb +11 -8
- data/lib/cucumber/chef/helpers/server.rb +10 -10
- data/lib/cucumber/chef/helpers/test_lab.rb +1 -1
- data/lib/cucumber/chef/provisioner.rb +11 -11
- data/lib/cucumber/chef/steps/minitest_steps.rb +2 -2
- data/lib/cucumber/chef/steps/provision_steps.rb +5 -5
- data/lib/cucumber/chef/steps/ssh_steps.rb +21 -79
- data/lib/cucumber/chef/templates/bootstrap/ubuntu-precise-test-lab.erb +8 -8
- data/lib/cucumber/chef/templates/cucumber-chef/knife-rb.erb +4 -4
- data/lib/cucumber/chef/templates/cucumber/env.rb +60 -17
- data/lib/cucumber/chef/templates/cucumber/example_feature.erb +1 -1
- data/lib/cucumber/chef/test_lab.rb +4 -2
- data/lib/cucumber/chef/utility.rb +12 -0
- data/lib/cucumber/chef/version.rb +1 -1
- data/spec/spec_helper.rb +1 -1
- metadata +39 -42
- data/bin/push-cucumber-chef +0 -38
- data/lib/cucumber/chef/command.rb +0 -78
- data/lib/cucumber/chef/logger.rb +0 -90
- data/lib/cucumber/chef/ssh.rb +0 -190
- data/lib/cucumber/chef/tcp_socket.rb +0 -83
- data/lib/cucumber/chef/template.rb +0 -57
- data/lib/cucumber/chef/test_runner.rb +0 -103
@@ -27,7 +27,7 @@ module Cucumber::Chef::Helpers::TestLab
|
|
27
27
|
dhcpd_config = File.join("/etc/dhcp/test-lab.conf")
|
28
28
|
File.open(dhcpd_config, 'w') do |f|
|
29
29
|
f.puts(Cucumber::Chef.generate_do_not_edit_warning("DHCPD Configuration"))
|
30
|
-
|
30
|
+
@servers.each do |key, value|
|
31
31
|
f.puts
|
32
32
|
f.puts("host #{key} {")
|
33
33
|
f.puts(" hardware ethernet #{value[:mac]};")
|
@@ -37,12 +37,12 @@ module Cucumber
|
|
37
37
|
@stdout, @stderr, @stdin = stdout, stderr, stdin
|
38
38
|
@stdout.sync = true if @stdout.respond_to?(:sync=)
|
39
39
|
|
40
|
-
@ssh =
|
41
|
-
@ssh.config
|
42
|
-
@ssh.config
|
43
|
-
@ssh.config
|
40
|
+
@ssh = ZTK::SSH.new(:stdout => @stdout, :stderr => @stderr, :stdin => @stdin)
|
41
|
+
@ssh.config.host_name = @server.public_ip_address
|
42
|
+
@ssh.config.user = "ubuntu"
|
43
|
+
@ssh.config.keys = Cucumber::Chef::Config[:aws][:identity_file]
|
44
44
|
|
45
|
-
@command = Cucumber::Chef::Command.new(@stdout, @stderr, @stdin)
|
45
|
+
# @command = Cucumber::Chef::Command.new(@stdout, @stderr, @stdin)
|
46
46
|
|
47
47
|
@cookbooks_path = File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "..", "chef_repo", "cookbooks"))
|
48
48
|
@roles_path = File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "..", "chef_repo", "roles"))
|
@@ -112,7 +112,7 @@ module Cucumber
|
|
112
112
|
@stdout.print("Downloading chef-server credentials...")
|
113
113
|
Cucumber::Chef.spinner do
|
114
114
|
local_path = Cucumber::Chef.locate(:directory, ".cucumber-chef")
|
115
|
-
remote_path = File.join("/", "home", @ssh.config
|
115
|
+
remote_path = File.join("/", "home", @ssh.config.user, ".chef")
|
116
116
|
|
117
117
|
files = [ "#{Cucumber::Chef::Config[:user]}.pem", "validation.pem" ]
|
118
118
|
files.each do |file|
|
@@ -128,7 +128,7 @@ module Cucumber
|
|
128
128
|
@stdout.print("Downloading container SSH credentials...")
|
129
129
|
Cucumber::Chef.spinner do
|
130
130
|
local_path = Cucumber::Chef.locate(:directory, ".cucumber-chef")
|
131
|
-
remote_path = File.join("/", "home", @ssh.config
|
131
|
+
remote_path = File.join("/", "home", @ssh.config.user, ".ssh")
|
132
132
|
|
133
133
|
files = { "id_rsa" => "id_rsa-ubuntu" }
|
134
134
|
files.each do |remote_file, local_file|
|
@@ -155,7 +155,7 @@ module Cucumber
|
|
155
155
|
}
|
156
156
|
|
157
157
|
File.open(knife_rb, 'w') do |f|
|
158
|
-
f.puts(
|
158
|
+
f.puts(ZTK::Template.render(template_file, context))
|
159
159
|
end
|
160
160
|
end
|
161
161
|
@stdout.print("done.\n")
|
@@ -259,13 +259,13 @@ module Cucumber
|
|
259
259
|
def wait_for_chef_server
|
260
260
|
@stdout.print("Waiting for Chef-Server...")
|
261
261
|
Cucumber::Chef.spinner do
|
262
|
-
|
262
|
+
ZTK::TCPSocketCheck.new(:host => @server.public_ip_address, :port => 4000, :data => "GET").wait
|
263
263
|
end
|
264
264
|
@stdout.puts("done.\n")
|
265
265
|
|
266
266
|
@stdout.print("Waiting for Chef-WebUI...")
|
267
267
|
Cucumber::Chef.spinner do
|
268
|
-
|
268
|
+
ZTK::TCPSocketCheck.new(:host => @server.public_ip_address, :port => 4040, :data => "GET").wait
|
269
269
|
end
|
270
270
|
@stdout.puts("done.\n")
|
271
271
|
end
|
@@ -283,7 +283,7 @@ module Cucumber
|
|
283
283
|
|
284
284
|
@stdout.print("Waiting for SSHD...")
|
285
285
|
Cucumber::Chef.spinner do
|
286
|
-
|
286
|
+
ZTK::TCPSocketCheck.new(:host => @server.public_ip_address, :port => 22).wait
|
287
287
|
end
|
288
288
|
@stdout.puts("done.\n")
|
289
289
|
|
@@ -20,10 +20,10 @@
|
|
20
20
|
################################################################################
|
21
21
|
|
22
22
|
When /^I enable the running of MiniTest suites for "(.*?)"$/ do |name|
|
23
|
-
enable_minitest(name)
|
23
|
+
$drb_test_lab.enable_minitest(name)
|
24
24
|
end
|
25
25
|
|
26
26
|
Then /^the tests should run and pass on "(.*?)"$/ do |name|
|
27
|
-
results = run_minitests(name)
|
27
|
+
results = $drb_test_lab.run_minitests(name)
|
28
28
|
results.last.scan(/assertions.*(\d).*failures.*(\d).*errors.*(\d).*skips/).flatten.map { |v| v.to_i }.should == [0,0,0]
|
29
29
|
end
|
@@ -44,21 +44,21 @@ And /^"([^\"]*)" has a MAC address of "([^\"]*)"$/ do |name, mac|
|
|
44
44
|
end
|
45
45
|
|
46
46
|
And /^"([^\"]*)" has been provisioned$/ do |name|
|
47
|
-
server_create(name, @servers[name])
|
47
|
+
$drb_test_lab.server_create(name, @servers[name])
|
48
48
|
end
|
49
49
|
|
50
50
|
And /^the "([^\"]*)" role has been added to the "([^\"]*)" run list$/ do |role, name|
|
51
|
-
chef_set_client_attributes(@servers[name], :run_list => ["role[#{role}]"])
|
51
|
+
$drb_test_lab.chef_set_client_attributes(@servers[name], :run_list => ["role[#{role}]"])
|
52
52
|
end
|
53
53
|
|
54
54
|
And /^the "([^\"]*)" recipe has been added to the "([^\"]*)" run list$/ do |recipe, name|
|
55
|
-
chef_set_client_attributes(@servers[name], :run_list => ["recipe[#{recipe}]"])
|
55
|
+
$drb_test_lab.chef_set_client_attributes(@servers[name], :run_list => ["recipe[#{recipe}]"])
|
56
56
|
end
|
57
57
|
|
58
58
|
And /^"([^\"]*)" is in the "([^\"]*)" environment$/ do |name, environment|
|
59
|
-
chef_set_client_config(:environment => environment)
|
59
|
+
$drb_test_lab.chef_set_client_config(:environment => environment)
|
60
60
|
end
|
61
61
|
|
62
62
|
And /^the chef-client has been run on "([^\"]*)"$/ do |name|
|
63
|
-
chef_run_client(name)
|
63
|
+
$drb_test_lab.chef_run_client(name)
|
64
64
|
end
|
@@ -1,81 +1,23 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
Then /^I can ssh to "([^\"]*)" with the following credentials:$/ do |hostname, table|
|
6
|
-
@auth_methods ||= %w(publickey password)
|
7
|
-
|
8
|
-
credentials = table.hashes
|
9
|
-
credentials.each do |creds|
|
10
|
-
lambda {
|
11
|
-
Net::SSH.start(session["hostname"], creds["username"], :password => creds["password"], :auth_methods => @auth_methods)
|
12
|
-
}.should_not raise_error(Net::SSH::AuthenticationFailed)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
Then /^I can ssh to the following hosts with these credentials:$/ do |table|
|
17
|
-
@keys ||= []
|
18
|
-
@auth_methods ||= %w(password)
|
19
|
-
session_details = table.hashes
|
20
|
-
|
21
|
-
session_details.each do |session|
|
22
|
-
# initialize a list of keys and auth methods for just this session, as
|
23
|
-
# session can have session-specific keys mixed with global keys
|
24
|
-
session_keys = Array.new(@keys)
|
25
|
-
session_auth_methods = Array.new(@auth_methods)
|
26
|
-
|
27
|
-
# you can pass in a keyfile in the session details, so we need to
|
28
|
-
if session["keyfile"]
|
29
|
-
session_keys << session["keyfile"]
|
30
|
-
session_auth_methods << "publickey"
|
31
|
-
end
|
32
|
-
|
33
|
-
lambda {
|
34
|
-
@connection = Net::SSH.start(session["hostname"],
|
35
|
-
session["username"],
|
36
|
-
:password => session["password"],
|
37
|
-
:auth_methods => session_auth_methods,
|
38
|
-
:keys => session_keys)
|
39
|
-
}.should_not raise_error
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
Given /^I have the following public keys:$/ do |table|
|
44
|
-
@keys = []
|
45
|
-
public_key_paths = table.hashes
|
1
|
+
When /^I ssh to "([^\"]*)" with the following credentials:$/ do |hostname, table|
|
2
|
+
session = table.hashes.first
|
3
|
+
lambda {
|
46
4
|
|
47
|
-
|
48
|
-
File.exist?(key["keyfile"]).should be_true
|
49
|
-
FileUtils.chmod(0600, key["keyfile"])
|
50
|
-
@keys << key["keyfile"]
|
51
|
-
end
|
5
|
+
@connection = ZTK::SSH.new
|
52
6
|
|
53
|
-
|
54
|
-
|
55
|
-
|
7
|
+
@connection.config.proxy_host_name = $test_lab.labs_running.first.public_ip_address
|
8
|
+
@connection.config.proxy_user = "ubuntu"
|
9
|
+
@connection.config.proxy_keys = Cucumber::Chef.locate(:file, ".cucumber-chef", "id_rsa-#{@connection.config.proxy_user}")
|
56
10
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
session_keys = Array.new(@keys)
|
62
|
-
session_auth_methods = Array.new(@auth_methods)
|
63
|
-
if session["keyfile"]
|
64
|
-
session_keys << session["keyfile"]
|
65
|
-
session_auth_methods << "publickey"
|
66
|
-
end
|
11
|
+
hostname and (@connection.config.host_name = hostname)
|
12
|
+
session["username"] and (@connection.config.user = session["username"])
|
13
|
+
session["password"] and (@connection.config.password = session["password"])
|
14
|
+
session["keyfile"] and (@connection.config.keys = session["keyfile"])
|
67
15
|
|
68
|
-
lambda {
|
69
|
-
@connection = Net::SSH.start(hostname,
|
70
|
-
session["username"],
|
71
|
-
:password => session["password"],
|
72
|
-
:auth_methods => session_auth_methods,
|
73
|
-
:keys => session_keys)
|
74
16
|
}.should_not raise_error
|
75
17
|
end
|
76
18
|
|
77
19
|
And /^I run "([^\"]*)"$/ do |command|
|
78
|
-
@output = @connection.exec
|
20
|
+
@output = @connection.exec(command, :silence => true).output
|
79
21
|
end
|
80
22
|
|
81
23
|
Then /^I should( not)? see "([^\"]*)" in the output$/ do |boolean, string|
|
@@ -100,14 +42,14 @@ Then /^(path|directory|file|symlink) "([^\"]*)" should exist$/ do |type, path|
|
|
100
42
|
command = "ls %s" % [
|
101
43
|
parent
|
102
44
|
]
|
103
|
-
@output = @connection.exec
|
45
|
+
@output = @connection.exec(command).output
|
104
46
|
@output.should =~ /#{child}/
|
105
47
|
|
106
48
|
# if a specific type (directory|file) was specified, test for it
|
107
49
|
command = "stat -c %%F %s" % [
|
108
50
|
path
|
109
51
|
]
|
110
|
-
@output = @connection.exec
|
52
|
+
@output = @connection.exec(command).output
|
111
53
|
types = {
|
112
54
|
"file" => /regular file/,
|
113
55
|
"directory" => /directory/,
|
@@ -132,7 +74,7 @@ Then /^(?:path|directory|file) "([^\"]*)" should be owned by "([^\"]*)"$/ do |pa
|
|
132
74
|
command = "stat -c %%U:%%G %s" % [
|
133
75
|
path
|
134
76
|
]
|
135
|
-
@output = @connection.exec
|
77
|
+
@output = @connection.exec(command).output
|
136
78
|
@output.should =~ /#{owner}/
|
137
79
|
end
|
138
80
|
|
@@ -144,7 +86,7 @@ Then /^file "([^\"]*)" should( not)? contain/ do |path, boolean, content|
|
|
144
86
|
|
145
87
|
# turn the command-line output and the expectation string into Arrays and strip
|
146
88
|
# leading and trailing cruft from members
|
147
|
-
@output = @connection.exec
|
89
|
+
@output = @connection.exec(command).output.split("\n").map{ |i| i.strip }
|
148
90
|
content = content.split("\n").map{ |i| i.strip }
|
149
91
|
|
150
92
|
# assume no match
|
@@ -179,14 +121,14 @@ end
|
|
179
121
|
|
180
122
|
Then /^package "([^\"]*)" should be installed$/ do |package|
|
181
123
|
command = ""
|
182
|
-
if (dpkg = @connection.exec
|
124
|
+
if (dpkg = @connection.exec("which dpkg 2> /dev/null").output).length > 0
|
183
125
|
command = "#{dpkg.chomp} --get-selections"
|
184
|
-
elsif (yum = @connection.exec
|
126
|
+
elsif (yum = @connection.exec("which yum 2> /dev/null").output).length > 0
|
185
127
|
command = "#{yum.chomp} -q list installed"
|
186
128
|
# could easily add more cases here, if I knew what they were :)
|
187
129
|
end
|
188
130
|
|
189
|
-
@output = @connection.exec
|
131
|
+
@output = @connection.exec(command)
|
190
132
|
@output.should =~ /#{package}/
|
191
133
|
end
|
192
134
|
|
@@ -196,7 +138,7 @@ end
|
|
196
138
|
# * service "foo" is running
|
197
139
|
# * application "foo" is running
|
198
140
|
# * process "foo" is running
|
199
|
-
#
|
141
|
+
#
|
200
142
|
# basically because I couldn't decide what they should be called. Maybe there's
|
201
143
|
# an Official Cucumber-chef Opinion on this. Still, Rubular is fun :)
|
202
144
|
|
@@ -204,7 +146,7 @@ end
|
|
204
146
|
# works
|
205
147
|
Then /^(?:(?:service|application|process)? )?"([^\"]*)" should( not)? be running$/ do |service, boolean|
|
206
148
|
command = "ps ax"
|
207
|
-
@output = @connection.exec
|
149
|
+
@output = @connection.exec(command).output
|
208
150
|
if (!boolean)
|
209
151
|
@output.should =~ /#{service}/
|
210
152
|
else
|
@@ -4,9 +4,9 @@ CUCUMBER_CHEF_BOOTSTRAP_DONE="/.cucumber-chef-bootstrap-finished"
|
|
4
4
|
|
5
5
|
export DEBIAN_FRONTEND=noninteractive
|
6
6
|
|
7
|
-
sed -i "s/127.0.0.1 localhost/127.0.0.1 <%= @
|
8
|
-
echo "<%= @
|
9
|
-
hostname <%= @
|
7
|
+
sed -i "s/127.0.0.1 localhost/127.0.0.1 <%= @hostname %> <%= @hostname.split(".")[0] %> localhost/" /etc/hosts
|
8
|
+
echo "<%= @hostname %>" | tee /etc/hostname
|
9
|
+
hostname <%= @hostname %>
|
10
10
|
|
11
11
|
echo "deb http://apt.opscode.com/ `lsb_release -cs`-0.10 main" | tee /etc/apt/sources.list.d/opscode.list
|
12
12
|
mkdir -p /etc/apt/trusted.gpg.d
|
@@ -19,9 +19,9 @@ chown -R ${SUDO_USER}:${SUDO_USER} ${HOME}/.gnupg
|
|
19
19
|
apt-get -q -y upgrade
|
20
20
|
|
21
21
|
cat <<EOF | debconf-set-selections
|
22
|
-
chef chef/chef_server_url string http://<%= @
|
23
|
-
chef-solr chef-solr/amqp_password password <%= @
|
24
|
-
chef-server-webui chef-server-webui/admin_password password <%= @
|
22
|
+
chef chef/chef_server_url string http://<%= @chef_server %>:4000
|
23
|
+
chef-solr chef-solr/amqp_password password <%= @amqp_password %>
|
24
|
+
chef-server-webui chef-server-webui/admin_password password <%= @admin_password %>
|
25
25
|
EOF
|
26
26
|
|
27
27
|
apt-get -q -y --force-yes install chef chef-server
|
@@ -56,7 +56,7 @@ EOF
|
|
56
56
|
chmod +x ${KNIFE_CONFIG_EXP_FILE}
|
57
57
|
${KNIFE_CONFIG_EXP_FILE}
|
58
58
|
|
59
|
-
knife client create <%= @
|
59
|
+
knife client create <%= @user %> -d -a -f ${HOME}/.chef/<%= @user %>.pem
|
60
60
|
|
61
61
|
chown -R ${SUDO_USER}:${SUDO_USER} ${HOME}
|
62
62
|
|
@@ -93,7 +93,7 @@ if [ ! -f /etc/chef/client.pem ]; then
|
|
93
93
|
fi
|
94
94
|
|
95
95
|
cat <<EOF > /etc/chef/first-boot.json
|
96
|
-
<%= @
|
96
|
+
<%= @attributes.to_json %>
|
97
97
|
EOF
|
98
98
|
|
99
99
|
touch ${CUCUMBER_CHEF_BOOTSTRAP_DONE}
|
@@ -2,16 +2,16 @@ current_dir = File.dirname(__FILE__)
|
|
2
2
|
|
3
3
|
log_level :debug
|
4
4
|
log_location STDOUT
|
5
|
-
node_name "<%= @
|
6
|
-
client_key "#{current_dir}/<%= @
|
5
|
+
node_name "<%= @user %>"
|
6
|
+
client_key "#{current_dir}/<%= @user %>.pem"
|
7
7
|
validation_client_name "chef-validator"
|
8
8
|
validation_key "#{current_dir}/validation.pem"
|
9
|
-
chef_server_url "http://<%= @
|
9
|
+
chef_server_url "http://<%= @chef_server %>:4000"
|
10
10
|
cache_type "BasicFile"
|
11
11
|
cookbook_path ['#{current_dir}/../cookbooks']
|
12
12
|
|
13
13
|
cache_options(:path => "#{current_dir}/checksums")
|
14
|
-
<% if @
|
14
|
+
<% if @librarian_chef -%>
|
15
15
|
|
16
16
|
require 'librarian/chef/integration/knife'
|
17
17
|
cookbook_path Librarian::Chef.install_path, "#{current_dir}/../site-cookbooks"
|
@@ -2,7 +2,6 @@ require 'rspec/expectations'
|
|
2
2
|
require 'cucumber/chef'
|
3
3
|
require 'cucumber/chef/helpers'
|
4
4
|
require 'cucumber/chef/steps'
|
5
|
-
require 'cucumber/chef/version'
|
6
5
|
|
7
6
|
class CustomWorld
|
8
7
|
include Cucumber::Chef
|
@@ -13,19 +12,54 @@ World do
|
|
13
12
|
CustomWorld.new
|
14
13
|
end
|
15
14
|
|
16
|
-
|
15
|
+
################################################################################
|
17
16
|
|
18
|
-
|
19
|
-
|
17
|
+
$logger = ZTK::Logger.new(Cucumber::Chef.log_file)
|
18
|
+
Cucumber::Chef.is_rc? and ($logger.level = ZTK::Logger::DEBUG)
|
19
|
+
|
20
|
+
message = "cucumber-chef v#{Cucumber::Chef::VERSION}"
|
21
|
+
print(" * #{message}")
|
22
|
+
$logger.info { message }
|
23
|
+
|
24
|
+
Cucumber::Chef::Config.load
|
25
|
+
if ($test_lab = Cucumber::Chef::TestLab.new) && ($test_lab.labs_running.count > 0)
|
26
|
+
|
27
|
+
# fire up our drb server
|
28
|
+
ssh = ZTK::SSH.new
|
29
|
+
ssh.config.host_name = $test_lab.labs_running.first.public_ip_address
|
30
|
+
ssh.config.user = "ubuntu"
|
31
|
+
ssh.config.keys = Cucumber::Chef.locate(:file, ".cucumber-chef", "id_rsa-#{ssh.config.user}")
|
32
|
+
ssh.exec("nohup sudo cc-server #{Cucumber::Chef.external_ip}")
|
33
|
+
Cucumber::Chef.spinner do
|
34
|
+
ZTK::TCPSocketCheck.new(:host => $test_lab.labs_running.first.public_ip_address, :port => 8787, :data => "\n\n").wait
|
35
|
+
end
|
36
|
+
|
37
|
+
# load our test lab knife config
|
38
|
+
knife_rb = Cucumber::Chef.locate(:file, ".cucumber-chef", "knife.rb")
|
20
39
|
Chef::Config.from_file(knife_rb)
|
21
40
|
|
22
|
-
|
41
|
+
# initialize our drb object
|
42
|
+
$drb_test_lab ||= DRbObject.new_with_uri("druby://#{$test_lab.labs_running.first.public_ip_address}:8787")
|
43
|
+
$drb_test_lab and DRb.start_service
|
44
|
+
$drb_test_lab.servers = Hash.new(nil)
|
45
|
+
|
46
|
+
else
|
47
|
+
puts("No running cucumber-chef test labs to connect to!")
|
48
|
+
exit(1)
|
49
|
+
end
|
50
|
+
|
51
|
+
puts(" - connected to test lab")
|
52
|
+
|
53
|
+
################################################################################
|
54
|
+
|
55
|
+
Before do
|
56
|
+
$servers_bin ||= (File.join(Cucumber::Chef.locate(:directory, ".cucumber-chef"), "servers.bin") rescue File.expand_path(File.join(ENV['HOME'], "servers.bin")))
|
23
57
|
|
24
58
|
# cleanup previous lxc containers if asked
|
25
|
-
if
|
59
|
+
if ENV['DESTROY']
|
26
60
|
log("servers", "are being destroyed")
|
27
|
-
servers.each do |name|
|
28
|
-
server_destroy(name)
|
61
|
+
$drb_test_lab.servers.each do |name|
|
62
|
+
$drb_test_lab.server_destroy(name)
|
29
63
|
end
|
30
64
|
File.exists?($servers_bin) && File.delete($servers_bin)
|
31
65
|
else
|
@@ -33,24 +67,33 @@ Before do
|
|
33
67
|
end
|
34
68
|
|
35
69
|
if File.exists?($servers_bin)
|
36
|
-
$servers = Marshal.load(IO.read($servers_bin))
|
70
|
+
$drb_test_lab.servers = (Marshal.load(IO.read($servers_bin)) rescue Hash.new(nil))
|
37
71
|
end
|
38
72
|
|
39
|
-
chef_set_client_config(:chef_server_url => "http://192.168.255.254:4000",
|
40
|
-
|
73
|
+
$drb_test_lab.chef_set_client_config(:chef_server_url => "http://192.168.255.254:4000",
|
74
|
+
:validation_client_name => "chef-validator")
|
41
75
|
end
|
42
76
|
|
43
|
-
|
44
|
-
@connection.close if @connection
|
77
|
+
################################################################################
|
45
78
|
|
79
|
+
After do |scenario|
|
46
80
|
File.open($servers_bin, 'w') do |f|
|
47
|
-
f.puts(Marshal.dump($servers))
|
81
|
+
f.puts(Marshal.dump($drb_test_lab.servers))
|
48
82
|
end
|
49
83
|
|
50
84
|
Kernel.exit if scenario.failed?
|
51
85
|
|
52
|
-
# cleanup non-persistent lxc containers
|
53
|
-
$servers.select{ |name, attributes| !attributes[:persist] }.each do |name, attributes|
|
54
|
-
server_destroy(name)
|
86
|
+
# cleanup non-persistent lxc containers between tests
|
87
|
+
$drb_test_lab.servers.select{ |name, attributes| !attributes[:persist] }.each do |name, attributes|
|
88
|
+
$drb_test_lab.server_destroy(name)
|
55
89
|
end
|
90
|
+
|
56
91
|
end
|
92
|
+
|
93
|
+
################################################################################
|
94
|
+
|
95
|
+
Kernel.at_exit do
|
96
|
+
$drb_test_lab.shutdown
|
97
|
+
end
|
98
|
+
|
99
|
+
################################################################################
|