awful 0.0.183 → 0.0.184
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/firehose +7 -0
- data/bin/kinesis +7 -0
- data/lib/awful.rb +4 -0
- data/lib/awful/cloudformation.rb +0 -4
- data/lib/awful/firehose.rb +67 -0
- data/lib/awful/kinesis.rb +66 -0
- data/lib/awful/s3.rb +27 -0
- data/lib/awful/version.rb +1 -1
- metadata +8 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 59dd0f87f7f3923ccb2513df11036452ae454876
|
4
|
+
data.tar.gz: 5fd17954751108e596562f5a2c60121203c628cc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: acc31dd1f4fcafb05fa9edf887f3ef0f0cadee94f8ec173585764182403173044712a30a6908c154938533a44d7fcdea631bf882d52667686054ca8c1e518eac
|
7
|
+
data.tar.gz: 98e1a0ddfb2854a4e7382028403cf769bbcaf7d1ec708f35cc9ca811178c6002b7dc817b27b93edca08af637eb45e114e63b7e39cb70159eeb731f6ef4548f58
|
data/bin/firehose
ADDED
data/bin/kinesis
ADDED
data/lib/awful.rb
CHANGED
data/lib/awful/cloudformation.rb
CHANGED
@@ -0,0 +1,67 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
|
3
|
+
module Awful
|
4
|
+
module Short
|
5
|
+
def firehose(*args)
|
6
|
+
Awful::Firehose.new.invoke(*args)
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
class Firehose < Cli
|
11
|
+
COLORS = {
|
12
|
+
ACTIVE: :green,
|
13
|
+
DELETING: :red,
|
14
|
+
}
|
15
|
+
|
16
|
+
no_commands do
|
17
|
+
def firehose
|
18
|
+
@_firehose ||= Aws::Firehose::Client.new
|
19
|
+
end
|
20
|
+
|
21
|
+
def color(string)
|
22
|
+
set_color(string, COLORS.fetch(string.to_sym, :yellow))
|
23
|
+
end
|
24
|
+
|
25
|
+
## special-case paginator for delivery streams
|
26
|
+
def paginate_delivery_streams(thing)
|
27
|
+
token = nil
|
28
|
+
things = []
|
29
|
+
loop do
|
30
|
+
resp = yield(token)
|
31
|
+
items = resp.send(thing)
|
32
|
+
things += items
|
33
|
+
token = items.last
|
34
|
+
break unless resp.has_more_delivery_streams
|
35
|
+
end
|
36
|
+
things
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
desc 'ls', 'list firehose streams'
|
41
|
+
method_option :long, aliases: '-l', type: :boolean, default: false, desc: 'long listing'
|
42
|
+
def ls
|
43
|
+
paginate_delivery_streams(:delivery_stream_names) do |start|
|
44
|
+
firehose.list_delivery_streams(exclusive_start_delivery_stream_name: start)
|
45
|
+
end.output do |streams|
|
46
|
+
if options[:long]
|
47
|
+
print_table streams.map { |name|
|
48
|
+
|
49
|
+
s = firehose.describe_delivery_stream(delivery_stream_name: name).delivery_stream_description
|
50
|
+
op = s.has_more_destinations ? '>' : ''
|
51
|
+
[s.delivery_stream_name, op + s.destinations.count.to_s, color(s.delivery_stream_status), s.delivery_stream_type, 'v' + s.version_id.to_s, s.create_timestamp]
|
52
|
+
}
|
53
|
+
else
|
54
|
+
puts streams
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
desc 'dump NAME', 'describe firehose stream'
|
60
|
+
def dump(name)
|
61
|
+
firehose.describe_delivery_stream(delivery_stream_name: name).delivery_stream_description.output do |stream|
|
62
|
+
puts YAML.dump(stringify_keys(stream.to_hash))
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
|
3
|
+
module Awful
|
4
|
+
module Short
|
5
|
+
def kinesis(*args)
|
6
|
+
Awful::Kinesis.new.invoke(*args)
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
class Kinesis < Cli
|
11
|
+
COLORS = {
|
12
|
+
ACTIVE: :green,
|
13
|
+
DELETING: :red,
|
14
|
+
}
|
15
|
+
|
16
|
+
no_commands do
|
17
|
+
def kinesis
|
18
|
+
@_kinesis ||= Aws::Kinesis::Client.new
|
19
|
+
end
|
20
|
+
|
21
|
+
def color(string)
|
22
|
+
set_color(string, COLORS.fetch(string.to_sym, :yellow))
|
23
|
+
end
|
24
|
+
|
25
|
+
## special-case paginator for streams
|
26
|
+
def paginate_streams(thing)
|
27
|
+
token = nil
|
28
|
+
things = []
|
29
|
+
loop do
|
30
|
+
resp = yield(token)
|
31
|
+
items = resp.send(thing)
|
32
|
+
things += items
|
33
|
+
token = items.last
|
34
|
+
break unless resp.has_more_streams
|
35
|
+
end
|
36
|
+
things
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
desc 'ls', 'list streams'
|
41
|
+
method_option :long, aliases: '-l', type: :boolean, default: false, desc: 'long listing'
|
42
|
+
def ls
|
43
|
+
paginate_streams(:stream_names) do |start|
|
44
|
+
kinesis.list_streams(exclusive_start_stream_name: start)
|
45
|
+
end.output do |streams|
|
46
|
+
if options[:long]
|
47
|
+
print_table streams.map { |name|
|
48
|
+
s = kinesis.describe_stream(stream_name: name).stream_description
|
49
|
+
op = s.has_more_shards ? '>' : ''
|
50
|
+
[s.stream_name, op + s.shards.count.to_s, color(s.stream_status), s.encryption_type, s.retention_period_hours.to_s + 'h', s.stream_creation_timestamp]
|
51
|
+
}
|
52
|
+
else
|
53
|
+
puts streams
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
desc 'dump [NAME]', 'describe a stream by name'
|
59
|
+
def dump(name)
|
60
|
+
kinesis.describe_stream(stream_name: name).stream_description.output do |stream|
|
61
|
+
puts YAML.dump(stringify_keys(stream.to_hash))
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
66
|
+
end
|
data/lib/awful/s3.rb
CHANGED
@@ -17,6 +17,13 @@ module Awful
|
|
17
17
|
rescue Aws::S3::Errors::NoSuchTagSet # sdk throws this if no tags
|
18
18
|
nil
|
19
19
|
end
|
20
|
+
|
21
|
+
## get a stack if it exists, or nil
|
22
|
+
def cfn_stack(name)
|
23
|
+
name && cf.describe_stacks(stack_name: name)
|
24
|
+
rescue Aws::CloudFormation::Errors::ValidationError
|
25
|
+
nil
|
26
|
+
end
|
20
27
|
end
|
21
28
|
|
22
29
|
desc 'ls PATTERN', 'list buckets or objects'
|
@@ -197,5 +204,25 @@ module Awful
|
|
197
204
|
}
|
198
205
|
)
|
199
206
|
end
|
207
|
+
|
208
|
+
desc 'orphans', 'get buckets tagged by a stack that no longer exists'
|
209
|
+
method_option :delete, aliases: '-d', type: :boolean, default: false, desc: 'delete empty orphaned buckets'
|
210
|
+
def orphans
|
211
|
+
s3.list_buckets.buckets.each do |b|
|
212
|
+
stack = get_tags(b.name)&.find{ |t| t.key == 'aws:cloudformation:stack-name' }&.value
|
213
|
+
next if cfn_stack(stack) # not an orphan if stack exists
|
214
|
+
|
215
|
+
if options[:delete]
|
216
|
+
if s3.list_objects_v2(bucket: b.name, max_keys: 1).key_count == 0
|
217
|
+
s3.delete_bucket(bucket: b.name) if yes?("Delete empty bucket #{b.name}?", :yellow)
|
218
|
+
else
|
219
|
+
puts "#{b.name} not empty"
|
220
|
+
end
|
221
|
+
else
|
222
|
+
puts b.name
|
223
|
+
end
|
224
|
+
end
|
225
|
+
end
|
226
|
+
|
200
227
|
end
|
201
228
|
end
|
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.184
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ric Lister
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-11-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -105,8 +105,10 @@ executables:
|
|
105
105
|
- elasticache
|
106
106
|
- elb
|
107
107
|
- emr
|
108
|
+
- firehose
|
108
109
|
- iam
|
109
110
|
- keypair
|
111
|
+
- kinesis
|
110
112
|
- kms
|
111
113
|
- lambda
|
112
114
|
- lc
|
@@ -154,8 +156,10 @@ files:
|
|
154
156
|
- bin/elasticache
|
155
157
|
- bin/elb
|
156
158
|
- bin/emr
|
159
|
+
- bin/firehose
|
157
160
|
- bin/iam
|
158
161
|
- bin/keypair
|
162
|
+
- bin/kinesis
|
159
163
|
- bin/kms
|
160
164
|
- bin/lambda
|
161
165
|
- bin/lc
|
@@ -201,8 +205,10 @@ files:
|
|
201
205
|
- lib/awful/elasticache.rb
|
202
206
|
- lib/awful/elb.rb
|
203
207
|
- lib/awful/emr.rb
|
208
|
+
- lib/awful/firehose.rb
|
204
209
|
- lib/awful/iam.rb
|
205
210
|
- lib/awful/keypair.rb
|
211
|
+
- lib/awful/kinesis.rb
|
206
212
|
- lib/awful/kms.rb
|
207
213
|
- lib/awful/lambda.rb
|
208
214
|
- lib/awful/lambda_events.rb
|