Class: Lono::Sets::Status
- Inherits:
-
Object
- Object
- Lono::Sets::Status
show all
- Extended by:
- Memoist
- Includes:
- AwsServices, Summarize, TimeSpent
- Defined in:
- lib/lono/sets/status.rb,
lib/lono/sets/status/instance.rb,
lib/lono/sets/status/instances.rb
Defined Under Namespace
Classes: Instance, Instances
Constant Summary
collapse
- @@instances_status_waiter_started =
false
Instance Attribute Summary collapse
Instance Method Summary
collapse
Methods included from TimeSpent
#show_time_spent
#pretty_time
Methods included from Summarize
#summarize
#cfn, #ec2, #iam, #s3, #s3_presigner, #s3_resource, #sts
#rollback_complete?, #testing_update?
#find_stack_set, #stack_set_exists?
#find_stack, #stack_exists?
Constructor Details
#initialize(options = {}) ⇒ Status
Returns a new instance of Status.
9
10
11
12
13
14
|
# File 'lib/lono/sets/status.rb', line 9
def initialize(options={})
@options = options
@stack, @operation_id = options[:stack], options[:operation_id]
@shown = []
@output = ""
end
|
Instance Attribute Details
#operation_id ⇒ Object
Returns the value of attribute operation_id.
8
9
10
|
# File 'lib/lono/sets/status.rb', line 8
def operation_id
@operation_id
end
|
Instance Method Details
#completed?(status) ⇒ Boolean
describe_stack_set_operation stack_set_operation.status is one of RUNNING, SUCCEEDED, FAILED, STOPPING, STOPPED
92
93
94
95
|
# File 'lib/lono/sets/status.rb', line 92
def completed?(status)
completed_statuses = %w[SUCCEEDED FAILED STOPPED]
completed_statuses.include?(status)
end
|
#display_one ⇒ Object
36
37
38
39
40
41
42
43
44
45
|
# File 'lib/lono/sets/status.rb', line 36
def display_one
resp = cfn.describe_stack_set_operation(
stack_set_name: @stack,
operation_id: operation_id,
)
stack_set_operation = resp.stack_set_operation
show_stack_set_operation(stack_set_operation)
@shown << stack_set_operation
resp
end
|
#latest_operation_id ⇒ Object
111
112
113
|
# File 'lib/lono/sets/status.rb', line 111
def latest_operation_id
summaries.first.operation_id
end
|
#say(text) ⇒ Object
86
87
88
|
# File 'lib/lono/sets/status.rb', line 86
def say(text)
ENV["LONO_TEST"] ? @output << "#{text}\n" : puts(text)
end
|
#show ⇒ Object
47
48
49
50
51
52
53
54
55
56
57
58
|
# File 'lib/lono/sets/status.rb', line 47
def show
if summaries.empty?
puts "No stack operations have been done with this stack set. So there is no status to report."
return
end
display_one
o = @options.merge(show_time_spent: false)
instances_status = Lono::SetInstances::Status.new(o)
instances_status.run
summarize(operation_id)
end
|
#show_stack_set_operation(stack_set_operation) ⇒ Object
77
78
79
80
81
82
83
84
|
# File 'lib/lono/sets/status.rb', line 77
def show_stack_set_operation(stack_set_operation)
already_shown = @shown.detect do |o|
o[:status] == stack_set_operation[:status]
end
return if already_shown
say "Stack Set Operation Status: #{stack_set_operation.status}"
end
|
#stack_instances ⇒ Object
123
124
125
|
# File 'lib/lono/sets/status.rb', line 123
def stack_instances
Lono::Sets::Status::Instances.new(@options).stack_instances
end
|
#stack_set_status ⇒ Object
97
98
99
100
101
102
103
104
105
|
# File 'lib/lono/sets/status.rb', line 97
def stack_set_status
resp = cfn.describe_stack_set_operation(
stack_set_name: @stack,
operation_id: operation_id,
)
resp.stack_set_operation.status
end
|
#start_instances_status_waiter ⇒ Object
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
# File 'lib/lono/sets/status.rb', line 61
def start_instances_status_waiter
return if @@instances_status_waiter_started
if stack_instances.empty?
@@instances_status_waiter_started = true
return
end
Thread.new do
o = @options.merge(start_on_outdated: true, show_time_spent: false)
instances_status = Lono::SetInstances::Status.new(o)
instances_status.run
end
@@instances_status_waiter_started = true
end
|
#summaries ⇒ Object
115
116
117
118
119
120
121
|
# File 'lib/lono/sets/status.rb', line 115
def summaries
resp = cfn.list_stack_set_operations(
stack_set_name: @stack,
max_results: 1,
)
resp.summaries
end
|
#wait ⇒ Object
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
# File 'lib/lono/sets/status.rb', line 16
def wait
Lono::Sets::Status::Instance::Base.show_time_progress = true
Lono::Sets::Status::Instance::Base.delay_factor = stack_instances.size
status = nil
until completed?(status)
resp = display_one
stack_set_operation = resp.stack_set_operation
status = stack_set_operation.status
sleep 5
if completed?(status)
show_time_spent(stack_set_operation)
else
start_instances_status_waiter
end
end
status == "SUCCEEDED"
end
|