cucumber-chef 2.1.0.rc.11 → 2.1.0.rc.12

Sign up to get free protection for your applications and to get access to all the features.
data/bin/cucumber-chef CHANGED
@@ -3,6 +3,7 @@
3
3
  require 'thor'
4
4
  require 'cucumber-chef'
5
5
 
6
+
6
7
  # $logger = Cucumber::Chef.logger
7
8
 
8
9
  class CucumberChef < Thor
@@ -55,7 +56,7 @@ class CucumberChef < Thor
55
56
 
56
57
  def boot
57
58
  tag = Cucumber::Chef.tag("cucumber-chef")
58
- puts(set_color(tag, :green, true))
59
+ puts(tag)
59
60
  Cucumber::Chef.boot(tag)
60
61
  $logger = Cucumber::Chef.logger
61
62
 
@@ -204,23 +205,14 @@ class CucumberChef < Thor
204
205
  puts("BOOM!")
205
206
  puts
206
207
 
207
- ZTK::Benchmark.bench(:message => "Start cc-server", :mark => "completed in %0.4f seconds.") do
208
- test_lab.cc_client.up(:silence => true)
209
- end
210
-
211
208
  args.each do |container|
212
209
  ZTK::Benchmark.bench(:message => "Destroy container '#{container}'", :mark => "completed in %0.4f seconds.") do
213
- test_lab.drb.load_containers
214
- test_lab.drb.server_destroy(container)
215
- test_lab.drb.server_delete(container)
216
- test_lab.drb.save_containers
210
+ test_lab.containers.load
211
+ test_lab.containers.destroy(container)
212
+ test_lab.containers.save
217
213
  end
218
214
  end
219
215
 
220
- ZTK::Benchmark.bench(:message => "Stop cc-server", :mark => "completed in %0.4f seconds.") do
221
- test_lab.cc_client.down
222
- end
223
-
224
216
  else
225
217
  puts
226
218
  puts(set_color("Whew! That was close!", :green, true))
@@ -318,19 +310,16 @@ class CucumberChef < Thor
318
310
  if (test_lab = Cucumber::Chef::TestLab.new)
319
311
  if @options.containers?
320
312
  if test_lab.alive?
321
- ZTK::Benchmark.bench(:message => "Start cc-server", :mark => "completed in %0.4f seconds.") do
322
- test_lab.cc_client.up(:silence => true)
323
- end
324
313
 
325
- test_lab.drb.load_containers
314
+ test_lab.containers.load
326
315
 
327
- if test_lab.drb.containers.count > 0
316
+ if test_lab.containers.count > 0
328
317
  headers = [:name, :alive, :arch, :distro, :ip, :mac, :"chef version", :persist]
329
- results = ZTK::Report.new.spreadsheet(test_lab.drb.containers, headers) do |name, detail|
318
+ results = ZTK::Report.new.spreadsheet(test_lab.containers.to_a, headers) do |name, detail|
330
319
  chef_version = "N/A"
