cucumber-chef 2.1.0.rc.2 → 2.1.0.rc.3
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/bin/cc-knife +2 -3
- data/bin/cc-push +7 -15
- data/bin/cc-server +38 -7
- data/bin/cucumber-chef +179 -119
- data/cucumber-chef.gemspec +1 -1
- data/lib/cucumber/chef.rb +2 -2
- data/lib/cucumber/chef/config.rb +24 -16
- data/lib/cucumber/chef/helpers.rb +0 -2
- data/lib/cucumber/chef/helpers/chef_client.rb +20 -23
- data/lib/cucumber/chef/helpers/chef_server.rb +7 -7
- data/lib/cucumber/chef/helpers/command.rb +20 -33
- data/lib/cucumber/chef/helpers/container.rb +55 -22
- data/lib/cucumber/chef/helpers/server.rb +45 -31
- data/lib/cucumber/chef/helpers/test_lab.rb +8 -2
- data/lib/cucumber/chef/helpers/utility.rb +2 -23
- data/lib/cucumber/chef/provider.rb +24 -19
- data/lib/cucumber/chef/providers/aws.rb +90 -121
- data/lib/cucumber/chef/providers/vagrant.rb +92 -36
- data/lib/cucumber/chef/provisioner.rb +52 -94
- data/lib/cucumber/chef/server.rb +42 -36
- data/lib/cucumber/chef/steps/provision_steps.rb +7 -7
- data/lib/cucumber/chef/steps/ssh_steps.rb +9 -4
- data/lib/cucumber/chef/templates/bootstrap/ubuntu-precise-test-lab.erb +13 -7
- data/lib/cucumber/chef/templates/cucumber/cc-hooks.rb +1 -1
- data/lib/cucumber/chef/test_lab.rb +38 -9
- data/lib/cucumber/chef/utility.rb +55 -48
- data/lib/cucumber/chef/version.rb +1 -1
- data/spec/cucumber/chef/config_spec.rb +8 -8
- metadata +11 -12
- data/lib/cucumber/chef/bootstrap.rb +0 -95
@@ -27,87 +27,143 @@ module Cucumber
|
|
27
27
|
class Vagrant
|
28
28
|
attr_accessor :env, :vm, :stdout, :stderr, :stdin, :logger
|
29
29
|
|
30
|
+
INVALID_STATES = %w(not_created aborted).map(&:to_sym)
|
31
|
+
RUNNING_STATES = %w(running).map(&:to_sym)
|
32
|
+
SHUTDOWN_STATES = %w(paused saved poweroff).map(&:to_sym)
|
33
|
+
VALID_STATES = RUNNING_STATES+SHUTDOWN_STATES
|
34
|
+
|
30
35
|
################################################################################
|
31
36
|
|
32
37
|
def initialize(stdout=STDOUT, stderr=STDERR, stdin=STDIN, logger=$logger)
|
33
38
|
@stdout, @stderr, @stdin, @logger = stdout, stderr, stdin, logger
|
34
39
|
@stdout.sync = true if @stdout.respond_to?(:sync=)
|
35
40
|
|
36
|
-
|
37
|
-
@env = ::Vagrant::Environment.new(:ui_class => ::Vagrant::UI::Colored)
|
41
|
+
@env = ::Vagrant::Environment.new
|
42
|
+
# @env = ::Vagrant::Environment.new(:ui_class => ::Vagrant::UI::Colored)
|
38
43
|
@vm = @env.primary_vm
|
39
44
|
end
|
40
45
|
|
46
|
+
################################################################################
|
47
|
+
# CREATE
|
41
48
|
################################################################################
|
42
49
|
|
43
50
|
def create
|
44
|
-
|
45
|
-
|
46
|
-
@stdout.print("Waiting for instance...")
|
47
|
-
Cucumber::Chef.spinner do
|
51
|
+
ZTK::Benchmark.bench(:message => "Creating #{Cucumber::Chef::Config.provider.upcase} instance", :mark => "completed in %0.4f seconds.", :stdout => @stdout) do
|
48
52
|
@env.cli("up")
|
53
|
+
ZTK::TCPSocketCheck.new(:host => self.ip, :port => self.port, :wait => 120).wait
|
49
54
|
end
|
50
|
-
@stdout.puts("done.\n")
|
51
|
-
|
52
|
-
@stdout.print("Waiting for SSHD...")
|
53
|
-
Cucumber::Chef.spinner do
|
54
|
-
ZTK::TCPSocketCheck.new(:host => self.ip, :port => 22, :wait => 120).wait
|
55
|
-
end
|
56
|
-
@stdout.puts("done.\n")
|
57
55
|
|
58
56
|
self
|
57
|
+
|
58
|
+
rescue Exception => e
|
59
|
+
Cucumber::Chef.logger.fatal { e.message }
|
60
|
+
Cucumber::Chef.logger.fatal { e.backtrace.join("\n") }
|
61
|
+
raise VagrantError, e.message
|
59
62
|
end
|
60
63
|
|
64
|
+
################################################################################
|
65
|
+
# DESTROY
|
66
|
+
################################################################################
|
67
|
+
|
61
68
|
def destroy
|
62
|
-
|
69
|
+
if exists?
|
70
|
+
@env.cli("destroy", "--force")
|
71
|
+
else
|
72
|
+
raise VagrantError, "We could not find a test lab!"
|
73
|
+
end
|
74
|
+
|
75
|
+
rescue Exception => e
|
76
|
+
Cucumber::Chef.logger.fatal { e.message }
|
77
|
+
Cucumber::Chef.logger.fatal { e.backtrace.join("\n") }
|
78
|
+
raise VagrantError, e.message
|
63
79
|
end
|
64
80
|
|
81
|
+
################################################################################
|
82
|
+
# UP
|
83
|
+
################################################################################
|
84
|
+
|
65
85
|
def up
|
66
|
-
|
67
|
-
|
86
|
+
if (exists? && dead?)
|
87
|
+
@env.cli("up")
|
88
|
+
ZTK::TCPSocketCheck.new(:host => self.ip, :port => self.port, :wait => 120).wait
|
89
|
+
else
|
90
|
+
raise VagrantError, "We could not find a powered off test lab."
|
91
|
+
end
|
68
92
|
|
69
|
-
|
70
|
-
|
93
|
+
rescue Exception => e
|
94
|
+
Cucumber::Chef.logger.fatal { e.message }
|
95
|
+
Cucumber::Chef.logger.fatal { e.backtrace.join("\n") }
|
96
|
+
raise VagrantError, e.message
|
71
97
|
end
|
72
98
|
|
99
|
+
################################################################################
|
100
|
+
# HALT
|
73
101
|
################################################################################
|
74
102
|
|
75
|
-
def
|
76
|
-
|
103
|
+
def halt
|
104
|
+
if (exists? && alive?)
|
105
|
+
@env.cli("halt")
|
106
|
+
else
|
107
|
+
raise AWSError, "We could not find a running test lab."
|
108
|
+
end
|
109
|
+
|
110
|
+
rescue Exception => e
|
111
|
+
Cucumber::Chef.logger.fatal { e.message }
|
112
|
+
Cucumber::Chef.logger.fatal { e.backtrace.join("\n") }
|
113
|
+
raise VagrantError, e.message
|
77
114
|
end
|
78
115
|
|
79
|
-
|
80
|
-
|
116
|
+
################################################################################
|
117
|
+
# RELOAD
|
118
|
+
################################################################################
|
119
|
+
|
120
|
+
def reload
|
121
|
+
if (exists? && alive?)
|
122
|
+
@env.cli("reload")
|
123
|
+
else
|
124
|
+
raise AWSError, "We could not find a running test lab."
|
125
|
+
end
|
126
|
+
|
127
|
+
rescue Exception => e
|
128
|
+
Cucumber::Chef.logger.fatal { e.message }
|
129
|
+
Cucumber::Chef.logger.fatal { e.backtrace.join("\n") }
|
130
|
+
raise VagrantError, e.message
|
81
131
|
end
|
82
132
|
|
83
|
-
|
84
|
-
|
133
|
+
################################################################################
|
134
|
+
|
135
|
+
def exists?
|
136
|
+
(@env.vms.count > 0)
|
85
137
|
end
|
86
138
|
|
87
|
-
def
|
88
|
-
|
139
|
+
def alive?
|
140
|
+
(RUNNING_STATES.include?(self.state) rescue false)
|
89
141
|
end
|
90
142
|
|
91
|
-
def
|
92
|
-
|
143
|
+
def dead?
|
144
|
+
(SHUTDOWN_STATES.include?(self.state) rescue true)
|
93
145
|
end
|
94
146
|
|
95
147
|
################################################################################
|
96
148
|
|
97
|
-
def
|
98
|
-
|
149
|
+
def id
|
150
|
+
@vm.name
|
151
|
+
end
|
152
|
+
|
153
|
+
def state
|
154
|
+
@vm.state.to_sym
|
99
155
|
end
|
100
156
|
|
101
|
-
def
|
102
|
-
|
157
|
+
def username
|
158
|
+
@vm.config.ssh.username
|
103
159
|
end
|
104
160
|
|
105
|
-
def
|
106
|
-
|
161
|
+
def ip
|
162
|
+
@vm.config.ssh.host
|
107
163
|
end
|
108
164
|
|
109
|
-
def
|
110
|
-
|
165
|
+
def port
|
166
|
+
@vm.config.vm.forwarded_ports.select{ |fwd_port| (fwd_port[:name] == "ssh") }.first[:hostport].to_i
|
111
167
|
end
|
112
168
|
|
113
169
|
################################################################################
|
@@ -25,7 +25,7 @@ module Cucumber
|
|
25
25
|
class ProvisionerError < Error; end
|
26
26
|
|
27
27
|
class Provisioner
|
28
|
-
attr_accessor :stdout, :stderr, :stdin
|
28
|
+
attr_accessor :test_lab, :stdout, :stderr, :stdin
|
29
29
|
|
30
30
|
HOSTNAME = "cucumber-chef.test-lab"
|
31
31
|
PASSWORD = "p@ssw0rd1"
|
@@ -33,28 +33,20 @@ module Cucumber
|
|
33
33
|
################################################################################
|
34
34
|
|
35
35
|
def initialize(test_lab, stdout=STDOUT, stderr=STDERR, stdin=STDIN)
|
36
|
-
@test_lab = test_lab
|
37
36
|
@stdout, @stderr, @stdin = stdout, stderr, stdin
|
38
37
|
@stdout.sync = true if @stdout.respond_to?(:sync=)
|
39
38
|
|
40
|
-
@
|
41
|
-
@ssh.config.host_name = @test_lab.ip
|
42
|
-
@ssh.config.port = @test_lab.port
|
43
|
-
@ssh.config.user = Cucumber::Chef.lab_user
|
44
|
-
@ssh.config.keys = Cucumber::Chef::Config[Cucumber::Chef::Config[:provider]][:identity_file]
|
45
|
-
|
46
|
-
# @command = Cucumber::Chef::Command.new(@stdout, @stderr, @stdin)
|
39
|
+
@test_lab = test_lab
|
47
40
|
|
48
41
|
@cookbooks_path = File.join(Cucumber::Chef.root_dir, "chef_repo", "cookbooks")
|
49
42
|
@roles_path = File.join(Cucumber::Chef.root_dir, "chef_repo", "roles")
|
43
|
+
@bootstrap_template = File.join(Cucumber::Chef.root_dir, "lib", "cucumber", "chef", "templates", "bootstrap", "ubuntu-precise-test-lab.erb")
|
50
44
|
end
|
51
45
|
|
52
46
|
################################################################################
|
53
47
|
|
54
48
|
def build
|
55
|
-
|
56
|
-
|
57
|
-
bootstrap(template_file)
|
49
|
+
bootstrap
|
58
50
|
wait_for_chef_server
|
59
51
|
|
60
52
|
download_chef_credentials
|
@@ -77,101 +69,99 @@ module Cucumber
|
|
77
69
|
private
|
78
70
|
################################################################################
|
79
71
|
|
80
|
-
def bootstrap
|
81
|
-
raise ProvisionerError, "You must have the environment variable 'USER' set." if !Cucumber::Chef::Config
|
72
|
+
def bootstrap
|
73
|
+
raise ProvisionerError, "You must have the environment variable 'USER' set." if !Cucumber::Chef::Config.user
|
82
74
|
|
83
|
-
|
84
|
-
|
85
|
-
attributes = {
|
75
|
+
ZTK::Benchmark.bench(:message => "Bootstrapping #{Cucumber::Chef::Config.provider.upcase} instance", :mark => "completed in %0.4f seconds.", :stdout => @stdout) do
|
76
|
+
chef_client_attributes = {
|
86
77
|
"run_list" => "role[test_lab]",
|
87
78
|
"cucumber_chef" => {
|
88
79
|
"version" => Cucumber::Chef::VERSION,
|
89
|
-
"prerelease" => Cucumber::Chef::Config
|
80
|
+
"prerelease" => Cucumber::Chef::Config.prerelease
|
90
81
|
},
|
91
82
|
"lab_user" => Cucumber::Chef.lab_user,
|
92
83
|
"lxc_user" => Cucumber::Chef.lxc_user
|
93
84
|
}
|
94
85
|
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
86
|
+
context = {
|
87
|
+
:chef_client_attributes => chef_client_attributes,
|
88
|
+
:amqp_password => Cucumber::Chef::Config.chef[:amqp_password],
|
89
|
+
:admin_password => Cucumber::Chef::Config.chef[:admin_password],
|
90
|
+
:user => Cucumber::Chef::Config.user,
|
91
|
+
:hostname_short => Cucumber::Chef.lab_hostname_short,
|
92
|
+
:hostname_full => Cucumber::Chef.lab_hostname_full
|
93
|
+
}
|
94
|
+
|
95
|
+
local_bootstrap_file = Tempfile.new("bootstrap")
|
96
|
+
local_bootstrap_filename = local_bootstrap_file.path
|
97
|
+
local_bootstrap_file.write(::ZTK::Template.render(@bootstrap_template, context))
|
98
|
+
local_bootstrap_file.close
|
99
|
+
|
100
|
+
remote_bootstrap_filename = File.join(Cucumber::Chef.lab_user_home_dir, "cucumber-chef-bootstrap.sh")
|
101
|
+
|
102
|
+
@test_lab.bootstrap_ssh.upload(local_bootstrap_filename, remote_bootstrap_filename)
|
103
|
+
|
104
|
+
local_bootstrap_file.unlink
|
105
|
+
|
106
|
+
command = "sudo /bin/bash #{remote_bootstrap_filename}"
|
107
|
+
@test_lab.bootstrap_ssh.exec(command, :silence => true)
|
109
108
|
end
|
110
|
-
@stdout.print("done.\n")
|
111
109
|
end
|
112
110
|
|
113
111
|
################################################################################
|
114
112
|
|
115
113
|
def download_chef_credentials
|
116
|
-
|
117
|
-
|
118
|
-
local_path = File.join(Cucumber::Chef.home_dir, Cucumber::Chef::Config[:provider].to_s)
|
114
|
+
ZTK::Benchmark.bench(:message => "Downloading chef-server credentials", :mark => "completed in %0.4f seconds.", :stdout => @stdout) do
|
115
|
+
local_path = File.join(Cucumber::Chef.home_dir, Cucumber::Chef::Config.provider.to_s)
|
119
116
|
remote_path = File.join(Cucumber::Chef.lab_user_home_dir, ".chef")
|
120
117
|
|
121
118
|
files = [ "#{Cucumber::Chef::Config[:user]}.pem", "validation.pem" ]
|
122
119
|
files.each do |file|
|
123
|
-
@
|
120
|
+
@test_lab.bootstrap_ssh.download(File.join(remote_path, file), File.join(local_path, file))
|
124
121
|
end
|
125
122
|
end
|
126
|
-
@stdout.print("done.\n")
|
127
123
|
end
|
128
124
|
|
129
125
|
################################################################################
|
130
126
|
|
131
127
|
def download_proxy_ssh_credentials
|
132
|
-
|
133
|
-
|
134
|
-
local_path = File.join(Cucumber::Chef.home_dir, Cucumber::Chef::Config[:provider].to_s)
|
128
|
+
ZTK::Benchmark.bench(:message => "Downloading proxy SSH credentials", :mark => "completed in %0.4f seconds.", :stdout => @stdout) do
|
129
|
+
local_path = File.join(Cucumber::Chef.home_dir, Cucumber::Chef::Config.provider.to_s)
|
135
130
|
remote_path = File.join(Cucumber::Chef.lab_user_home_dir, ".ssh")
|
136
131
|
|
137
|
-
files = { "id_rsa" => "id_rsa-#{@
|
132
|
+
files = { "id_rsa" => "id_rsa-#{@test_lab.bootstrap_ssh.config.user}" }
|
138
133
|
files.each do |remote_file, local_file|
|
139
134
|
local = File.join(local_path, local_file)
|
140
135
|
File.exists?(local) and File.delete(local)
|
141
|
-
@
|
136
|
+
@test_lab.bootstrap_ssh.download(File.join(remote_path, remote_file), local)
|
142
137
|
File.chmod(0600, local)
|
143
138
|
end
|
144
139
|
end
|
145
|
-
@stdout.print("done.\n")
|
146
140
|
end
|
147
141
|
|
148
142
|
################################################################################
|
149
143
|
|
150
144
|
def render_knife_rb
|
151
|
-
|
152
|
-
Cucumber::Chef.spinner do
|
145
|
+
ZTK::Benchmark.bench(:message => "Building 'cc-knife' configuration", :mark => "completed in %0.4f seconds.", :stdout => @stdout) do
|
153
146
|
template_file = File.join(Cucumber::Chef.root_dir, "lib", "cucumber", "chef", "templates", "cucumber-chef", "knife-rb.erb")
|
154
147
|
|
155
148
|
context = {
|
156
149
|
:chef_server => @test_lab.ip,
|
157
|
-
:librarian_chef => Cucumber::Chef::Config
|
158
|
-
:user => Cucumber::Chef::Config
|
150
|
+
:librarian_chef => Cucumber::Chef::Config.librarian_chef,
|
151
|
+
:user => Cucumber::Chef::Config.user
|
159
152
|
}
|
160
153
|
|
161
154
|
File.open(Cucumber::Chef.knife_rb, 'w') do |f|
|
162
155
|
f.puts(ZTK::Template.render(template_file, context))
|
163
156
|
end
|
164
157
|
end
|
165
|
-
@stdout.print("done.\n")
|
166
158
|
end
|
167
159
|
|
168
160
|
################################################################################
|
169
161
|
|
170
162
|
def upload_cookbook
|
171
163
|
Cucumber::Chef.logger.debug { "Uploading cucumber-chef cookbooks..." }
|
172
|
-
|
173
|
-
|
174
|
-
Cucumber::Chef.spinner do
|
164
|
+
ZTK::Benchmark.bench(:message => "Uploading 'cucumber-chef' cookbooks", :mark => "completed in %0.4f seconds.", :stdout => @stdout) do
|
175
165
|
Cucumber::Chef.load_chef_config
|
176
166
|
cookbook_repo = ::Chef::CookbookLoader.new(@cookbooks_path)
|
177
167
|
cookbook_repo.each do |name, cookbook|
|
@@ -181,18 +171,13 @@ module Cucumber
|
|
181
171
|
end
|
182
172
|
#@command.knife([ "cookbook upload cucumber-chef", "-o", @cookbooks_path ], :silence => true)
|
183
173
|
end
|
184
|
-
|
185
|
-
@stdout.print("done.\n")
|
186
|
-
Cucumber::Chef.logger.debug { "Successfully uploaded cucumber-chef test lab cookbooks." }
|
187
174
|
end
|
188
175
|
|
189
176
|
################################################################################
|
190
177
|
|
191
178
|
def upload_role
|
192
179
|
Cucumber::Chef.logger.debug { "Uploading cucumber-chef test lab role..." }
|
193
|
-
|
194
|
-
|
195
|
-
Cucumber::Chef.spinner do
|
180
|
+
ZTK::Benchmark.bench(:message => "Uploading 'cucumber-chef' roles", :mark => "completed in %0.4f seconds.", :stdout => @stdout) do
|
196
181
|
Cucumber::Chef.load_chef_config
|
197
182
|
::Chef::Config[:role_path] = @roles_path
|
198
183
|
[ "test_lab" ].each do |name|
|
@@ -201,18 +186,13 @@ module Cucumber
|
|
201
186
|
end
|
202
187
|
#@command.knife([ "role from file", File.join(@roles_path, "test_lab.rb") ], :silence => true)
|
203
188
|
end
|
204
|
-
|
205
|
-
@stdout.print("done.\n")
|
206
|
-
Cucumber::Chef.logger.debug { "Successfully uploaded cucumber-chef test lab roles."}
|
207
189
|
end
|
208
190
|
|
209
191
|
################################################################################
|
210
192
|
|
211
193
|
def tag_node
|
212
194
|
Cucumber::Chef.logger.debug { "Tagging cucumber-chef test lab node..." }
|
213
|
-
|
214
|
-
|
215
|
-
Cucumber::Chef.spinner do
|
195
|
+
ZTK::Benchmark.bench(:message => "Tagging 'cucumber-chef' node", :mark => "completed in %0.4f seconds.", :stdout => @stdout) do
|
216
196
|
Cucumber::Chef.load_chef_config
|
217
197
|
node = ::Chef::Node.load(HOSTNAME)
|
218
198
|
[ Cucumber::Chef::Config[:mode].to_s, Cucumber::Chef::Config[:user].to_s ].each do |tag|
|
@@ -221,18 +201,13 @@ module Cucumber
|
|
221
201
|
end
|
222
202
|
#@command.knife([ "tag create", HOSTNAME, Cucumber::Chef::Config[:mode] ], :silence => true)
|
223
203
|
end
|
224
|
-
|
225
|
-
@stdout.print("done.\n")
|
226
|
-
Cucumber::Chef.logger.debug { "Successfully tagged cucumber-chef test lab node."}
|
227
204
|
end
|
228
205
|
|
229
206
|
################################################################################
|
230
207
|
|
231
208
|
def add_node_role
|
232
209
|
Cucumber::Chef.logger.debug { "Setting up cucumber-chef test lab run list..." }
|
233
|
-
|
234
|
-
|
235
|
-
Cucumber::Chef.spinner do
|
210
|
+
ZTK::Benchmark.bench(:message => "Setting 'cucumber-chef' run list", :mark => "completed in %0.4f seconds.", :stdout => @stdout) do
|
236
211
|
Cucumber::Chef.load_chef_config
|
237
212
|
node = ::Chef::Node.load(HOSTNAME)
|
238
213
|
[ "role[test_lab]" ].each do |entry|
|
@@ -241,55 +216,38 @@ module Cucumber
|
|
241
216
|
node.save
|
242
217
|
#@command.knife([ "node run_list add", HOSTNAME, "\"role[test_lab]\"" ], :silence => true)
|
243
218
|
end
|
244
|
-
|
245
|
-
Cucumber::Chef.logger.debug { "Successfully added roles to cucumber-chef test lab."}
|
246
|
-
@stdout.print("done.\n")
|
247
219
|
end
|
248
220
|
|
249
221
|
################################################################################
|
250
222
|
|
251
223
|
def chef_first_run
|
252
|
-
|
253
|
-
Cucumber::Chef.spinner do
|
224
|
+
ZTK::Benchmark.bench(:message => "Performing chef-client run", :mark => "completed in %0.4f seconds.", :stdout => @stdout) do
|
254
225
|
command = "/usr/bin/chef-client -j /etc/chef/first-boot.json -l debug"
|
255
226
|
command = "sudo #{command}"
|
256
|
-
@
|
227
|
+
@test_lab.bootstrap_ssh.exec(command, :silence => true)
|
257
228
|
end
|
258
|
-
@stdout.print("done.\n")
|
259
229
|
end
|
260
230
|
|
261
231
|
################################################################################
|
262
232
|
|
263
233
|
def wait_for_chef_server
|
264
|
-
|
265
|
-
Cucumber::Chef.spinner do
|
234
|
+
ZTK::Benchmark.bench(:message => "Waiting for the chef-server", :mark => "completed in %0.4f seconds.", :stdout => @stdout) do
|
266
235
|
ZTK::TCPSocketCheck.new(:host => @test_lab.ip, :port => 4000, :data => "GET", :wait => 120).wait
|
267
236
|
end
|
268
|
-
@stdout.puts("done.\n")
|
269
237
|
|
270
|
-
|
271
|
-
Cucumber::Chef.spinner do
|
238
|
+
ZTK::Benchmark.bench(:message => "Waiting for the chef-server-webui", :mark => "completed in %0.4f seconds.", :stdout => @stdout) do
|
272
239
|
ZTK::TCPSocketCheck.new(:host => @test_lab.ip, :port => 4040, :data => "GET", :wait => 120).wait
|
273
240
|
end
|
274
|
-
@stdout.puts("done.\n")
|
275
241
|
end
|
276
242
|
|
277
243
|
################################################################################
|
278
244
|
|
279
245
|
def reboot_test_lab
|
280
|
-
|
281
|
-
Cucumber::Chef.spinner do
|
246
|
+
ZTK::Benchmark.bench(:message => "Rebooting the test lab", :mark => "completed in %0.4f seconds.", :stdout => @stdout) do
|
282
247
|
command = "sudo reboot"
|
283
|
-
@
|
284
|
-
|
285
|
-
end
|
286
|
-
@stdout.print("done.\n")
|
287
|
-
|
288
|
-
@stdout.print("Waiting for SSHD...")
|
289
|
-
Cucumber::Chef.spinner do
|
290
|
-
ZTK::TCPSocketCheck.new(:host => @test_lab.ip, :port => 22, :wait => 120).wait
|
248
|
+
@test_lab.bootstrap_ssh.exec(command, :silence => true)
|
249
|
+
ZTK::TCPSocketCheck.new(:host => @test_lab.ip, :port => @test_lab.port, :wait => 120).wait
|
291
250
|
end
|
292
|
-
@stdout.puts("done.\n")
|
293
251
|
|
294
252
|
wait_for_chef_server
|
295
253
|
end
|