awful 0.0.124 → 0.0.125

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 73d0f072c1311e48bbea4f32b6aa262e676338c8
4
- data.tar.gz: 8924ea3bad2e2fd12c275ce67548f3cb8a4809dc
3
+ metadata.gz: 344579f6b39568f6f3c56f62baad2d3c8a31cc61
4
+ data.tar.gz: fb71401f43a220dabe1a6275ceb3c32992715a3d
5
5
  SHA512:
6
- metadata.gz: 3f339fd441fec34e7b4de8eef9abc5db31b669960d924b5cd5a7aae2473397fea4dcfe72419cb56cb0defe332e676edb93d3202c8b11d15ba19db88295eab3f7
7
- data.tar.gz: 245919e6bf8293a5ca10ae5cb20103a0e5fc7b1b6236f98c7ddac715939e6d440d218dab65db141d14ecf400cea9f88d53f2345f81a6c7018c237de4d95c1ac1
6
+ metadata.gz: dc6f9ae6a2b727b69604e8239802ba082a33731edee4c6d5486f22536d043aa29f12c90cf249d916881d2ca54a9c3c3e103383ec712ee0c38d1a03972ef928bf
7
+ data.tar.gz: 95a417937a0068dc135ede81034a0e992559ff0b324cc90401b63c1d5d0088a19408cbef3a2ad3f3d904e53fcd36ba67e628731d1f3167d03a63dca1a6f92e84
data/bin/apigw CHANGED
@@ -4,5 +4,8 @@
4
4
  require 'awful'
5
5
  require 'awful/api_gateway'
6
6
  require 'awful/api_gateway_deployments'
7
+ require 'awful/api_gateway_resources'
8
+ require 'awful/api_gateway_methods'
9
+ require 'awful/api_gateway_stages'
7
10
 
8
11
  Awful::ApiGateway::RestApi.start(ARGV)
@@ -0,0 +1,27 @@
1
+ module Awful
2
+ module Short
3
+ def apimethods(*args)
4
+ Awful::ApiGateway::Methods.new.invoke(*args)
5
+ end
6
+ end
7
+
8
+ module ApiGateway
9
+
10
+ class Methods < Cli
11
+ desc 'dump REST_API_ID', 'list methods for given rest api and resource'
12
+ method_option :method, aliases: '-m', default: 'GET', desc: 'HTTP method to get'
13
+ def dump(id, resource)
14
+ api_gateway.get_method(rest_api_id: id, resource_id: resource, http_method: options[:method]).output do |response|
15
+ puts YAML.dump(stringify_keys(response.to_hash))
16
+ end
17
+ end
18
+
19
+ end
20
+
21
+ class RestApi < Cli
22
+ desc 'methods', 'methods subcommands'
23
+ subcommand 'methods', Methods
24
+ end
25
+
26
+ end
27
+ end
@@ -0,0 +1,33 @@
1
+ module Awful
2
+ module Short
3
+ def apiresources(*args)
4
+ Awful::ApiGateway::Resources.new.invoke(*args)
5
+ end
6
+ end
7
+
8
+ module ApiGateway
9
+
10
+ class Resources < Cli
11
+ desc 'ls REST_API_ID', 'list resources for given rest api'
12
+ method_option :long, aliases: '-l', default: false, desc: 'Long listing'
13
+ def ls(id)
14
+ api_gateway.get_resources(rest_api_id: id).items.output do |items|
15
+ if options[:long]
16
+ print_table items.map { |i|
17
+ methods = i.resource_methods ? i.resource_methods.keys.join(',') : ''
18
+ [i.path, i.id, i.parent_id, methods]
19
+ }.sort
20
+ else
21
+ puts items.map(&:path).sort
22
+ end
23
+ end
24
+ end
25
+ end
26
+
27
+ class RestApi < Cli
28
+ desc 'resources', 'resources subcommands'
29
+ subcommand 'resources', Resources
30
+ end
31
+
32
+ end
33
+ end
@@ -0,0 +1,32 @@
1
+ module Awful
2
+ module Short
3
+ def apistages(*args)
4
+ Awful::ApiGateway::Stages.new.invoke(*args)
5
+ end
6
+ end
7
+
8
+ module ApiGateway
9
+
10
+ class Stages < Cli
11
+ desc 'ls REST_API_ID', 'list stages for given rest api'
12
+ method_option :long, aliases: '-l', default: false, desc: 'Long listing'
13
+ def ls(id, deployment = nil)
14
+ api_gateway.get_stages(rest_api_id: id, deployment_id: deployment).item.output do |items|
15
+ if options[:long]
16
+ print_table items.map { |i|
17
+ [i.stage_name, i.deployment_id, i.last_updated_date, i.description]
18
+ }.sort
19
+ else
20
+ puts items.map(&:stage_name).sort
21
+ end
22
+ end
23
+ end
24
+ end
25
+
26
+ class RestApi < Cli
27
+ desc 'stages', 'stages subcommands'
28
+ subcommand 'stages', Stages
29
+ end
30
+
31
+ end
32
+ end
@@ -56,11 +56,9 @@ module Awful
56
56
  end
57
57
 
58
58
  ## match on given arg
59
- stacks = stacks.select do |stack|
59
+ stacks.select do |stack|
60
60
  stack.stack_name.match(name)
61
- end
62
-
63
- stacks.tap do |list|
61
+ end.output do |list|
64
62
  if options[:long]
