kumogata2 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +14 -12
- data/lib/kumogata2/cli/option_parser.rb +20 -1
- data/lib/kumogata2/client.rb +50 -0
- data/lib/kumogata2/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fb5540a3229d5f4102d1d96eb3f126e6a84a7828
|
4
|
+
data.tar.gz: 15b8e947a3be07b0b2432be90ade1f813b2072c3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 56fd1a43761ac31258d23e7dce325531c517f61a63daf17d4cd60396145d5e41fbcd650a530ddd625b7be6e6910554914ea65f5a9d129afed834aea763146262
|
7
|
+
data.tar.gz: 1eeee2ea9d80d9266b68e4aef6a5d6e7cc208291b3f05d25f5a193ff6e598feb3f653c378e4ab0d9e97fb7a28420a14fd7286e74cd35ead7626d669c88316835
|
data/README.md
CHANGED
@@ -26,18 +26,20 @@ Or install it yourself as:
|
|
26
26
|
Usage: kumogata2 <command> [args] [options]
|
27
27
|
|
28
28
|
Commands:
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
show-
|
40
|
-
show-
|
29
|
+
describe STACK_NAME Describe a specified stack
|
30
|
+
create PATH_OR_URL [STACK_NAME] Create resources as specified in the template
|
31
|
+
update PATH_OR_URL STACK_NAME Update a stack as specified in the template
|
32
|
+
delete STACK_NAME Delete a specified stack
|
33
|
+
validate PATH_OR_URL Validate a specified template
|
34
|
+
list [STACK_NAME] List summary information for stacks
|
35
|
+
export STACK_NAME Export a template from a specified stack
|
36
|
+
convert PATH_OR_URL Convert a template format
|
37
|
+
diff PATH_OR_URL1 PATH_OR_URL2 Compare templates logically (file, http://..., stack://...)
|
38
|
+
dry-run PATH_OR_URL STACK_NAME Create a change set and show it
|
39
|
+
show-events STACK_NAME Show events for a specified stack
|
40
|
+
show-outputs STACK_NAME Show outputs for a specified stack
|
41
|
+
show-resources STACK_NAME Show resources for a specified stack
|
42
|
+
template-summary PATH_OR_URL Show template information for a specified stack
|
41
43
|
|
42
44
|
Support Format:
|
43
45
|
json, js, template
|
@@ -7,6 +7,10 @@ module Kumogata2::CLI
|
|
7
7
|
}
|
8
8
|
|
9
9
|
COMMANDS = {
|
10
|
+
describe: {
|
11
|
+
description: 'Describe a specified stack',
|
12
|
+
arguments: [:stack_name],
|
13
|
+
},
|
10
14
|
create: {
|
11
15
|
description: 'Create resources as specified in the template',
|
12
16
|
arguments: [:path_or_url, :stack_name?],
|
@@ -59,6 +63,10 @@ module Kumogata2::CLI
|
|
59
63
|
description: 'Show resources for a specified stack',
|
60
64
|
arguments: [:stack_name],
|
61
65
|
},
|
66
|
+
template_summary: {
|
67
|
+
description: 'Show template information for a specified stack',
|
68
|
+
arguments: [:path_or_url],
|
69
|
+
},
|
62
70
|
}
|
63
71
|
|
64
72
|
class << self
|
@@ -142,8 +150,9 @@ module Kumogata2::CLI
|
|
142
150
|
|
143
151
|
orig_command = command
|
144
152
|
command = command.gsub('-', '_').to_sym
|
153
|
+
command = find_command(command)
|
145
154
|
|
146
|
-
unless
|
155
|
+
unless command
|
147
156
|
raise "Unknown command: #{orig_command}"
|
148
157
|
end
|
149
158
|
|
@@ -185,6 +194,16 @@ module Kumogata2::CLI
|
|
185
194
|
|
186
195
|
private
|
187
196
|
|
197
|
+
def find_command(command)
|
198
|
+
selected = COMMANDS.keys.select {|i| i =~ /\A#{command}/ }
|
199
|
+
|
200
|
+
if selected.length == 1
|
201
|
+
selected.first
|
202
|
+
else
|
203
|
+
nil
|
204
|
+
end
|
205
|
+
end
|
206
|
+
|
188
207
|
def exit_parse!(exit_code)
|
189
208
|
exit(exit_code)
|
190
209
|
end
|
data/lib/kumogata2/client.rb
CHANGED
@@ -8,7 +8,15 @@ class Kumogata2::Client
|
|
8
8
|
@plugin_by_ext = {}
|
9
9
|
end
|
10
10
|
|
11
|
+
def describe(stack_name)
|
12
|
+
stack_name = normalize_stack_name(stack_name)
|
13
|
+
validate_stack_name(stack_name)
|
14
|
+
stack = describe_stack(stack_name)
|
15
|
+
JSON.pretty_generate(stack).colorize_as(:json)
|
16
|
+
end
|
17
|
+
|
11
18
|
def create(path_or_url, stack_name = nil)
|
19
|
+
stack_name = normalize_stack_name(stack_name)
|
12
20
|
validate_stack_name(stack_name) if stack_name
|
13
21
|
template = open_template(path_or_url)
|
14
22
|
update_deletion_policy(template, delete_stack: !stack_name)
|
@@ -21,6 +29,7 @@ class Kumogata2::Client
|
|
21
29
|
end
|
22
30
|
|
23
31
|
def update(path_or_url, stack_name)
|
32
|
+
stack_name = normalize_stack_name(stack_name)
|
24
33
|
validate_stack_name(stack_name)
|
25
34
|
template = open_template(path_or_url)
|
26
35
|
update_deletion_policy(template, update_metadate: true)
|
@@ -33,6 +42,7 @@ class Kumogata2::Client
|
|
33
42
|
end
|
34
43
|
|
35
44
|
def delete(stack_name)
|
45
|
+
stack_name = normalize_stack_name(stack_name)
|
36
46
|
validate_stack_name(stack_name)
|
37
47
|
@resource.stack(stack_name).stack_status
|
38
48
|
|
@@ -47,12 +57,14 @@ class Kumogata2::Client
|
|
47
57
|
end
|
48
58
|
|
49
59
|
def list(stack_name = nil)
|
60
|
+
stack_name = normalize_stack_name(stack_name)
|
50
61
|
validate_stack_name(stack_name) if stack_name
|
51
62
|
stacks = describe_stacks(stack_name)
|
52
63
|
JSON.pretty_generate(stacks).colorize_as(:json)
|
53
64
|
end
|
54
65
|
|
55
66
|
def export(stack_name)
|
67
|
+
stack_name = normalize_stack_name(stack_name)
|
56
68
|
validate_stack_name(stack_name)
|
57
69
|
template = export_template(stack_name)
|
58
70
|
convert0(template)
|
@@ -87,6 +99,7 @@ class Kumogata2::Client
|
|
87
99
|
end
|
88
100
|
|
89
101
|
def dry_run(path_or_url, stack_name = nil)
|
102
|
+
stack_name = normalize_stack_name(stack_name)
|
90
103
|
validate_stack_name(stack_name) if stack_name
|
91
104
|
template = open_template(path_or_url)
|
92
105
|
update_deletion_policy(template, delete_stack: !stack_name)
|
@@ -96,25 +109,49 @@ class Kumogata2::Client
|
|
96
109
|
end
|
97
110
|
|
98
111
|
def show_events(stack_name)
|
112
|
+
stack_name = normalize_stack_name(stack_name)
|
99
113
|
validate_stack_name(stack_name)
|
100
114
|
events = describe_events(stack_name)
|
101
115
|
JSON.pretty_generate(events).colorize_as(:json)
|
102
116
|
end
|
103
117
|
|
104
118
|
def show_outputs(stack_name)
|
119
|
+
stack_name = normalize_stack_name(stack_name)
|
105
120
|
validate_stack_name(stack_name)
|
106
121
|
outputs = describe_outputs(stack_name)
|
107
122
|
JSON.pretty_generate(outputs).colorize_as(:json)
|
108
123
|
end
|
109
124
|
|
110
125
|
def show_resources(stack_name)
|
126
|
+
stack_name = normalize_stack_name(stack_name)
|
111
127
|
validate_stack_name(stack_name)
|
112
128
|
resources = describe_resources(stack_name)
|
113
129
|
JSON.pretty_generate(resources).colorize_as(:json)
|
114
130
|
end
|
115
131
|
|
132
|
+
def template_summary(path_or_url)
|
133
|
+
params = {}
|
134
|
+
|
135
|
+
if path_or_url =~ %r|\Astack://(.*)|
|
136
|
+
stack_name = $1 || ''
|
137
|
+
validate_stack_name(stack_name)
|
138
|
+
params[:stack_name] = stack_name
|
139
|
+
else
|
140
|
+
template = open_template(path_or_url)
|
141
|
+
params[:template_body] = JSON.pretty_generate(template)
|
142
|
+
end
|
143
|
+
|
144
|
+
summary = describe_template_summary(params)
|
145
|
+
JSON.pretty_generate(summary).colorize_as(:json)
|
146
|
+
end
|
147
|
+
|
116
148
|
private
|
117
149
|
|
150
|
+
def describe_stack(stack_name)
|
151
|
+
resp = @client.describe_stacks(stack_name: stack_name)
|
152
|
+
resp.stacks.first.to_h
|
153
|
+
end
|
154
|
+
|
118
155
|
def create_stack(template, stack_name)
|
119
156
|
stack_will_be_deleted = !stack_name
|
120
157
|
|
@@ -325,6 +362,11 @@ class Kumogata2::Client
|
|
325
362
|
resource_summaries_for(stack)
|
326
363
|
end
|
327
364
|
|
365
|
+
def describe_template_summary(params)
|
366
|
+
resp = @client.get_template_summary(params)
|
367
|
+
resp.to_h
|
368
|
+
end
|
369
|
+
|
328
370
|
def convert0(template)
|
329
371
|
ext = @options.output_format || 'template'
|
330
372
|
plugin = find_or_create_plugin('xxx.' + ext)
|
@@ -584,4 +626,12 @@ EOS
|
|
584
626
|
stack_name = stack_name.join('-')
|
585
627
|
stack_name.gsub(/[^-a-zA-Z0-9]+/, '-').gsub(/-+/, '-')
|
586
628
|
end
|
629
|
+
|
630
|
+
def normalize_stack_name(stack_name)
|
631
|
+
if %r|\Astack://| =~ stack_name
|
632
|
+
stack_name.sub(%r|\Astack://|, '')
|
633
|
+
else
|
634
|
+
stack_name
|
635
|
+
end
|
636
|
+
end
|
587
637
|
end
|
data/lib/kumogata2/version.rb
CHANGED