Class: OpsTasks::Scale
Instance Method Summary
collapse
Methods inherited from Deployment
#announce_log, #announce_status, #configure, #deploy, #instance_ids, #log_url, #notifications_disabled?, #setup, #update_cookbooks
Constructor Details
#initialize(args) ⇒ Scale
Returns a new instance of Scale.
3
4
5
6
|
# File 'lib/ops_tasks/scale.rb', line 3
def initialize(args)
@instance_type = args[:instance_type]
super
end
|
Instance Method Details
#assess_status(instance_id) ⇒ Object
22
23
24
25
26
|
# 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) ⇒ Object
8
9
10
11
12
13
14
|
# 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) ⇒ Boolean
28
29
30
31
32
|
# 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) ⇒ Object
34
35
36
37
38
|
# 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) ⇒ Object
16
17
18
19
20
|
# 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") ⇒ Object
40
41
42
43
44
45
46
47
|
# 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
|