kumogata2 0.1.8 → 0.1.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 +4 -4
- data/lib/kumogata2/client.rb +30 -19
- data/lib/kumogata2/plugin/yaml.rb +16 -0
- data/lib/kumogata2/version.rb +1 -1
- data/lib/kumogata2.rb +1 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2f8d233adf58c553d0835355ab7c9befc443df1d
|
4
|
+
data.tar.gz: 007dcc0ccdaa8fd9870ab0f9ee74a4fab04f577f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 536c5cc9d3b2a6ab91e4ba3bde0919b249ab7f00f4e8cd4762ba2666c62de6b104bf62d4e541950a28e370dd201ee0a599c46244bfee3aad08280c47d9171204
|
7
|
+
data.tar.gz: 3676a3513ddc0b497e9812b4f362f3934b7baa4ab504e4ae200553de73c461ccbd79d07e68da79cd4dec45f6f07a49f5112501c9dc1af9ea879bd9d6571807d3
|
data/lib/kumogata2/client.rb
CHANGED
@@ -3,8 +3,8 @@ class Kumogata2::Client
|
|
3
3
|
|
4
4
|
def initialize(options)
|
5
5
|
@options = options.kind_of?(Hashie::Mash) ? options : Hashie::Mash.new(options)
|
6
|
-
@client =
|
7
|
-
@resource =
|
6
|
+
@client = nil
|
7
|
+
@resource = nil
|
8
8
|
@plugin_by_ext = {}
|
9
9
|
end
|
10
10
|
|
@@ -44,7 +44,7 @@ class Kumogata2::Client
|
|
44
44
|
def delete(stack_name)
|
45
45
|
stack_name = normalize_stack_name(stack_name)
|
46
46
|
validate_stack_name(stack_name)
|
47
|
-
|
47
|
+
get_resource.stack(stack_name).stack_status
|
48
48
|
|
49
49
|
if @options.force? or agree("Are you sure you want to delete `#{stack_name}`? ".yellow)
|
50
50
|
delete_stack(stack_name)
|
@@ -148,8 +148,19 @@ class Kumogata2::Client
|
|
148
148
|
|
149
149
|
private
|
150
150
|
|
151
|
+
def get_client
|
152
|
+
return @client unless @client.nil?
|
153
|
+
@client = Aws::CloudFormation::Client.new
|
154
|
+
end
|
155
|
+
|
156
|
+
def get_resource
|
157
|
+
return @resource unless @resource.nil?
|
158
|
+
get_client if @client.nil?
|
159
|
+
@resource = Aws::CloudFormation::Resource.new(client: @client)
|
160
|
+
end
|
161
|
+
|
151
162
|
def describe_stack(stack_name)
|
152
|
-
resp =
|
163
|
+
resp = get_client.describe_stacks(stack_name: stack_name)
|
153
164
|
resp.stacks.first.to_h
|
154
165
|
end
|
155
166
|
|
@@ -179,7 +190,7 @@ class Kumogata2::Client
|
|
179
190
|
:stack_policy_url)
|
180
191
|
)
|
181
192
|
|
182
|
-
stack =
|
193
|
+
stack = get_resource.create_stack(params)
|
183
194
|
|
184
195
|
return if @options.detach?
|
185
196
|
|
@@ -202,7 +213,7 @@ class Kumogata2::Client
|
|
202
213
|
end
|
203
214
|
|
204
215
|
def update_stack(template, stack_name)
|
205
|
-
stack =
|
216
|
+
stack = get_resource.stack(stack_name)
|
206
217
|
stack.stack_status
|
207
218
|
|
208
219
|
log(:info, "Updating stack: #{stack_name}", color: :green)
|
@@ -230,7 +241,7 @@ class Kumogata2::Client
|
|
230
241
|
return if @options.detach?
|
231
242
|
|
232
243
|
# XXX: Reacquire the stack
|
233
|
-
stack =
|
244
|
+
stack = get_resource.stack(stack_name)
|
234
245
|
completed = wait(stack, 'UPDATE_COMPLETE', event_log)
|
235
246
|
|
236
247
|
unless completed
|
@@ -246,7 +257,7 @@ class Kumogata2::Client
|
|
246
257
|
end
|
247
258
|
|
248
259
|
def delete_stack(stack_name)
|
249
|
-
stack =
|
260
|
+
stack = get_resource.stack(stack_name)
|
250
261
|
stack.stack_status
|
251
262
|
|
252
263
|
log(:info, "Deleting stack: #{stack_name}", color: :red)
|
@@ -259,7 +270,7 @@ class Kumogata2::Client
|
|
259
270
|
|
260
271
|
begin
|
261
272
|
# XXX: Reacquire the stack
|
262
|
-
stack =
|
273
|
+
stack = get_resource.stack(stack_name)
|
263
274
|
completed = wait(stack, 'DELETE_COMPLETE', event_log)
|
264
275
|
rescue Aws::CloudFormation::Errors::ValidationError
|
265
276
|
# Handle `Stack does not exist`
|
@@ -274,7 +285,7 @@ class Kumogata2::Client
|
|
274
285
|
end
|
275
286
|
|
276
287
|
def validate_template(template)
|
277
|
-
|
288
|
+
get_client.validate_template(template_body: template.to_json)
|
278
289
|
log(:info, 'Template validated successfully', color: :green)
|
279
290
|
end
|
280
291
|
|
@@ -282,7 +293,7 @@ class Kumogata2::Client
|
|
282
293
|
params = {}
|
283
294
|
params[:stack_name] = stack_name if stack_name
|
284
295
|
|
285
|
-
|
296
|
+
get_resource.stacks(params).map do |stack|
|
286
297
|
{
|
287
298
|
'StackName' => stack.name,
|
288
299
|
'CreationTime' => stack.creation_time,
|
@@ -293,7 +304,7 @@ class Kumogata2::Client
|
|
293
304
|
end
|
294
305
|
|
295
306
|
def export_template(stack_name)
|
296
|
-
stack =
|
307
|
+
stack = get_resource.stack(stack_name)
|
297
308
|
stack.stack_status
|
298
309
|
template = stack.client.get_template(stack_name: stack_name).template_body
|
299
310
|
JSON.parse(template)
|
@@ -319,7 +330,7 @@ class Kumogata2::Client
|
|
319
330
|
:resource_types)
|
320
331
|
)
|
321
332
|
|
322
|
-
resp =
|
333
|
+
resp = get_client.create_change_set(params)
|
323
334
|
change_set_arn = resp.id
|
324
335
|
|
325
336
|
completed, change_set = wait_change_set(change_set_arn, 'CREATE_COMPLETE')
|
@@ -332,7 +343,7 @@ class Kumogata2::Client
|
|
332
343
|
|
333
344
|
log(:info, "Deleting ChangeSet: #{change_set_name}", color: :red)
|
334
345
|
|
335
|
-
|
346
|
+
get_client.delete_change_set(change_set_name: change_set_arn)
|
336
347
|
|
337
348
|
begin
|
338
349
|
completed, _ = wait_change_set(change_set_arn, 'DELETE_COMPLETE')
|
@@ -349,25 +360,25 @@ class Kumogata2::Client
|
|
349
360
|
end
|
350
361
|
|
351
362
|
def describe_events(stack_name)
|
352
|
-
stack =
|
363
|
+
stack = get_resource.stack(stack_name)
|
353
364
|
stack.stack_status
|
354
365
|
events_for(stack)
|
355
366
|
end
|
356
367
|
|
357
368
|
def describe_outputs(stack_name)
|
358
|
-
stack =
|
369
|
+
stack = get_resource.stack(stack_name)
|
359
370
|
stack.stack_status
|
360
371
|
outputs_for(stack)
|
361
372
|
end
|
362
373
|
|
363
374
|
def describe_resources(stack_name)
|
364
|
-
stack =
|
375
|
+
stack = get_resource.stack(stack_name)
|
365
376
|
stack.stack_status
|
366
377
|
resource_summaries_for(stack)
|
367
378
|
end
|
368
379
|
|
369
380
|
def describe_template_summary(params)
|
370
|
-
resp =
|
381
|
+
resp = get_client.get_template_summary(params)
|
371
382
|
resp.to_h
|
372
383
|
end
|
373
384
|
|
@@ -460,7 +471,7 @@ class Kumogata2::Client
|
|
460
471
|
change_set = nil
|
461
472
|
|
462
473
|
loop do
|
463
|
-
change_set =
|
474
|
+
change_set = get_client.describe_change_set(change_set_name: change_set_name)
|
464
475
|
|
465
476
|
if change_set.status !~ /(_PENDING|_IN_PROGRESS)\z/
|
466
477
|
break
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
class Kumogata2::Plugin::YAML
|
3
|
+
Kumogata2::Plugin.register(:yaml, ['yaml', 'yml'], self)
|
4
|
+
|
5
|
+
def initialize(options)
|
6
|
+
@options = options
|
7
|
+
end
|
8
|
+
|
9
|
+
def parse(str)
|
10
|
+
YAML.load(str)
|
11
|
+
end
|
12
|
+
|
13
|
+
def dump(hash)
|
14
|
+
YAML.dump(hash).colorize_as(:yaml)
|
15
|
+
end
|
16
|
+
end
|
data/lib/kumogata2/version.rb
CHANGED
data/lib/kumogata2.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kumogata2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Genki Sugawara
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-01-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk
|
@@ -177,6 +177,7 @@ files:
|
|
177
177
|
- lib/kumogata2/logger.rb
|
178
178
|
- lib/kumogata2/plugin.rb
|
179
179
|
- lib/kumogata2/plugin/json.rb
|
180
|
+
- lib/kumogata2/plugin/yaml.rb
|
180
181
|
- lib/kumogata2/utils.rb
|
181
182
|
- lib/kumogata2/version.rb
|
182
183
|
homepage: https://github.com/winebarrel/kumogata2
|
@@ -199,7 +200,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
199
200
|
version: '0'
|
200
201
|
requirements: []
|
201
202
|
rubyforge_project:
|
202
|
-
rubygems_version: 2.
|
203
|
+
rubygems_version: 2.5.2
|
203
204
|
signing_key:
|
204
205
|
specification_version: 4
|
205
206
|
summary: Kumogata2 is a tool for AWS CloudFormation.
|