awful 0.0.125 → 0.0.126
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/awful/auto_scaling.rb +34 -19
- data/lib/awful/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ba519bdf7cee6a75862b71cb6e48e23fefdeabdf
|
4
|
+
data.tar.gz: 2c33ac07d9460d2650bb6987e02eb89dd2f602cd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d8d89602eb2213cf4f9ee90972bc2760f04224d0b653413a789e8309af5ee5ac451ebee0279478395699fe515148b234e8799d8a47e9b6e31c7dce2bfa01e44a
|
7
|
+
data.tar.gz: 8c221dcfb174f17b3e5b288f4dcf69a1615078acd3781626388da49bf865858fd5cffbf034d709a24fe70b4296b6174dca9bf89f9688e2bf9dd18e83873deab1
|
data/lib/awful/auto_scaling.rb
CHANGED
@@ -14,6 +14,9 @@ module Awful
|
|
14
14
|
## health statuses
|
15
15
|
Healthy: :green,
|
16
16
|
Unhealthy: :red,
|
17
|
+
## same for asg instances describe
|
18
|
+
HEALTHY: :green,
|
19
|
+
UNHEALTHY: :red,
|
17
20
|
## activity status
|
18
21
|
Successful: :green,
|
19
22
|
Failed: :red,
|
@@ -43,7 +46,7 @@ module Awful
|
|
43
46
|
desc 'ls [PATTERN]', 'list autoscaling groups with name matching PATTERN'
|
44
47
|
method_option :long, aliases: '-l', default: false, desc: 'Long listing'
|
45
48
|
def ls(name = /./)
|
46
|
-
all_matching_asgs(name).
|
49
|
+
all_matching_asgs(name).output do |asgs|
|
47
50
|
if options[:long]
|
48
51
|
print_table asgs.map { |a|
|
49
52
|
[
|
@@ -69,23 +72,31 @@ module Awful
|
|
69
72
|
end
|
70
73
|
end
|
71
74
|
|
72
|
-
desc 'instances', '
|
73
|
-
method_option :long,
|
74
|
-
method_option :
|
75
|
-
def instances(
|
76
|
-
|
75
|
+
desc 'instances ASGS', 'describe autoscaling instances for groups'
|
76
|
+
method_option :long, aliases: '-l', type: :boolean, default: false, desc: 'long listing'
|
77
|
+
method_option :describe, aliases: '-d', type: :boolean, default: false, desc: 'make extra call to get ASG name for each instance'
|
78
|
+
def instances(*names)
|
79
|
+
instances = autoscaling.describe_auto_scaling_groups(auto_scaling_group_names: names).auto_scaling_groups.map(&:instances).flatten
|
80
|
+
|
81
|
+
## make extra call to get asg name as part of object
|
82
|
+
if options[:describe]
|
83
|
+
instances = autoscaling.describe_auto_scaling_instances(instance_ids: instances.map(&:instance_id)).auto_scaling_instances
|
84
|
+
end
|
85
|
+
|
86
|
+
instances.output do |list|
|
77
87
|
if options[:long]
|
78
|
-
print_table
|
88
|
+
print_table list.map { |i|
|
79
89
|
[
|
80
90
|
i.instance_id,
|
91
|
+
options[:describe] ? i.auto_scaling_group_name : nil,
|
81
92
|
i.availability_zone,
|
82
93
|
color(i.lifecycle_state),
|
83
94
|
color(i.health_status),
|
84
95
|
i.launch_configuration_name,
|
85
|
-
]
|
96
|
+
].compact
|
86
97
|
}
|
87
98
|
else
|
88
|
-
puts
|
99
|
+
puts list.map(&:instance_id)
|
89
100
|
end
|
90
101
|
end
|
91
102
|
end
|
@@ -97,7 +108,7 @@ module Awful
|
|
97
108
|
ids = all_matching_asgs(name).map(&:instances).flatten.map(&:instance_id)
|
98
109
|
|
99
110
|
## get instance details for these IDs
|
100
|
-
ec2.describe_instances(instance_ids: ids).map(&:reservations).flatten.map(&:instances).flatten.sort_by(&:launch_time).
|
111
|
+
ec2.describe_instances(instance_ids: ids).map(&:reservations).flatten.map(&:instances).flatten.sort_by(&:launch_time).output do |instances|
|
101
112
|
if options[:long]
|
102
113
|
print_table instances.map { |i|
|
103
114
|
[ i.public_ip_address, i.private_ip_address, i.instance_id, i.image_id, i.instance_type, i.placement.availability_zone, color(i.state.name), i.launch_time ]
|
@@ -124,7 +135,7 @@ module Awful
|
|
124
135
|
|
125
136
|
desc 'dump NAME', 'dump existing autoscaling group as yaml'
|
126
137
|
def dump(name)
|
127
|
-
all_matching_asgs(name).map(&:to_hash).
|
138
|
+
all_matching_asgs(name).map(&:to_hash).output do |asgs|
|
128
139
|
asgs.each do |asg|
|
129
140
|
puts YAML.dump(stringify_keys(asg)) unless options[:quiet]
|
130
141
|
end
|
@@ -233,7 +244,7 @@ module Awful
|
|
233
244
|
method_option :newest, aliases: '-n', default: false, type: :boolean, desc: 'Stop newest instances instead of oldest'
|
234
245
|
def stop(name, num = 1)
|
235
246
|
ins = options[:newest] ? newest(name) : oldest(name)
|
236
|
-
ins.first(num.to_i).map(&:instance_id).
|
247
|
+
ins.first(num.to_i).map(&:instance_id).output do |ids|
|
237
248
|
if yes? "Really stop #{num} instances: #{ids.join(',')}?", :yellow
|
238
249
|
ec2.stop_instances(instance_ids: ids)
|
239
250
|
end
|
@@ -242,7 +253,7 @@ module Awful
|
|
242
253
|
|
243
254
|
desc 'processes', 'describe scaling process types for use with suspend/resume'
|
244
255
|
def processes
|
245
|
-
autoscaling.describe_scaling_process_types.processes.map(&:process_name).sort.
|
256
|
+
autoscaling.describe_scaling_process_types.processes.map(&:process_name).sort.output do |procs|
|
246
257
|
puts procs
|
247
258
|
end
|
248
259
|
end
|
@@ -251,7 +262,9 @@ module Awful
|
|
251
262
|
method_option :list, aliases: '-l', default: false, type: :boolean, desc: 'list currently suspended processes'
|
252
263
|
def suspend(name, *procs)
|
253
264
|
if options[:list]
|
254
|
-
autoscaling.describe_auto_scaling_groups(
|
265
|
+
autoscaling.describe_auto_scaling_groups(
|
266
|
+
auto_scaling_group_names: Array(name)
|
267
|
+
).map(&:auto_scaling_groups).flatten.first.suspended_processes.output do |list|
|
255
268
|
print_table list.map{ |proc| [ proc.process_name, proc.suspension_reason] }
|
256
269
|
end
|
257
270
|
elsif procs.empty?
|
@@ -284,9 +297,11 @@ module Awful
|
|
284
297
|
desc 'launch_configuration NAMES', 'get launch configs for given ASGs'
|
285
298
|
method_option :long, aliases: '-l', default: false, desc: 'Long listing'
|
286
299
|
def launch_configuration(*names)
|
287
|
-
autoscaling.describe_auto_scaling_groups(
|
300
|
+
autoscaling.describe_auto_scaling_groups(
|
301
|
+
auto_scaling_group_names: names
|
302
|
+
).map(&:auto_scaling_groups).flatten.each_with_object({}) do |asg, h|
|
288
303
|
h[asg.auto_scaling_group_name] = asg.launch_configuration_name
|
289
|
-
end.
|
304
|
+
end.output do |hash|
|
290
305
|
if options[:long]
|
291
306
|
print_table hash
|
292
307
|
else
|
@@ -314,7 +329,7 @@ module Awful
|
|
314
329
|
end
|
315
330
|
|
316
331
|
if olds.empty?
|
317
|
-
|
332
|
+
# noop
|
318
333
|
elsif options[:detach]
|
319
334
|
autoscaling.detach_instances(auto_scaling_group_name: name, instance_ids: olds.values.flatten.map(&:instance_id), should_decrement_desired_capacity: options[:decrement])
|
320
335
|
elsif options[:deregister]
|
@@ -331,7 +346,7 @@ module Awful
|
|
331
346
|
olds.values.flatten.map do |instance|
|
332
347
|
autoscaling.terminate_instance_in_auto_scaling_group(instance_id: instance.instance_id, should_decrement_desired_capacity: options[:decrement] && true)
|
333
348
|
instance.instance_id
|
334
|
-
end.
|
349
|
+
end.output { |ids| say("Terminated: #{ids.join(',')}", :yellow) }
|
335
350
|
elsif options[:groups]
|
336
351
|
puts olds.keys
|
337
352
|
elsif options[:long]
|
@@ -347,7 +362,7 @@ module Awful
|
|
347
362
|
method_option :long, aliases: '-l', default: false, desc: 'Long listing'
|
348
363
|
method_option :cause, aliases: '-c', default: false, desc: 'Long listing with cause of activity'
|
349
364
|
def activities(name)
|
350
|
-
autoscaling.describe_scaling_activities(auto_scaling_group_name: name).activities.
|
365
|
+
autoscaling.describe_scaling_activities(auto_scaling_group_name: name).activities.output do |activities|
|
351
366
|
if options[:long]
|
352
367
|
print_table activities.map { |a| [color(a.status_code), a.description, a.start_time, a.end_time] }
|
353
368
|
elsif options[:cause]
|
data/lib/awful/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: awful
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.126
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ric Lister
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-07-
|
11
|
+
date: 2016-07-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|