65
63
  print_table list.map { |s|
66
64
  [
@@ -88,29 +86,29 @@ module Awful
88
86
 
89
87
  desc 'dump NAME', 'describe stack named NAME'
90
88
  def dump(name)
91
- cf.describe_stacks(stack_name: name).stacks.tap do |stacks|
89
+ cf.describe_stacks(stack_name: name).stacks.output do |stacks|
92
90
  stacks.each do |stack|
93
91
  puts YAML.dump(stringify_keys(stack.to_hash))
94
92
  end
95
93
  end
96
94
  end
97
95
 
98
- desc 'outputs NAME', 'get stack outputs as a hash'
99
- def outputs(name)
100
- cf.describe_stacks(stack_name: name).stacks.map do |stack|
101
- stack.outputs.each_with_object({}) do |output, hash|
102
- hash[output.output_key] = output.output_value
103
- end
104
- end.output do |stacks|
105
- stacks.each do |output|
106
- print_table output
107
- end
96
+ desc 'outputs NAME [KEY]', 'get stack outputs as a ruby hash, or individual value'
97
+ def outputs(name, key = nil)
98
+ output_hash = cf.describe_stacks(stack_name: name).stacks.first.outputs.each_with_object({}) do |o, hash|
99
+ hash[o.output_key] = o.output_value
100
+ end
101
+
102
+ if key
103
+ output_hash[key.to_s].output(&method(:puts))
104
+ else
105
+ output_hash.output(&method(:print_table))
108
106
  end
109
107
  end
110
108
 
111
109
  desc 'template NAME', 'get template for stack named NAME'
112
110
  def template(name)
113
- cf.get_template(stack_name: name).template_body.tap do |template|
111
+ cf.get_template(stack_name: name).template_body.output do |template|
114
112
  puts template
115
113
  end
116
114
  end
@@ -118,17 +116,17 @@ module Awful
118
116
  desc 'validate FILE', 'validate given template in FILE or stdin'
119
117
  def validate(file = nil)
120
118
  begin
121
- cf.validate_template(template_body: file_or_stdin(file)).tap do |response|
119
+ cf.validate_template(template_body: file_or_stdin(file)).output do |response|
122
120
  puts YAML.dump(stringify_keys(response.to_hash))
123
121
  end
124
122
  rescue Aws::CloudFormation::Errors::ValidationError => e
125
- e.tap { |err| puts err.message }
123
+ e.output { |err| puts err.message }
126
124
  end
127
125
  end
128
126
 
129
127
  desc 'create NAME', 'create stack with name NAME'
130
128
  def create(name, file = nil)
131
- cf.create_stack(stack_name: name, template_body: file_or_stdin(file)).tap do |response|
129
+ cf.create_stack(stack_name: name, template_body: file_or_stdin(file)).output do |response|
132
130
  puts response.stack_id
133
131
  end
134
132
  end
@@ -136,11 +134,11 @@ module Awful
136
134
  desc 'update NAME', 'update stack with name NAME'
137
135
  def update(name, file = nil)
138
136
  begin
139
- cf.update_stack(stack_name: name, template_body: file_or_stdin(file)).tap do |response|
137
+ cf.update_stack(stack_name: name, template_body: file_or_stdin(file)).output do |response|
140
138
  puts response.stack_id
141
139
  end
142
140
  rescue Aws::CloudFormation::Errors::ValidationError => e
143
- e.tap { |err| puts err.message }
141
+ e.output { |err| puts err.message }
144
142
  end
145
143
  end
146
144
 
@@ -156,7 +154,7 @@ module Awful
156
154
  {key: key, value: value}
157
155
  end
158
156
  }
159
- cf.update_stack(params).tap do |response|
157
+ cf.update_stack(params).output do |response|
160
158
  puts response.stack_id
161
159
  end
162
160
  end
@@ -225,16 +223,29 @@ module Awful
225
223
  if policy
226
224
  cf.set_stack_policy(stack_name: name, stack_policy_body: policy)
227
225
  else
228
- cf.get_stack_policy(stack_name: name).stack_policy_body.tap(&method(:puts))
226
+ cf.get_stack_policy(stack_name: name).stack_policy_body.output(&method(:puts))
229
227
  end
230
228
  end
231
229
 
232
230
  desc 'limits', 'describe cloudformation account limits'
233
231
  def limits
234
- cf.describe_account_limits.account_limits.tap do |limits|
232
+ cf.describe_account_limits.account_limits.output do |limits|
235
233
  print_table limits.map { |l| [l.name, l.value] }
236
234
  end
237
235
  end
238
236
 
237
+ ## this is almost entirely useless in practice
238
+ desc 'cost', 'describe cost for given stack'
239
+ def cost(name)
240
+ template = cf.get_template(stack_name: name).template_body
241
+ parameters = cf.describe_stacks(stack_name: name).stacks.first.parameters.map do |p|
242
+ {
243
+ parameter_key: p.parameter_key,
244
+ parameter_value: p.parameter_value,
245
+ use_previous_value: true, # use param values from actual stack
246
+ }
247
+ end
248
+ puts cf.estimate_template_cost(template_body: template, parameters: parameters).url
249
+ end
239
250
  end
240
251
  end
data/lib/awful/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Awful
2
- VERSION = '0.0.124'
2
+ VERSION = '0.0.125'
3
3
  end
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.124
4
+ version: 0.0.125
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-09 00:00:00.000000000 Z
11
+ date: 2016-07-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -153,6 +153,9 @@ files:
153
153
  - lib/awful/ami.rb
154
154
  - lib/awful/api_gateway.rb
155
155
  - lib/awful/api_gateway_deployments.rb
156
+ - lib/awful/api_gateway_methods.rb
157
+ - lib/awful/api_gateway_resources.rb
158
+ - lib/awful/api_gateway_stages.rb
156
159
  - lib/awful/auto_scaling.rb
157
160
  - lib/awful/auto_scaling_notifications.rb
158
161
  - lib/awful/changesets.rb