class OpsTasks::Scale
Public Class Methods
new(args)
click to toggle source
Calls superclass method
OpsTasks::Deployment::new
# File lib/ops_tasks/scale.rb, line 3 def initialize(args) @instance_type = args[:instance_type] super end
Public Instance Methods
assess_status(instance_id)
click to toggle source
# File lib/ops_tasks/scale.rb, line 22 def assess_status(instance_id) @client.describe_instances( :instance_ids => [instance_id] )[:instances].first[:status] end
create_instance(auto_scale = false)
click to toggle source
# File lib/ops_tasks/scale.rb, line 8 def create_instance(auto_scale = false) args = { :stack_id => @stack_id, :layer_ids => [@layer_id], :instance_type => @instance_type } args[:auto_scale] = 'load' if auto_scale @client.create_instance(args)[:instance_id] end
deployment_failed?(instance_id)
click to toggle source
# File lib/ops_tasks/scale.rb, line 28 def deployment_failed?(instance_id) @client.describe_instances( :instance_ids => [instance_id] )[:instances].first[:status] == 'failed' end
poll_api_for_status(deployment_id)
click to toggle source
# File lib/ops_tasks/scale.rb, line 34 def poll_api_for_status(deployment_id) ok_statuses = ['online', 'setup_failed'] sleep 1 until ok_statuses.include?(assess_status(deployment_id)) puts assess_status(deployment_id) end
start_instance(instance_id)
click to toggle source
# File lib/ops_tasks/scale.rb, line 16 def start_instance(instance_id) @client.start_instance( :instance_id => instance_id ) end
wait_for_completion(instance_id, task="create instance")
click to toggle source
# File lib/ops_tasks/scale.rb, line 40 def wait_for_completion(instance_id, task="create instance") print "#{@project}: Running... " announce_status(task, instance_id) poll_api_for_status(instance_id) announce_status(task, instance_id) announce_log(instance_id) if deployment_failed?(instance_id) Process.daemon if @run_in_background end