lib/judo/server.rb in judo-0.1.4 vs lib/judo/server.rb in judo-0.2.0
- old
+ new
@@ -6,22 +6,28 @@
@base = base
@name = name
@group_name = group
end
- def create(version = group.version, snapshots = nil)
+ def create(options)
raise JudoError, "no group specified" unless @group_name
+ snapshots = options[:snapshots]
+ note = options[:note]
+
+ version = options[:version]
+ version ||= group.version
+
if @name.nil?
index = @base.servers.map { |s| (s.name =~ /^#{s.group.name}.(\d*)$/); $1.to_i }.sort.last.to_i + 1
@name = "#{group.name}.#{index}"
end
raise JudoError, "there is already a server named #{name}" if @base.servers.detect { |s| s.name == @name and s != self}
task("Creating server #{name}") do
- update "name" => name, "group" => @group_name, "virgin" => true, "secret" => rand(2 ** 128).to_s(36), "version" => version
+ update "name" => name, "group" => @group_name, "note" => note, "virgin" => true, "secret" => rand(2 ** 128).to_s(36), "version" => version
@base.sdb.put_attributes("judo_config", "groups", @group_name => name)
end
allocate_disk(snapshots)
allocate_ip
@@ -83,10 +89,14 @@
else
"start"
end
end
+ def note
+ get("note")
+ end
+
def clone
get("clone")
end
def cloned?
@@ -100,11 +110,11 @@
def secret
get "secret"
end
def snapshots
- base.snapshots.select { |s| s.server == self }
+ @base.snapshots.select { |s| s.server == self }
end
def volumes
Hash[ (state["volumes"] || []).map { |a| a.split(":") } ]
end
@@ -293,10 +303,10 @@
end
def force_detach_volumes
volumes.each do |device,volume_id|
task("Force detaching #{volume_id}") do
- @base.ec2.detach_volume(volume_id, instance_id, device, true)
+ @base.ec2.detach_volume(volume_id, instance_id, device, true) rescue nil
end
end
end
def stop(force = false)