bin/cucumber-chef in cucumber-chef-2.0.6 vs bin/cucumber-chef in cucumber-chef-2.0.7

- old
+ new

@@ -176,33 +176,70 @@ fatal(e.message) end ################################################################################ - desc "teardown", "Teardown cucumber-chef test lab in Amazon EC2" + desc "teardown [container]", "Teardown the cucumber-chef test lab in Amazon EC2 or a test lab [container] if specified." method_option :test, :type => :boolean, :desc => "INTERNAL USE ONLY" - def teardown + def teardown(*args) load_config puts if (test_lab = Cucumber::Chef::TestLab.new) - if yes?(set_color("Are you sure you want to teardown your cucumber-chef test lab?", :red, true)) - count_down_colors = { 5 => :green, 4 => :yellow, 3 => :yellow, 2 => :red, 1 => :red } - puts - puts(set_color("You have 5 seconds to abort!", :green, true)) - puts - print(set_color("Self-destructing in", :green, true)) - 5.downto(1) do |x| - print(set_color("...#{x}", count_down_colors[x], true)) - sleep(1) + if args.count == 0 + if yes?(set_color("Are you sure you want to teardown your cucumber-chef test lab?", :red, true)) + count_down_colors = { 5 => :green, 4 => :yellow, 3 => :yellow, 2 => :red, 1 => :red } + puts + puts(set_color("You have 5 seconds to abort!", :green, true)) + puts + print(set_color("Self-destructing in", :green, true)) + 5.downto(1) do |x| + print(set_color("...#{x}", count_down_colors[x], true)) + sleep(1) + end + puts(set_color("...BOOM!", :red, true)) + puts + test_lab.destroy + else + puts + puts(set_color("Whew! That was close!", :green, true)) end - puts(set_color("...BOOM!", :red, true)) - puts - test_lab.destroy else - puts - puts(set_color("Whew! That was close!", :green, true)) + container = args[0] + if yes?(set_color("Are you sure you want to teardown the test lab containter '#{container}'?", :red, true)) + count_down_colors = { 5 => :green, 4 => :yellow, 3 => :yellow, 2 => :red, 1 => :red } + puts + puts(set_color("You have 5 seconds to abort!", :green, true)) + puts + print(set_color("Self-destructing in", :green, true)) + 5.downto(1) do |x| + print(set_color("...#{x}", count_down_colors[x], true)) + sleep(1) + end + puts(set_color("...BOOM!", :red, true)) + puts + + ssh = ZTK::SSH.new + ssh.config.host_name = test_lab.labs_running.first.public_ip_address + ssh.config.user = "ubuntu" + ssh.config.keys = Cucumber::Chef.locate(:file, ".cucumber-chef", "id_rsa-#{ssh.config.user}") + ssh.exec("nohup sudo pkill -9 -f cc-server") + ssh.exec("nohup sudo BACKGROUND=yes cc-server #{Cucumber::Chef.external_ip}") + Cucumber::Chef.spinner do + ZTK::TCPSocketCheck.new(:host => test_lab.labs_running.first.public_ip_address, :port => 8787, :data => "\n\n").wait + end + + # initialize our drb object + test_lab_drb ||= DRbObject.new_with_uri("druby://#{test_lab.labs_running.first.public_ip_address}:8787") + test_lab_drb and DRb.start_service + test_lab_drb.servers = Hash.new(nil) + test_lab_drb.server_destroy(container) + else + puts + puts(set_color("Whew! That was close!", :green, true)) + end end + else puts(set_color("Could not find a cucumber-chef test lab to teardown!", :red, true)) end puts