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