331
- alive = (test_lab.drb.command_run_local(%Q{ping -n -c 1 -W 1 #{detail[:ip]}}, :ignore_exit_status => true).exit_code == 0)
320
+ alive = (test_lab.bootstrap_ssh(:ignore_exit_status => true).exec(%Q{ping -n -c 1 -W 1 #{detail[:ip]}}, :silence => true).exit_code == 0)
332
321
  if alive
333
- chef_version = test_lab.drb.command_run_chroot(name, %Q{/usr/bin/env chef-client -v}, :ignore_exit_status => true).output.chomp
322
+ chef_version = test_lab.proxy_ssh(name, :ignore_exit_status => true).exec(%Q{/usr/bin/env chef-client -v}, :silence => true).output.chomp
334
323
  end
335
324
 
336
325
  OpenStruct.new(
@@ -359,9 +348,6 @@ class CucumberChef < Thor
359
348
  raise Cucumber::Chef::Error, "We could not find any containers!"
360
349
  end
361
350
 
362
- ZTK::Benchmark.bench(:message => "Stop cc-server", :mark => "completed in %0.4f seconds.") do
363
- test_lab.cc_client.down
364
- end
365
351
  else
366
352
  raise Cucumber::Chef::Error, "We could not find a running test lab."
367
353
  end
@@ -19,7 +19,7 @@
19
19
  ################################################################################
20
20
 
21
21
 
22
- %w( lxc bridge-utils debootstrap yum isc-dhcp-server bind9 ntpdate ntp ).each do |p|
22
+ %w(lxc bridge-utils debootstrap yum isc-dhcp-server bind9 ntpdate ntp).each do |p|
23
23
  package p
24
24
  end
25
25
 
@@ -220,25 +220,6 @@ end
220
220
  service "lxc-net"
221
221
  service "lxc"
222
222
 
223
- #directory "create cgroup mount point" do
224
- # path "/cgroup"
225
- #
226
- # not_if { File.exists?("/cgroup") && File.directory?("/cgroup") }
227
- #end
228
-
229
- #mount "mount cgroup device" do
230
- # mount_point "/cgroup"
231
- # device "cgroup"
232
- # fstype "cgroup"
233
- # pass 0
234
- # action [:mount, :enable]
235
-
236
- # not_if do
237
- # %x( mount | grep "cgroup" )
238
- # ($? == 0)
239
- # end
240
- #end
241
-
242
223
  execute "set LXC_AUTO to false" do
243
224
  command "sed -i \"s/LXC_AUTO=\\\"true\\\"/LXC_AUTO=\\\"false\\\"/\" /etc/default/lxc"
244
225
 
@@ -266,48 +247,3 @@ directory "create lxc configuration directory" do
266
247
 
267
248
  not_if { File.exists?("/etc/lxc") && File.directory?("/etc/lxc") }
268
249
  end
269
-
270
- # # load the chef client into our distro lxc cache
271
- # install_chef_sh = "/tmp/install-chef.sh"
272
- # distros = { "ubuntu" => [ "lucid", "maverick", "natty", "oneiric", "precise" ] }
273
- # arch = (%x( arch ).include?("i686") ? "i386" : "amd64")
274
-
275
- # template "create lxc initializer container configuration" do
276
- # path "/etc/lxc/initializer"
277
- # source "lxc-initializer-config.erb"
278
-
279
- # not_if { File.exists?("/etc/lxc/initializer") }
280
- # end
281
-
282
- # distros.each do |distro, releases|
283
- # releases.each do |release|
284
- # cache_rootfs = File.join("/", "var", "cache", "lxc", release, "rootfs-#{arch}")
285
- # initializer_rootfs = File.join("/", "var", "lib", "lxc", "initializer", "rootfs")
286
-
287
- # execute "create the lxc initializer container for #{distro}/#{release}" do
288
- # command "lxc-create -n initializer -f /etc/lxc/initializer -t #{distro} -- -r #{release}"
289
-
290
- # not_if { File.exists?(cache_rootfs) && File.directory?(cache_rootfs) }
291
- # end
292
-
293
- # execute "destroy the lxc initializer container for #{distro}/#{release}" do
294
- # command "lxc-destroy -n initializer"
295
-
296
- # only_if { File.exists?(initializer_rootfs) && File.directory?(initializer_rootfs) }
297
- # end
298
-
299
- # template "create opscode omnibus installer in lxc container cache for #{distro}/#{release}" do
300
- # path "#{cache_rootfs}#{install_chef_sh}"
301
- # source "lxc-install-chef.erb"
302
- # mode "0755"
303
-
304
- # not_if { File.exists?(File.join(cache_rootfs, install_chef_sh)) }
305
- # end
306
-
307
- # execute "install chef-client using omnibus in lxc container cache for #{distro}/#{release}" do
308
- # command "chroot #{cache_rootfs} /bin/bash -c '#{install_chef_sh}'"
309
-
310
- # not_if { File.exists?(File.join(cache_rootfs, "opt", "opscode", "bin", "chef-client")) }
311
- # end
312
- # end
313
- # end
@@ -23,7 +23,7 @@
23
23
  # SYSTEM TWEAKS
24
24
  ################################################################################
25
25
 
26
- %w( build-essential wget chkconfig ruby-full ruby-dev libxml2-dev libxslt1-dev ).each do |p|
26
+ %w(build-essential wget chkconfig).each do |p|
27
27
  package p
28
28
  end
29
29
 
@@ -49,16 +49,6 @@ end
49
49
  not_if { File.exists?(File.join(home_dir, ".ssh", "config")) }
50
50
  end
51
51
 
52
- template "create .gemrc for #{user}" do
53
- path "#{home_dir}/.gemrc"
54
- source "gemrc.erb"
55
- owner user
56
- group user
57
- mode "0644"
58
-
59
- not_if { File.exists?(File.join(home_dir, ".gemrc")) }
60
- end
61
-
62
52
  execute "generate ssh keypair for #{user}" do
63
53
  command "ssh-keygen -q -N '' -f #{home_dir}/.ssh/id_rsa"
64
54
 
@@ -106,36 +96,6 @@ template "install cucumber-chef motd" do
106
96
  end
107
97
 
108
98
 
109
- ################################################################################
110
- # RUBY
111
- ################################################################################
112
- bash "install rubygems" do
113
- code <<-EOH
114
- cd /tmp
115
- wget http://production.cf.rubygems.org/rubygems/rubygems-1.8.19.tgz
116
- tar zxf rubygems-1.8.19.tgz
117
- cd rubygems-1.8.19
118
- ruby setup.rb --no-format-executable
119
- EOH
120
- end
121
-
122
- gem_package "cucumber-chef" do
123
- gem_binary("/usr/bin/gem")
124
-
125
- version(node['cucumber_chef']['version'])
126
-
127
- if node['cucumber_chef']['prerelease']
128
- options("--prerelease")
129
- end
130
- end
131
-
132
- %w( rspec ).each do |g|
133
- gem_package g do
134
- gem_binary("/usr/bin/gem")
135
- end
136
- end
137
-
138
-
139
99
  ################################################################################
140
100
  # CHEF-CLIENT
141
101
  ################################################################################
@@ -39,7 +39,6 @@ Gem::Specification.new do |s|
39
39
 
40
40
  # Providers
41
41
  s.add_dependency("fog", ">= 1.3.1")
42
- # s.add_dependency("vagrant", ">= 1.0.5")
43
42
 
44
43
  # TDD
45
44
  s.add_dependency("cucumber", ">= 1.2.0")
@@ -50,7 +49,7 @@ Gem::Specification.new do |s|
50
49
  s.add_dependency("rake", ">= 0.9.2")
51
50
  s.add_dependency("thor", ">= 0.15.2")
52
51
  s.add_dependency("ubuntu_ami", ">= 0.4.0")
53
- s.add_dependency("ztk", ">= 1.0.0")
52
+ s.add_dependency("ztk", ">= 1.0.1")
54
53
 
55
54
  s.add_development_dependency("simplecov", ">= 0.6.4")
56
55
  s.add_development_dependency("pry", ">= 0")
@@ -36,44 +36,44 @@ module Cucumber
36
36
  ################################################################################
37
37
 
38
38
  def up(options={})
39
- user = Cucumber::Chef.lab_user
40
- home_dir = Cucumber::Chef.lab_user_home_dir
41
- provider = Cucumber::Chef::Config.provider.to_s
42
- @test_lab.ssh.exec("sudo mkdir -p #{File.join(home_dir, ".cucumber-chef", provider)}")
43
- @test_lab.ssh.exec("sudo cp -f #{File.join(home_dir, ".chef", "knife.rb")} #{File.join(home_dir, ".cucumber-chef", provider, "knife.rb")}")
44
- @test_lab.ssh.exec("sudo chown -R #{user}:#{user} #{File.join(home_dir, ".cucumber-chef")}")
45
-
46
- local_file = Cucumber::Chef.config_rb
47
- remote_file = File.join(home_dir, ".cucumber-chef", "config.rb")
48
- @test_lab.ssh.upload(local_file, remote_file)
49
-
50
- begin
51
- self.ping
52
- rescue
53
- @background = ZTK::Background.new
54
- @background.process do
55
- self.down
56
-
57
- environment = Array.new
58
- %w(PURGE VERBOSE LOG_LEVEL).each do |env_var|
59
- environment << "#{env_var}=#{ENV[env_var].inspect}" if (!ENV[env_var].nil? && !ENV[env_var].empty?)
60
- end
61
- environment = environment.join(" ")
62
- external_ip = Cucumber::Chef.external_ip
63
-
64
- command = %Q{nohup sudo #{environment} /usr/bin/env cc-server #{external_ip} &}
65
-
66
- @test_lab.ssh.exec(command, options)
67
- end
68
-
69
- Kernel.at_exit do
70
- self.at_exit
71
- end
72
- end
73
-
74
- ZTK::RescueRetry.try(:tries => 30) do
75
- self.drb.ping
76
- end
39
+ # user = Cucumber::Chef.lab_user
40
+ # home_dir = Cucumber::Chef.lab_user_home_dir
41
+ # provider = Cucumber::Chef::Config.provider.to_s
42
+ # @test_lab.ssh.exec("sudo mkdir -p #{File.join(home_dir, ".cucumber-chef", provider)}")
43
+ # @test_lab.ssh.exec("sudo cp -f #{File.join(home_dir, ".chef", "knife.rb")} #{File.join(home_dir, ".cucumber-chef", provider, "knife.rb")}")
44
+ # @test_lab.ssh.exec("sudo chown -R #{user}:#{user} #{File.join(home_dir, ".cucumber-chef")}")
45
+
46
+ # local_file = Cucumber::Chef.config_rb
47
+ # remote_file = File.join(home_dir, ".cucumber-chef", "config.rb")
48
+ # @test_lab.ssh.upload(local_file, remote_file)
49
+
50
+ # begin
51
+ # self.ping
52
+ # rescue
53
+ # @background = ZTK::Background.new
54
+ # @background.process do
55
+ # self.down
56
+
57
+ # environment = Array.new
58
+ # %w(PURGE VERBOSE LOG_LEVEL).each do |env_var|
59
+ # environment << "#{env_var}=#{ENV[env_var].inspect}" if (!ENV[env_var].nil? && !ENV[env_var].empty?)
60
+ # end
61
+ # environment = environment.join(" ")
62
+ # external_ip = Cucumber::Chef.external_ip
63
+
64
+ # command = %Q{nohup sudo #{environment} /usr/bin/env cc-server #{external_ip} &}
65
+
66
+ # @test_lab.ssh.exec(command, options)
67
+ # end
68
+
69
+ # Kernel.at_exit do
70
+ # self.at_exit
71
+ # end
72
+ # end
73
+
74
+ # ZTK::RescueRetry.try(:tries => 30) do
75
+ # self.drb.ping
76
+ # end
77
77
 
78
78
  true
79
79
  end
@@ -81,17 +81,17 @@ module Cucumber
81
81
  ################################################################################
82
82
 
83
83
  def down
84
- (@test_lab.drb.shutdown rescue nil)
84
+ # (@test_lab.drb.shutdown rescue nil)
85
85
  end
86
86
 
87
87
  ################################################################################
88
88
 
89
- def drb
90
- @drb and DRb.stop_service
91
- @drb = DRbObject.new_with_uri("druby://#{@test_lab.ip}:8787")
92
- @drb and DRb.start_service
93
- @drb
94
- end
89
+ # def drb
90
+ # @drb and DRb.stop_service
91
+ # @drb = DRbObject.new_with_uri("druby://#{@test_lab.ip}:8787")
92
+ # @drb and DRb.start_service
93
+ # @drb
94
+ # end
95
95
 
96
96
  ################################################################################
97
97
 
@@ -100,30 +100,20 @@ module Cucumber
100
100
  # we use various aspects of the scenario to name our artifacts
101
101
  $scenario = scenario
102
102
 
103
- @test_lab.drb.load_containers
104
-
105
- @test_lab.drb.chef_set_client_config(:chef_server_url => "http://192.168.255.254:4000",
106
- :validation_client_name => "chef-validator")
107
103
  end
108
104
 
109
105
  ################################################################################
110
106
 
111
107
  def after(scenario)
112
- @test_lab.drb.save_containers
113
-
114
- # cleanup non-persistent lxc containers after tests
115
- @test_lab.drb.containers.select{ |name, attributes| !attributes[:persist] }.each do |name, attributes|
116
- @test_lab.drb.server_destroy(name)
117
- end
118
108
  end
119
109
 
120
110
  ################################################################################
121
111
 
122
- def at_exit
123
- @ui.logger.fatal { "Waiting for cc-server to shutdown." }
124
- self.down
125
- @background.wait
126
- end
112
+ # def at_exit
113
+ # @ui.logger.fatal { "Waiting for cc-server to shutdown." }
114
+ # self.down
115
+ # @background.wait
116
+ # end
127
117
 
128
118
  ################################################################################
129
119