lib/judo/server.rb in judo-0.2.1 vs lib/judo/server.rb in judo-0.2.3
- old
+ new
@@ -313,11 +313,11 @@
def stop(force = false)
invalid "not running" unless running?
## EC2 terminate_isntaces
task("Terminating instance") { @base.ec2.terminate_instances([ instance_id ]) }
force_detach_volumes if force
- task("Wait for volumes to detach") { wait_for_volumes_detached } if volumes.size > 0
+ wait_for_volumes_detached if volumes.size > 0
remove "instance_id"
end
def launch_ec2
# validate
@@ -380,18 +380,22 @@
end
end
def wait_for_volumes_detached
begin
- Timeout::timeout(60) do
- loop do
- break if ec2_volumes.reject { |v| v[:aws_status] == "available" }.empty?
- sleep 2
+ task("Wait for volumes to detach") do
+ Timeout::timeout(60) do
+ loop do
+ break if ec2_volumes.reject { |v| v[:aws_status] == "available" }.empty?
+ sleep 2
+ end
end
end
rescue Timeout::Error
+ puts "failed!"
force_detach_volumes
+ retry
end
end
def wait_for_termination
loop do
@@ -461,33 +465,10 @@
wait_for_ssh
system "chmod 600 #{group.keypair_file}"
system "ssh -i #{group.keypair_file} #{config["user"]}@#{hostname}"
end
- def self.commit
- ## FIXME
- Config.group_dirs.each do |group_dir|
- group = File.basename(group_dir)
- next if Config.group and Config.group != group
- puts "commiting #{group}"
- doc = Config.couchdb.get(group) rescue {}
- config = Config.read_config(group)
- config['_id'] = group
- config['_rev'] = doc['_rev'] if doc.has_key?('_rev')
- response = Config.couchdb.save_doc(config)
- doc = Config.couchdb.get(response['id'])
-
- # walk subdirs and save as _attachments
- ['files', 'templates', 'packages', 'scripts'].each { |subdir|
- Dir["#{group_dir}/#{subdir}/*"].each do |f|
- puts "storing attachment #{f}"
- doc.put_attachment("#{subdir}/#{File.basename(f)}", File.read(f))
- end
- }
- end
- end
-
def ec2_instance_type
ec2_instance[:aws_instance_type] rescue nil
end
def ip
@@ -503,9 +484,10 @@
<<USER_DATA
#!/bin/sh
export DEBIAN_FRONTEND="noninteractive"
export DEBIAN_PRIORITY="critical"
+export JUDO_ID='#{name}'
export SECRET='#{secret}'
apt-get update
apt-get install ruby rubygems ruby-dev irb libopenssl-ruby libreadline-ruby -y
gem install kuzushi --no-rdoc --no-ri
GEM_BIN=`ruby -r rubygems -e "puts Gem.bindir"`