cucumber-chef 2.1.0.rc.6 → 2.1.0.rc.7
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 +5 -5
- data/bin/cc-push +10 -10
- data/cucumber-chef.gemspec +1 -1
- data/lib/cucumber/chef/client.rb +4 -6
- data/lib/cucumber/chef/config.rb +2 -1
- data/lib/cucumber/chef/helpers/container.rb +2 -1
- data/lib/cucumber/chef/provider.rb +7 -10
- data/lib/cucumber/chef/providers/aws.rb +18 -19
- data/lib/cucumber/chef/providers/vagrant.rb +13 -14
- data/lib/cucumber/chef/provisioner.rb +22 -21
- data/lib/cucumber/chef/templates/cucumber/cc-hooks.rb +3 -2
- data/lib/cucumber/chef/test_lab.rb +9 -10
- data/lib/cucumber/chef/version.rb +1 -1
- metadata +4 -4
data/bin/cc-knife
CHANGED
@@ -4,12 +4,12 @@ require 'cucumber-chef'
|
|
4
4
|
# if we have bundler binstubs use that; otherwise attempt to detect
|
5
5
|
knife = (Cucumber::Chef.locate(:file, "bin", "knife") rescue "/usr/bin/env knife")
|
6
6
|
|
7
|
-
|
8
|
-
puts(
|
9
|
-
Cucumber::Chef.
|
7
|
+
tag = Cucumber::Chef.tag("cc-knife")
|
8
|
+
puts(tag)
|
9
|
+
Cucumber::Chef.boot(tag)
|
10
10
|
|
11
|
-
Cucumber::Chef
|
12
|
-
if (test_lab = Cucumber::Chef::TestLab.new) && test_lab.alive?
|
11
|
+
ui = ZTK::UI.new(:logger => Cucumber::Chef.logger)
|
12
|
+
if (test_lab = Cucumber::Chef::TestLab.new(ui)) && test_lab.alive?
|
13
13
|
|
14
14
|
knife_rb = Cucumber::Chef.knife_rb
|
15
15
|
if File.exists?(knife_rb)
|
data/bin/cc-push
CHANGED
@@ -4,14 +4,14 @@ require 'cucumber-chef'
|
|
4
4
|
tag = Cucumber::Chef.tag("cc-push")
|
5
5
|
puts(tag)
|
6
6
|
Cucumber::Chef.boot(tag)
|
7
|
-
$logger = Cucumber::Chef.logger
|
8
7
|
|
9
|
-
|
8
|
+
ui = ZTK::UI.new(:logger => Cucumber::Chef.logger)
|
9
|
+
if (test_lab = Cucumber::Chef::TestLab.new(ui)) && test_lab.alive?
|
10
10
|
gem_name = "cucumber-chef-#{Cucumber::Chef::VERSION}.gem"
|
11
11
|
gem_path = File.join(Cucumber::Chef.root_dir, gem_name)
|
12
12
|
|
13
|
-
|
14
|
-
|
13
|
+
ui.logger.info { "gem_name == '#{gem_name}'" }
|
14
|
+
ui.logger.info { "gem_path == '#{gem_path}'" }
|
15
15
|
|
16
16
|
if !File.exists?(gem_path)
|
17
17
|
puts
|
@@ -21,13 +21,13 @@ if ($test_lab = Cucumber::Chef::TestLab.new) && $test_lab.alive?
|
|
21
21
|
puts
|
22
22
|
else
|
23
23
|
local_file = File.join(Cucumber::Chef.root_dir, gem_name)
|
24
|
-
remote_file = File.join("/", "home",
|
25
|
-
|
24
|
+
remote_file = File.join("/", "home", test_lab.bootstrap_ssh.config.user, gem_name)
|
25
|
+
ui.logger.info { "#{local_file} -> #{test_lab.bootstrap_ssh.config.user}@#{test_lab.ip}:#{remote_file}" }
|
26
26
|
|
27
|
-
|
27
|
+
test_lab.bootstrap_ssh.upload(local_file, remote_file)
|
28
28
|
FileUtils.rm_f(File.join(Cucumber::Chef.root_dir, "*.gem"))
|
29
29
|
|
30
|
-
|
30
|
+
test_lab.bootstrap_ssh.exec(<<-EOH
|
31
31
|
sudo /bin/bash -c '
|
32
32
|
pkill -9 cc-server
|
33
33
|
cd #{File.dirname(remote_file)}
|
@@ -36,11 +36,11 @@ gem uninstall cucumber-chef ztk --all --ignore-dependencies --executables --back
|
|
36
36
|
rm -fv /usr/lib/ruby/gems/1.8/cache/#{gem_name}
|
37
37
|
gem cleanup cucumber-chef --backtrace
|
38
38
|
gem install #{remote_file} --backtrace
|
39
|
-
rm -fv /home/#{
|
39
|
+
rm -fv /home/#{test_lab.bootstrap_ssh.config.user}/*.gem
|
40
40
|
exit 0'
|
41
41
|
EOH
|
42
42
|
)
|
43
|
-
File.exists?(gem_path)
|
43
|
+
File.exists?(gem_path) and File.delete(gem_path)
|
44
44
|
end
|
45
45
|
|
46
46
|
else
|
data/cucumber-chef.gemspec
CHANGED
@@ -51,7 +51,7 @@ Gem::Specification.new do |s|
|
|
51
51
|
s.add_dependency("rake", ">= 0.9.2")
|
52
52
|
s.add_dependency("thor", ">= 0.15.2")
|
53
53
|
s.add_dependency("ubuntu_ami", ">= 0.4.0")
|
54
|
-
s.add_dependency("ztk", ">= 0.0
|
54
|
+
s.add_dependency("ztk", ">= 1.0.0")
|
55
55
|
|
56
56
|
s.add_development_dependency("simplecov", ">= 0.6.4")
|
57
57
|
s.add_development_dependency("pry", ">= 0")
|
data/lib/cucumber/chef/client.rb
CHANGED
@@ -24,15 +24,13 @@ module Cucumber
|
|
24
24
|
class ClientError < Error; end
|
25
25
|
|
26
26
|
class Client
|
27
|
-
attr_accessor :test_lab
|
27
|
+
attr_accessor :test_lab
|
28
28
|
|
29
29
|
################################################################################
|
30
30
|
|
31
|
-
def initialize(test_lab,
|
32
|
-
@stdout, @stderr, @stdin, @logger = stdout, stderr, stdin, logger
|
33
|
-
@stdout.sync = true if @stdout.respond_to?(:sync=)
|
34
|
-
|
31
|
+
def initialize(test_lab, ui=ZTK::UI.new)
|
35
32
|
@test_lab = test_lab
|
33
|
+
@ui = ui
|
36
34
|
end
|
37
35
|
|
38
36
|
################################################################################
|
@@ -124,7 +122,7 @@ module Cucumber
|
|
124
122
|
################################################################################
|
125
123
|
|
126
124
|
def at_exit
|
127
|
-
@logger.fatal { "Waiting for cc-server to shutdown." }
|
125
|
+
@ui.logger.fatal { "Waiting for cc-server to shutdown." }
|
128
126
|
self.down
|
129
127
|
@background.wait
|
130
128
|
end
|
data/lib/cucumber/chef/config.rb
CHANGED
@@ -184,7 +184,8 @@ module Cucumber
|
|
184
184
|
vagrant ({:lab_user => "vagrant",
|
185
185
|
:lxc_user => "root"})
|
186
186
|
|
187
|
-
chef ({:
|
187
|
+
chef ({:version => "10.18.2",
|
188
|
+
:amqp_password => "p@ssw0rd1",
|
188
189
|
:admin_password => "p@ssw0rd1"})
|
189
190
|
|
190
191
|
test_lab ({:hostname => "cucumber-chef",
|
@@ -73,7 +73,8 @@ module Cucumber::Chef::Helpers::Container
|
|
73
73
|
commands << "yum --nogpgcheck --installroot=#{cache_rootfs} -y install wget openssh-server"
|
74
74
|
end
|
75
75
|
commands << "chroot #{cache_rootfs} /bin/bash -c 'locale-gen en_US'"
|
76
|
-
commands << "chroot #{cache_rootfs} /bin/bash -c 'wget http://www.opscode.com/chef/install.sh
|
76
|
+
commands << "chroot #{cache_rootfs} /bin/bash -c 'wget http://www.opscode.com/chef/install.sh'"
|
77
|
+
commands << "chroot #{cache_rootfs} /bin/bash -c 'bash install.sh -v #{Cucumber::Chef::Config.chef[:version]}'"
|
77
78
|
if distro.downcase == "fedora"
|
78
79
|
commands << "chroot #{cache_rootfs} /bin/bash -c 'rpm -Uvh --nodeps /tmp/*rpm'"
|
79
80
|
end
|
@@ -27,21 +27,18 @@ module Cucumber
|
|
27
27
|
class ProviderError < Error; end
|
28
28
|
|
29
29
|
class Provider
|
30
|
-
attr_accessor :stdout, :stderr, :stdin, :logger
|
31
|
-
|
32
30
|
PROXY_METHODS = %w(create destroy up halt reload status id state username ip port chef_server_api chef_server_webui alive? dead? exists?)
|
33
31
|
|
34
32
|
################################################################################
|
35
33
|
|
36
|
-
def initialize(
|
37
|
-
@
|
38
|
-
@stdout.sync = true if @stdout.respond_to?(:sync=)
|
34
|
+
def initialize(ui=ZTK::UI.new)
|
35
|
+
@ui = ui
|
39
36
|
|
40
37
|
@provider = case Cucumber::Chef::Config.provider
|
41
38
|
when :aws then
|
42
|
-
Cucumber::Chef::Provider::AWS.new(@
|
39
|
+
Cucumber::Chef::Provider::AWS.new(@ui)
|
43
40
|
when :vagrant then
|
44
|
-
Cucumber::Chef::Provider::Vagrant.new(@
|
41
|
+
Cucumber::Chef::Provider::Vagrant.new(@ui)
|
45
42
|
end
|
46
43
|
end
|
47
44
|
|
@@ -79,8 +76,8 @@ module Cucumber
|
|
79
76
|
end
|
80
77
|
|
81
78
|
rescue Exception => e
|
82
|
-
|
83
|
-
|
79
|
+
@ui.logger.fatal { e.message }
|
80
|
+
@ui.logger.fatal { e.backtrace.join("\n") }
|
84
81
|
raise ProviderError, e.message
|
85
82
|
end
|
86
83
|
|
@@ -90,7 +87,7 @@ module Cucumber
|
|
90
87
|
if Cucumber::Chef::Provider::PROXY_METHODS.include?(method_name.to_s)
|
91
88
|
result = @provider.send(method_name.to_sym, *method_args)
|
92
89
|
splat = [method_name, *method_args].flatten.compact
|
93
|
-
|
90
|
+
@ui.logger.debug { "Provider: #{splat.inspect}=#{result.inspect}" }
|
94
91
|
result
|
95
92
|
else
|
96
93
|
super(method_name, *method_args)
|
@@ -25,7 +25,7 @@ module Cucumber
|
|
25
25
|
class AWSError < Error; end
|
26
26
|
|
27
27
|
class AWS
|
28
|
-
attr_accessor :connection, :server
|
28
|
+
attr_accessor :connection, :server
|
29
29
|
|
30
30
|
INVALID_STATES = %w(terminated pending).map(&:to_sym)
|
31
31
|
RUNNING_STATES = %w(running starting-up).map(&:to_sym)
|
@@ -34,9 +34,8 @@ module Cucumber
|
|
34
34
|
|
35
35
|
################################################################################
|
36
36
|
|
37
|
-
def initialize(
|
38
|
-
@
|
39
|
-
@stdout.sync = true if @stdout.respond_to?(:sync=)
|
37
|
+
def initialize(ui=ZTK::UI.new)
|
38
|
+
@ui = ui
|
40
39
|
|
41
40
|
@connection = Fog::Compute.new(
|
42
41
|
:provider => 'AWS',
|
@@ -55,7 +54,7 @@ module Cucumber
|
|
55
54
|
|
56
55
|
def create
|
57
56
|
if (exists? && alive?)
|
58
|
-
@stdout.puts("A test lab already exists using the #{Cucumber::Chef::Config.provider.upcase} credentials you have supplied; attempting to reprovision it.")
|
57
|
+
@ui.stdout.puts("A test lab already exists using the #{Cucumber::Chef::Config.provider.upcase} credentials you have supplied; attempting to reprovision it.")
|
59
58
|
else
|
60
59
|
server_definition = {
|
61
60
|
:image_id => Cucumber::Chef::Config.aws_image_id,
|
@@ -68,7 +67,7 @@ module Cucumber
|
|
68
67
|
}
|
69
68
|
|
70
69
|
if (@server = @connection.servers.create(server_definition))
|
71
|
-
ZTK::Benchmark.bench(:message => "Creating #{Cucumber::Chef::Config.provider.upcase} instance", :mark => "completed in %0.4f seconds.", :
|
70
|
+
ZTK::Benchmark.bench(:message => "Creating #{Cucumber::Chef::Config.provider.upcase} instance", :mark => "completed in %0.4f seconds.", :ui => @ui) do
|
72
71
|
@server.wait_for { ready? }
|
73
72
|
tag_server
|
74
73
|
ZTK::TCPSocketCheck.new(:host => self.ip, :port => self.port, :wait => 120).wait
|
@@ -79,8 +78,8 @@ module Cucumber
|
|
79
78
|
self
|
80
79
|
|
81
80
|
rescue Exception => e
|
82
|
-
|
83
|
-
|
81
|
+
@ui.logger.fatal { e.message }
|
82
|
+
@ui.logger.fatal { "Backtrace:\n#{e.backtrace.join("\n")}" }
|
84
83
|
raise AWSError, e.message
|
85
84
|
end
|
86
85
|
|
@@ -96,8 +95,8 @@ module Cucumber
|
|
96
95
|
end
|
97
96
|
|
98
97
|
rescue Exception => e
|
99
|
-
|
100
|
-
|
98
|
+
@ui.logger.fatal { e.message }
|
99
|
+
@ui.logger.fatal { e.backtrace.join("\n") }
|
101
100
|
raise AWSError, e.message
|
102
101
|
end
|
103
102
|
|
@@ -118,8 +117,8 @@ module Cucumber
|
|
118
117
|
end
|
119
118
|
|
120
119
|
rescue Exception => e
|
121
|
-
|
122
|
-
|
120
|
+
@ui.logger.fatal { e.message }
|
121
|
+
@ui.logger.fatal { e.backtrace.join("\n") }
|
123
122
|
raise AWSError, e.message
|
124
123
|
end
|
125
124
|
|
@@ -137,8 +136,8 @@ module Cucumber
|
|
137
136
|
end
|
138
137
|
|
139
138
|
rescue Exception => e
|
140
|
-
|
141
|
-
|
139
|
+
@ui.logger.fatal { e.message }
|
140
|
+
@ui.logger.fatal { e.backtrace.join("\n") }
|
142
141
|
raise AWSError, e.message
|
143
142
|
end
|
144
143
|
|
@@ -156,8 +155,8 @@ module Cucumber
|
|
156
155
|
end
|
157
156
|
|
158
157
|
rescue Exception => e
|
159
|
-
|
160
|
-
|
158
|
+
@ui.logger.fatal { e.message }
|
159
|
+
@ui.logger.fatal { e.backtrace.join("\n") }
|
161
160
|
raise AWSError, e.message
|
162
161
|
end
|
163
162
|
|
@@ -203,16 +202,16 @@ module Cucumber
|
|
203
202
|
################################################################################
|
204
203
|
|
205
204
|
def filter_servers(servers, states=VALID_STATES)
|
206
|
-
|
205
|
+
@ui.logger.debug("states") { states.collect{ |s| s.inspect }.join(", ") }
|
207
206
|
results = servers.select do |server|
|
208
|
-
|
207
|
+
@ui.logger.debug("candidate") { "id=#{server.id.inspect}, state=#{server.state.inspect}, tags=#{server.tags.inspect}" }
|
209
208
|
|
210
209
|
( server.tags['cucumber-chef-mode'] == Cucumber::Chef::Config.mode.to_s &&
|
211
210
|
server.tags['cucumber-chef-user'] == Cucumber::Chef::Config.user.to_s &&
|
212
211
|
states.any?{ |state| state.to_s == server.state } )
|
213
212
|
end
|
214
213
|
results.each do |server|
|
215
|
-
|
214
|
+
@ui.logger.debug("results") { "id=#{server.id.inspect}, state=#{server.state.inspect}" }
|
216
215
|
end
|
217
216
|
results.first
|
218
217
|
end
|
@@ -25,7 +25,7 @@ module Cucumber
|
|
25
25
|
class VagrantError < Error; end
|
26
26
|
|
27
27
|
class Vagrant
|
28
|
-
attr_accessor :env, :vm
|
28
|
+
attr_accessor :env, :vm
|
29
29
|
|
30
30
|
INVALID_STATES = %w(not_created aborted).map(&:to_sym)
|
31
31
|
RUNNING_STATES = %w(running).map(&:to_sym)
|
@@ -34,9 +34,8 @@ module Cucumber
|
|
34
34
|
|
35
35
|
################################################################################
|
36
36
|
|
37
|
-
def initialize(
|
38
|
-
@
|
39
|
-
@stdout.sync = true if @stdout.respond_to?(:sync=)
|
37
|
+
def initialize(ui=ZTK::UI.new)
|
38
|
+
@ui = ui
|
40
39
|
|
41
40
|
@env = ::Vagrant::Environment.new
|
42
41
|
@vm = @env.primary_vm
|
@@ -55,8 +54,8 @@ module Cucumber
|
|
55
54
|
self
|
56
55
|
|
57
56
|
rescue Exception => e
|
58
|
-
|
59
|
-
|
57
|
+
@ui.logger.fatal { e.message }
|
58
|
+
@ui.logger.fatal { e.backtrace.join("\n") }
|
60
59
|
raise VagrantError, e.message
|
61
60
|
end
|
62
61
|
|
@@ -72,8 +71,8 @@ module Cucumber
|
|
72
71
|
end
|
73
72
|
|
74
73
|
rescue Exception => e
|
75
|
-
|
76
|
-
|
74
|
+
@ui.logger.fatal { e.message }
|
75
|
+
@ui.logger.fatal { e.backtrace.join("\n") }
|
77
76
|
raise VagrantError, e.message
|
78
77
|
end
|
79
78
|
|
@@ -90,8 +89,8 @@ module Cucumber
|
|
90
89
|
end
|
91
90
|
|
92
91
|
rescue Exception => e
|
93
|
-
|
94
|
-
|
92
|
+
@ui.logger.fatal { e.message }
|
93
|
+
@ui.logger.fatal { e.backtrace.join("\n") }
|
95
94
|
raise VagrantError, e.message
|
96
95
|
end
|
97
96
|
|
@@ -107,8 +106,8 @@ module Cucumber
|
|
107
106
|
end
|
108
107
|
|
109
108
|
rescue Exception => e
|
110
|
-
|
111
|
-
|
109
|
+
@ui.logger.fatal { e.message }
|
110
|
+
@ui.logger.fatal { e.backtrace.join("\n") }
|
112
111
|
raise VagrantError, e.message
|
113
112
|
end
|
114
113
|
|
@@ -124,8 +123,8 @@ module Cucumber
|
|
124
123
|
end
|
125
124
|
|
126
125
|
rescue Exception => e
|
127
|
-
|
128
|
-
|
126
|
+
@ui.logger.fatal { e.message }
|
127
|
+
@ui.logger.fatal { e.backtrace.join("\n") }
|
129
128
|
raise VagrantError, e.message
|
130
129
|
end
|
131
130
|
|
@@ -25,15 +25,15 @@ module Cucumber
|
|
25
25
|
class ProvisionerError < Error; end
|
26
26
|
|
27
27
|
class Provisioner
|
28
|
-
attr_accessor :test_lab
|
28
|
+
attr_accessor :test_lab
|
29
29
|
|
30
30
|
################################################################################
|
31
31
|
|
32
|
-
def initialize(test_lab,
|
33
|
-
|
34
|
-
@stdout.sync = true if @stdout.respond_to?(:sync=)
|
32
|
+
def initialize(test_lab, ui=ZTK::UI.new)
|
33
|
+
test_lab.nil? and raise ProvisionerError, "You must supply a test lab!"
|
35
34
|
|
36
35
|
@test_lab = test_lab
|
36
|
+
@ui = ui
|
37
37
|
|
38
38
|
@cookbooks_path = File.join(Cucumber::Chef.root_dir, "chef_repo", "cookbooks")
|
39
39
|
@roles_path = File.join(Cucumber::Chef.root_dir, "chef_repo", "roles")
|
@@ -69,7 +69,7 @@ module Cucumber
|
|
69
69
|
def bootstrap
|
70
70
|
raise ProvisionerError, "You must have the environment variable 'USER' set." if !Cucumber::Chef::Config.user
|
71
71
|
|
72
|
-
ZTK::Benchmark.bench(:message => "Bootstrapping #{Cucumber::Chef::Config.provider.upcase} instance", :mark => "completed in %0.4f seconds.", :
|
72
|
+
ZTK::Benchmark.bench(:message => "Bootstrapping #{Cucumber::Chef::Config.provider.upcase} instance", :mark => "completed in %0.4f seconds.", :ui => @ui) do
|
73
73
|
chef_client_attributes = {
|
74
74
|
"run_list" => "role[test_lab]",
|
75
75
|
"cucumber_chef" => {
|
@@ -86,7 +86,8 @@ module Cucumber
|
|
86
86
|
:admin_password => Cucumber::Chef::Config.chef[:admin_password],
|
87
87
|
:user => Cucumber::Chef::Config.user,
|
88
88
|
:hostname_short => Cucumber::Chef.lab_hostname_short,
|
89
|
-
:hostname_full => Cucumber::Chef.lab_hostname_full
|
89
|
+
:hostname_full => Cucumber::Chef.lab_hostname_full,
|
90
|
+
:chef_version => Cucumber::Chef::Config.chef[:version]
|
90
91
|
}
|
91
92
|
|
92
93
|
local_bootstrap_file = Tempfile.new("bootstrap")
|
@@ -108,7 +109,7 @@ module Cucumber
|
|
108
109
|
################################################################################
|
109
110
|
|
110
111
|
def download_chef_credentials
|
111
|
-
ZTK::Benchmark.bench(:message => "Downloading chef-server credentials", :mark => "completed in %0.4f seconds.", :
|
112
|
+
ZTK::Benchmark.bench(:message => "Downloading chef-server credentials", :mark => "completed in %0.4f seconds.", :ui => @ui) do
|
112
113
|
local_path = File.join(Cucumber::Chef.home_dir, Cucumber::Chef::Config.provider.to_s)
|
113
114
|
remote_path = File.join(Cucumber::Chef.lab_user_home_dir, ".chef")
|
114
115
|
|
@@ -122,7 +123,7 @@ module Cucumber
|
|
122
123
|
################################################################################
|
123
124
|
|
124
125
|
def download_proxy_ssh_credentials
|
125
|
-
ZTK::Benchmark.bench(:message => "Downloading proxy SSH credentials", :mark => "completed in %0.4f seconds.", :
|
126
|
+
ZTK::Benchmark.bench(:message => "Downloading proxy SSH credentials", :mark => "completed in %0.4f seconds.", :ui => @ui) do
|
126
127
|
local_path = File.join(Cucumber::Chef.home_dir, Cucumber::Chef::Config.provider.to_s)
|
127
128
|
remote_path = File.join(Cucumber::Chef.lab_user_home_dir, ".ssh")
|
128
129
|
|
@@ -139,7 +140,7 @@ module Cucumber
|
|
139
140
|
################################################################################
|
140
141
|
|
141
142
|
def render_knife_rb
|
142
|
-
ZTK::Benchmark.bench(:message => "Building 'cc-knife' configuration", :mark => "completed in %0.4f seconds.", :
|
143
|
+
ZTK::Benchmark.bench(:message => "Building 'cc-knife' configuration", :mark => "completed in %0.4f seconds.", :ui => @ui) do
|
143
144
|
template_file = File.join(Cucumber::Chef.root_dir, "lib", "cucumber", "chef", "templates", "cucumber-chef", "knife-rb.erb")
|
144
145
|
|
145
146
|
context = {
|
@@ -157,8 +158,8 @@ module Cucumber
|
|
157
158
|
################################################################################
|
158
159
|
|
159
160
|
def upload_cookbook
|
160
|
-
|
161
|
-
ZTK::Benchmark.bench(:message => "Uploading 'cucumber-chef' cookbooks", :mark => "completed in %0.4f seconds.", :
|
161
|
+
@ui.logger.debug { "Uploading cucumber-chef cookbooks..." }
|
162
|
+
ZTK::Benchmark.bench(:message => "Uploading 'cucumber-chef' cookbooks", :mark => "completed in %0.4f seconds.", :ui => @ui) do
|
162
163
|
@test_lab.knife_cli(%Q{cookbook upload cucumber-chef -o #{@cookbooks_path}}, :silence => true)
|
163
164
|
end
|
164
165
|
end
|
@@ -166,8 +167,8 @@ module Cucumber
|
|
166
167
|
################################################################################
|
167
168
|
|
168
169
|
def upload_role
|
169
|
-
|
170
|
-
ZTK::Benchmark.bench(:message => "Uploading 'cucumber-chef' roles", :mark => "completed in %0.4f seconds.", :
|
170
|
+
@ui.logger.debug { "Uploading cucumber-chef test lab role..." }
|
171
|
+
ZTK::Benchmark.bench(:message => "Uploading 'cucumber-chef' roles", :mark => "completed in %0.4f seconds.", :ui => @ui) do
|
171
172
|
@test_lab.knife_cli(%Q{role from file #{File.join(@roles_path, "test_lab.rb")}}, :silence => true)
|
172
173
|
end
|
173
174
|
end
|
@@ -175,8 +176,8 @@ module Cucumber
|
|
175
176
|
################################################################################
|
176
177
|
|
177
178
|
def tag_node
|
178
|
-
|
179
|
-
ZTK::Benchmark.bench(:message => "Tagging 'cucumber-chef' node", :mark => "completed in %0.4f seconds.", :
|
179
|
+
@ui.logger.debug { "Tagging cucumber-chef test lab node..." }
|
180
|
+
ZTK::Benchmark.bench(:message => "Tagging 'cucumber-chef' node", :mark => "completed in %0.4f seconds.", :ui => @ui) do
|
180
181
|
@test_lab.knife_cli(%Q{tag create #{Cucumber::Chef.lab_hostname_full} #{Cucumber::Chef::Config.mode}}, :silence => true)
|
181
182
|
end
|
182
183
|
end
|
@@ -184,8 +185,8 @@ module Cucumber
|
|
184
185
|
################################################################################
|
185
186
|
|
186
187
|
def add_node_role
|
187
|
-
|
188
|
-
ZTK::Benchmark.bench(:message => "Setting 'cucumber-chef' run list", :mark => "completed in %0.4f seconds.", :
|
188
|
+
@ui.logger.debug { "Setting up cucumber-chef test lab run list..." }
|
189
|
+
ZTK::Benchmark.bench(:message => "Setting 'cucumber-chef' run list", :mark => "completed in %0.4f seconds.", :ui => @ui) do
|
189
190
|
@test_lab.knife_cli(%Q{node run_list add #{Cucumber::Chef.lab_hostname_full} "role[test_lab]"}, :silence => true)
|
190
191
|
end
|
191
192
|
end
|
@@ -193,7 +194,7 @@ module Cucumber
|
|
193
194
|
################################################################################
|
194
195
|
|
195
196
|
def chef_first_run
|
196
|
-
ZTK::Benchmark.bench(:message => "Performing chef-client run", :mark => "completed in %0.4f seconds.", :
|
197
|
+
ZTK::Benchmark.bench(:message => "Performing chef-client run", :mark => "completed in %0.4f seconds.", :ui => @ui) do
|
197
198
|
command = "/usr/bin/chef-client -j /etc/chef/first-boot.json -l debug"
|
198
199
|
command = "sudo #{command}"
|
199
200
|
@test_lab.bootstrap_ssh.exec(command, :silence => true)
|
@@ -203,11 +204,11 @@ module Cucumber
|
|
203
204
|
################################################################################
|
204
205
|
|
205
206
|
def wait_for_chef_server
|
206
|
-
ZTK::Benchmark.bench(:message => "Waiting for the chef-server", :mark => "completed in %0.4f seconds.", :
|
207
|
+
ZTK::Benchmark.bench(:message => "Waiting for the chef-server", :mark => "completed in %0.4f seconds.", :ui => @ui) do
|
207
208
|
ZTK::TCPSocketCheck.new(:host => @test_lab.ip, :port => 4000, :data => "GET", :wait => 120).wait
|
208
209
|
end
|
209
210
|
|
210
|
-
ZTK::Benchmark.bench(:message => "Waiting for the chef-server-webui", :mark => "completed in %0.4f seconds.", :
|
211
|
+
ZTK::Benchmark.bench(:message => "Waiting for the chef-server-webui", :mark => "completed in %0.4f seconds.", :ui => @ui) do
|
211
212
|
ZTK::TCPSocketCheck.new(:host => @test_lab.ip, :port => 4040, :data => "GET", :wait => 120).wait
|
212
213
|
end
|
213
214
|
end
|
@@ -215,7 +216,7 @@ module Cucumber
|
|
215
216
|
################################################################################
|
216
217
|
|
217
218
|
def reboot_test_lab
|
218
|
-
ZTK::Benchmark.bench(:message => "Rebooting the test lab", :mark => "completed in %0.4f seconds.", :
|
219
|
+
ZTK::Benchmark.bench(:message => "Rebooting the test lab", :mark => "completed in %0.4f seconds.", :ui => @ui) do
|
219
220
|
command = "sudo reboot"
|
220
221
|
@test_lab.bootstrap_ssh.exec(command, :silence => true)
|
221
222
|
ZTK::TCPSocketCheck.new(:host => @test_lab.ip, :port => @test_lab.port, :wait => 120).wait
|
@@ -22,11 +22,12 @@ tag = Cucumber::Chef.tag("cucumber-chef")
|
|
22
22
|
puts(" * #{tag}")
|
23
23
|
Cucumber::Chef.boot(tag)
|
24
24
|
|
25
|
-
|
25
|
+
$ui = ZTK::UI.new(:logger => Cucumber::Chef.logger)
|
26
|
+
if (($test_lab = Cucumber::Chef::TestLab.new($ui)) && $test_lab.alive?)
|
26
27
|
$test_lab.cc_client.up
|
27
28
|
else
|
28
29
|
message = "No running cucumber-chef test labs to connect to!"
|
29
|
-
|
30
|
+
$ui.logger.fatal { message }
|
30
31
|
raise message
|
31
32
|
end
|
32
33
|
|
@@ -25,15 +25,14 @@ module Cucumber
|
|
25
25
|
class TestLabError < Error; end
|
26
26
|
|
27
27
|
class TestLab
|
28
|
-
attr_accessor :provider
|
28
|
+
attr_accessor :provider
|
29
29
|
|
30
30
|
################################################################################
|
31
31
|
|
32
|
-
def initialize(
|
33
|
-
@
|
34
|
-
@stdout.sync = true if @stdout.respond_to?(:sync=)
|
32
|
+
def initialize(ui=ZTK::UI.new)
|
33
|
+
@ui = ui
|
35
34
|
|
36
|
-
@provider = Cucumber::Chef::Provider.new(@
|
35
|
+
@provider = Cucumber::Chef::Provider.new(@ui)
|
37
36
|
end
|
38
37
|
|
39
38
|
################################################################################
|
@@ -42,7 +41,7 @@ module Cucumber
|
|
42
41
|
dead? and raise TestLabError, "The test lab must be running in order to start a bootstrap SSH session!"
|
43
42
|
|
44
43
|
if (!defined?(@ssh) || @ssh.nil?)
|
45
|
-
@ssh ||= ZTK::SSH.new(:
|
44
|
+
@ssh ||= ZTK::SSH.new(:ui => @ui, :timeout => Cucumber::Chef::Config.command_timeout)
|
46
45
|
|
47
46
|
@ssh.config.host_name = self.ip
|
48
47
|
@ssh.config.port = self.port
|
@@ -58,7 +57,7 @@ module Cucumber
|
|
58
57
|
dead? and raise TestLabError, "The test lab must be running in order to start an SSH session!"
|
59
58
|
|
60
59
|
if (!defined?(@ssh) || @ssh.nil?)
|
61
|
-
@ssh ||= ZTK::SSH.new(:
|
60
|
+
@ssh ||= ZTK::SSH.new(:ui => @ui, :timeout => Cucumber::Chef::Config.command_timeout)
|
62
61
|
|
63
62
|
@ssh.config.host_name = self.ip
|
64
63
|
@ssh.config.port = self.port
|
@@ -76,7 +75,7 @@ module Cucumber
|
|
76
75
|
container = container.to_sym
|
77
76
|
@proxy_ssh ||= Hash.new
|
78
77
|
if (!defined?(@proxy_ssh[container]) || @proxy_ssh[container].nil?)
|
79
|
-
@proxy_ssh[container] ||= ZTK::SSH.new(:
|
78
|
+
@proxy_ssh[container] ||= ZTK::SSH.new(:ui => @ui, :timeout => Cucumber::Chef::Config.command_timeout)
|
80
79
|
|
81
80
|
@proxy_ssh[container].config.proxy_host_name = self.ip
|
82
81
|
@proxy_ssh[container].config.proxy_port = self.port
|
@@ -95,7 +94,7 @@ module Cucumber
|
|
95
94
|
def cc_client
|
96
95
|
dead? and raise TestLabError, "The test lab must be running in order to start the cc-server/client session!"
|
97
96
|
|
98
|
-
@cc_client ||= Cucumber::Chef::Client.new(self, @
|
97
|
+
@cc_client ||= Cucumber::Chef::Client.new(self, @ui)
|
99
98
|
@cc_client
|
100
99
|
end
|
101
100
|
|
@@ -130,7 +129,7 @@ module Cucumber
|
|
130
129
|
if Cucumber::Chef::Provider::PROXY_METHODS.include?(method_name.to_s)
|
131
130
|
result = @provider.send(method_name.to_sym, *method_args)
|
132
131
|
splat = [method_name, *method_args].flatten.compact
|
133
|
-
|
132
|
+
@ui.logger.debug { "TestLab: #{splat.inspect}=#{result.inspect}" }
|
134
133
|
result
|
135
134
|
else
|
136
135
|
super(method_name, *method_args)
|
@@ -24,7 +24,7 @@ module Cucumber
|
|
24
24
|
|
25
25
|
################################################################################
|
26
26
|
|
27
|
-
VERSION = "2.1.0.rc.
|
27
|
+
VERSION = "2.1.0.rc.7" unless const_defined?(:VERSION)
|
28
28
|
|
29
29
|
################################################################################
|
30
30
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cucumber-chef
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.0.rc.
|
4
|
+
version: 2.1.0.rc.7
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-02-
|
13
|
+
date: 2013-02-04 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: chef
|
@@ -179,7 +179,7 @@ dependencies:
|
|
179
179
|
requirements:
|
180
180
|
- - ! '>='
|
181
181
|
- !ruby/object:Gem::Version
|
182
|
-
version: 0.0
|
182
|
+
version: 1.0.0
|
183
183
|
type: :runtime
|
184
184
|
prerelease: false
|
185
185
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -187,7 +187,7 @@ dependencies:
|
|
187
187
|
requirements:
|
188
188
|
- - ! '>='
|
189
189
|
- !ruby/object:Gem::Version
|
190
|
-
version: 0.0
|
190
|
+
version: 1.0.0
|
191
191
|
- !ruby/object:Gem::Dependency
|
192
192
|
name: simplecov
|
193
193
|
requirement: !ruby/object:Gem::Requirement
|