kumogata 0.2.8 → 0.2.9

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6a084457b2108497cd7ad64a62d7372337ffda6b
4
- data.tar.gz: faf9dcdc774b828986f2fe3278a62ac62ea20bf8
3
+ metadata.gz: 9f3941d2e08255324b58a9db11ab3365d7fc4352
4
+ data.tar.gz: a7de79d6681d01a8ff16176da2fcfae3aa75ccc0
5
5
  SHA512:
6
- metadata.gz: 412ad000dd6e7d865fe763994cccee083f1e223d23f6dd60c167728e77592d2afb946b7e1509831c6bca18bf30095927a4a971bd1377169add49200ba0657d14
7
- data.tar.gz: 3b9c298c11a035087c551e63f5e82459fd6f16f4d5bb4a39e2ee6ca8c92690047ecc8aaefe4f67d9c3de2633a9c8f36bf285282f1a683222257bd26b466b96ad
6
+ metadata.gz: 754de61cabe8e01e4b9e2ba2a73859615fb43d8846d70a90ff19d04c25743e5494ca59dc92a662eb1380e1ec7b1bac868e41b0e9c7cf276e51410a164bf9c605
7
+ data.tar.gz: 2d13045023a54b098dca9d11e94223066c6594947154b5f5b20be84f5c326d67d1762347db717e88c158f3467038dcb8e06ef2c52ed181478f9fcc840340c067
data/README.md CHANGED
@@ -5,8 +5,8 @@
5
5
 
