class AWS::ELB::InstanceCollection
Public Instance Methods
rotate(options = {})
click to toggle source
# File lib/rodeo_clown/ext/aws/elb/instance_collection.rb, line 2 def rotate(options = {}) new_instances = start_new_instances(options) old_instances = stop_current_instances deregister old_instances register new_instances end
Private Instance Methods
create_instance(options)
click to toggle source
# File lib/rodeo_clown/ext/aws/elb/instance_collection.rb, line 53 def create_instance(options) ec2.instances.create(options) end
ec2()
click to toggle source
# File lib/rodeo_clown/ext/aws/elb/instance_collection.rb, line 62 def ec2 @ec2 ||= AWS::EC2.new end
instance_attributes(instance)
click to toggle source
# File lib/rodeo_clown/ext/aws/elb/instance_collection.rb, line 44 def instance_attributes(instance) { security_groups: instance.security_groups.map(&:name), image_id: instance.image_id, instance_type: instance.instance_type, availability_zone: instance.availability_zone, } end
print_status(ec2)
click to toggle source
# File lib/rodeo_clown/ext/aws/elb/instance_collection.rb, line 23 def print_status(ec2) puts "#{ec2.id}\t#{ec2.status}" end
start_new_instances(options = {})
click to toggle source
# File lib/rodeo_clown/ext/aws/elb/instance_collection.rb, line 27 def start_new_instances(options = {}) new_instances = map do |instance| create_instance(instance_attributes(instance).merge(options)) end wait_for_status(:running, 3, new_instances) new_instances end
stop_current_instances(interval = 3)
click to toggle source
# File lib/rodeo_clown/ext/aws/elb/instance_collection.rb, line 37 def stop_current_instances(interval = 3) old_instances = map { |instance| stop_instance(instance) } wait_for_status(:stopped, interval, old_instance) old_instances end
stop_instance(instance)
click to toggle source
# File lib/rodeo_clown/ext/aws/elb/instance_collection.rb, line 57 def stop_instance(instance) instance.stop instance end
wait_for_status(status, interval = 1, collection = self)
click to toggle source
# File lib/rodeo_clown/ext/aws/elb/instance_collection.rb, line 13 def wait_for_status(status, interval = 1, collection = self) until collection.all? { |ec2| ec2.status == status } puts "Waiting for ALL instances to be #{status}..." collection.each { |ec2| print_status(ec2) } sleep interval end collection end