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)