6
6
  Kumogata is a tool for [AWS CloudFormation](https://aws.amazon.com/cloudformation/).
7
7
 
8
- [![Gem Version](https://badge.fury.io/rb/kumogata.png?201403061440)](http://badge.fury.io/rb/kumogata)
9
- [![Build Status](https://drone.io/github.com/winebarrel/kumogata/status.png?201403061440)](https://drone.io/github.com/winebarrel/kumogata/latest)
8
+ [![Gem Version](https://badge.fury.io/rb/kumogata.png?201403061551)](http://badge.fury.io/rb/kumogata)
9
+ [![Build Status](https://drone.io/github.com/winebarrel/kumogata/status.png?201403061551)](https://drone.io/github.com/winebarrel/kumogata/latest)
10
10
 
11
11
  It can define a template in Ruby DSL, such as:
12
12
 
@@ -71,6 +71,7 @@ Commands:
71
71
  delete STACK_NAME Delete a specified stack
72
72
  list [STACK_NAME] List summary information for stacks
73
73
  export STACK_NAME Export a template from a specified stack
74
+ show-events STACK_NAME Show events for a specified stack
74
75
  show-outputs STACK_NAME Show outputs for a specified stack
75
76
  show-resources STACK_NAME Show resources for a specified stack
76
77
  diff PATH_OR_URL1 PATH_OR_URL2 Compare templates logically
@@ -38,6 +38,10 @@ class Kumogata::ArgumentParser
38
38
  :description => 'Export a template from a specified stack',
39
39
  :arguments => [:stack_name]
40
40
  },
41
+ :'show-events' => {
42
+ :description => 'Show events for a specified stack',
43
+ :arguments => [:stack_name]
44
+ },
41
45
  :'show-outputs' => {
42
46
  :description => 'Show outputs for a specified stack',
43
47
  :arguments => [:stack_name]
@@ -62,6 +62,11 @@ class Kumogata::Client
62
62
  devaluate_template(template).chomp
63
63
  end
64
64
 
65
+ def show_events(stack_name)
66
+ events = describe_events(stack_name)
67
+ JSON.pretty_generate(events)
68
+ end
69
+
65
70
  def show_outputs(stack_name)
66
71
  outputs = describe_outputs(stack_name)
67
72
  JSON.pretty_generate(outputs)
@@ -192,7 +197,7 @@ class Kumogata::Client
192
197
  unless while_in_progress(stack, 'CREATE_COMPLETE')
193
198
  errmsgs = ['Create failed']
194
199
  errmsgs << stack_name
195
- errmsgs << sstack.tatus_reason if stack.status_reason
200
+ errmsgs << stack.status_reason if stack.status_reason
196
201
  raise errmsgs.join(': ')
197
202
  end
198
203
 
@@ -216,7 +221,7 @@ class Kumogata::Client
216
221
  unless while_in_progress(stack, 'UPDATE_COMPLETE')
217
222
  errmsgs = ['Update failed']
218
223
  errmsgs << stack_name
219
- errmsgs << sstack.tatus_reason if stack.status_reason
224
+ errmsgs << stack.status_reason if stack.status_reason
220
225
  raise errmsgs.join(': ')
221
226
  end
222
227
 
@@ -245,7 +250,7 @@ class Kumogata::Client
245
250
  unless completed
246
251
  errmsgs = ['Delete failed']
247
252
  errmsgs << stack_name
248
- errmsgs << sstack.tatus_reason if stack.status_reason
253
+ errmsgs << stack.status_reason if stack.status_reason
249
254
  raise errmsgs.join(': ')
250
255
  end
251
256
  end
@@ -272,6 +277,14 @@ class Kumogata::Client
272
277
  JSON.parse(stack.template)
273
278
  end
274
279
 
280
+ def describe_events(stack_name)
281
+ AWS.memoize do
282
+ stack = @cloud_formation.stacks[stack_name]
283
+ stack.status
284
+ events_for(stack)
285
+ end
286
+ end
287
+
275
288
  def describe_outputs(stack_name)
276
289
  AWS.memoize do
277
290
  stack = @cloud_formation.stacks[stack_name]
@@ -339,6 +352,30 @@ class Kumogata::Client
339
352
  Kumogata.logger.info('Template validated successfully'.green)
340
353
  end
341
354
 
355
+ def events_for(stack)
356
+ stack.events.map do |event|
357
+ event_hash = {}
358
+
359
+ [
360
+ :event_id,
361
+ :logical_resource_id,
362
+ :physical_resource_id,
363
+ :resource_properties,
364
+ :resource_status,
365
+ :resource_status_reason,
366
+ :resource_type,
367
+ :stack,
368
+ :stack_id,
369
+ :stack_name,
370
+ :timestamp,
371
+ ].each do |k|
372
+ event_hash[camelize(k)] = event.send(k)
373
+ end
374
+
375
+ event_hash
376
+ end
377
+ end
378
+
342
379
  def outputs_for(stack)
343
380
  outputs_hash = {}
344
381
 
@@ -361,11 +398,7 @@ class Kumogata::Client
361
398
  :resource_status_reason,
362
399
  :last_updated_timestamp
363
400
  ].each do |k|
364
- camelcase = k.to_s.split(/[-_]/).map {|i|
365
- i[0, 1].upcase + i[1..-1].downcase
366
- }.join
367
-
368
- summary_hash[camelcase] = summary[k]
401
+ summary_hash[camelize(k)] = summary[k]
369
402
  end
370
403
 
371
404
  summary_hash
@@ -392,4 +425,10 @@ Stack Resource Summaries:
392
425
  })
393
426
  end
394
427
  end
428
+
429
+ def camelize(str)
430
+ str.to_s.split(/[-_]/).map {|i|
431
+ i[0, 1].upcase + i[1..-1].downcase
432
+ }.join
433
+ end
395
434
  end
@@ -1,3 +1,3 @@
1
1
  module Kumogata
2
- VERSION = '0.2.8'
2
+ VERSION = '0.2.9'
3
3
  end
@@ -0,0 +1,49 @@
1
+ describe 'Kumogata::Client#show_events' do
2
+ it 'show events' do
3
+
4
+ resources = run_client(:show_events, :arguments => ['MyStack']) do |client, cf|
5
+ event = make_double('event') do |obj|
6
+ obj.should_receive(:event_id) { "f45e6070-a4f7-11e3-9326-5088487c4896" }
7
+ obj.should_receive(:logical_resource_id) { "kumogata-f11118a4-a4f7-11e3-8183-98fe943e66ca" }
8
+ obj.should_receive(:physical_resource_id) { "arn:aws:cloudformation:ap-northeast-1:822997939312:stack/kumogata-f11118a4-a4f7-11e3-8183-98fe943e66ca/f1381a30-a4f7-11e3-a340-506cf9a1c096" }
9
+ obj.should_receive(:resource_properties) { nil }
10
+ obj.should_receive(:resource_status) { "CREATE_FAILED" }
11
+ obj.should_receive(:resource_status_reason) { "The following resource(s) failed to create: [myEC2Instance]. " }
12
+ obj.should_receive(:resource_type) { "AWS::CloudFormation::Stack" }
13
+ obj.should_receive(:stack) { "#<AWS::CloudFormation::Stack:0x007ffe4384ca80>" }
14
+ obj.should_receive(:stack_id) { "arn:aws:cloudformation:ap-northeast-1:822997939312:stack/kumogata-f11118a4-a4f7-11e3-8183-98fe943e66ca/f1381a30-a4f7-11e3-a340-506cf9a1c096" }
15
+ obj.should_receive(:stack_name) { "kumogata-f11118a4-a4f7-11e3-8183-98fe943e66ca" }
16
+ obj.should_receive(:timestamp) { "2014-03-06 06:24:21 UTC" }
17
+ end
18
+
19
+ stack = make_double('stack') do |obj|
20
+ obj.should_receive(:status) { 'CREATE_COMPLETE' }
21
+ obj.should_receive(:events).and_return([event])
22
+ end
23
+
24
+ stacks = make_double('stacks') do |obj|
25
+ obj.should_receive(:[]).with('MyStack') { stack }
26
+ end
27
+
28
+ cf.should_receive(:stacks) { stacks }
29
+ end
30
+
31
+ expect(resources).to eq((<<-EOS).chomp)
32
+ [
33
+ {
34
+ "EventId": "f45e6070-a4f7-11e3-9326-5088487c4896",
35
+ "LogicalResourceId": "kumogata-f11118a4-a4f7-11e3-8183-98fe943e66ca",
36
+ "PhysicalResourceId": "arn:aws:cloudformation:ap-northeast-1:822997939312:stack/kumogata-f11118a4-a4f7-11e3-8183-98fe943e66ca/f1381a30-a4f7-11e3-a340-506cf9a1c096",
37
+ "ResourceProperties": null,
38
+ "ResourceStatus": "CREATE_FAILED",
39
+ "ResourceStatusReason": "The following resource(s) failed to create: [myEC2Instance]. ",
40
+ "ResourceType": "AWS::CloudFormation::Stack",
41
+ "Stack": "#<AWS::CloudFormation::Stack:0x007ffe4384ca80>",
42
+ "StackId": "arn:aws:cloudformation:ap-northeast-1:822997939312:stack/kumogata-f11118a4-a4f7-11e3-8183-98fe943e66ca/f1381a30-a4f7-11e3-a340-506cf9a1c096",
43
+ "StackName": "kumogata-f11118a4-a4f7-11e3-8183-98fe943e66ca",
44
+ "Timestamp": "2014-03-06 06:24:21 UTC"
45
+ }
46
+ ]
47
+ EOS
48
+ end
49
+ end
@@ -1,4 +1,4 @@
1
- describe 'Kumogata::Client#outputs' do
1
+ describe 'Kumogata::Client#show_outputs' do
2
2
  it 'show outputs' do
3
3
 
4
4
  outputs = run_client(:show_outputs, :arguments => ['MyStack']) do |client, cf|
@@ -1,4 +1,4 @@
1
- describe 'Kumogata::Client#resources' do
1
+ describe 'Kumogata::Client#show_resources' do
2
2
  it 'show resources' do
3
3
 
4
4
  resources = run_client(:show_resources, :arguments => ['MyStack']) do |client, cf|
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kumogata
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.8
4
+ version: 0.2.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Genki Sugawara
@@ -197,6 +197,7 @@ files:
197
197
  - spec/kumogata_diff_spec.rb
198
198
  - spec/kumogata_export_spec.rb
199
199
  - spec/kumogata_list_spec.rb
200
+ - spec/kumogata_show_events_spec.rb
200
201
  - spec/kumogata_show_outputs_spec.rb
201
202
  - spec/kumogata_show_resources_spec.rb
202
203
  - spec/kumogata_update_spec.rb
@@ -235,6 +236,7 @@ test_files:
235
236
  - spec/kumogata_diff_spec.rb
236
237
  - spec/kumogata_export_spec.rb
237
238
  - spec/kumogata_list_spec.rb
239
+ - spec/kumogata_show_events_spec.rb
238
240
  - spec/kumogata_show_outputs_spec.rb
239
241
  - spec/kumogata_show_resources_spec.rb
240
242
  - spec/kumogata_update_spec.rb