cfndk 0.0.5 → 0.0.6

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: f083e8a85ab15d77d5de878cfdbe04449b5e4c63
4
- data.tar.gz: 5baddc25f36a208cc9040fcf40f0d9fc314da6ae
3
+ metadata.gz: 19325cb7304add2725fc19d27eaf72dbd4c4576c
4
+ data.tar.gz: 7f237af4102d774bf24ea009cfb3a77428271e0c
5
5
  SHA512:
6
- metadata.gz: 25585042c39f20242014e99ea37bff5e9638621aca5d730d8328c2a09d287a9f70b5dd77795a62e3a1cf80301ca75ff964c3a9c6712e07a6fe829f1f54031e43
7
- data.tar.gz: 46872932ad3ca28c12ec6238514f0eb068529a682338796fad391b9b6000c2e9d5278b1eb764e2b85f9fd1b73005c29d701ce9c8a296ba266c769a4bd5fc6f6b
6
+ metadata.gz: ec6bbe3c622e319a5f9d06527bc0117908db0803f966ac7c657b2f101484e7d39c953f0ed9ff561903908d375b7227e96d0990fc529da00eeb27f2c78351eaf6
7
+ data.tar.gz: 71e19e30a2342f2c9aa4ebeaee61e8d16d96a3993ed7e5f16e963427dc2cd26e648ad770e9cb5cea8f9fa0c296cd640b57f8940b0957bf591dc9a79456c68b21
data/bin/cfndk CHANGED
@@ -16,136 +16,7 @@ require 'logger'
16
16
 
17
17
  require 'cfndk.rb'
18
18
 
19
- def do_destroy(option)
20
- return true if option[:force]
21
- loop do
22
- print 'destroy? [yes|no]:'
23
- res = STDIN.gets
24
- case res
25
- when /^yes/
26
- return true
27
- when /^no/, /^$/
28
- return false
29
- end
30
- end
31
- end
32
-
33
19
  $LOAD_PATH.unshift File.dirname(__FILE__) + '/../lib'
34
20
 
35
- cur_dir = Dir.getwd
36
-
37
- option = {
38
- config_path: "#{cur_dir}/cfndk.yml",
39
- uuid: ENV['CFNDK_UUID'] || nil,
40
- properties: {},
41
- stack_names: nil,
42
- force: false,
43
- }
44
-
45
- opt = OptionParser.new do |o|
46
- o.version = CFnDK::VERSION
47
- o.summary_indent = ' ' * 4
48
- o.banner = "Version: #{CFnDK::VERSION} \nUsage: cfndk [cmd] [options]"
49
- o.on_head('[cmd]',
50
- ' init create config YAML file',
51
- ' create create stacks',
52
- ' update update stacks',
53
- ' create-or-changeset create stacks or create changeset',
54
- ' destroy destroy stacks',
55
- ' generate-uuid generate UUID',
56
- ' report-event report stack event',
57
- ' report-stack report stack',
58
- ' report-stack-resource report stack resource',
59
- '[enviroment variables]',
60
- " AWS_PROFILE: #{ENV['AWS_PROFILE']}",
61
- " AWS_DEFAULT_REGION: #{ENV['AWS_DEFAULT_REGION']}",
62
- " AWS_REGION: #{ENV['AWS_REGION']}",
63
- " AWS_ACCESS_KEY_ID: #{ENV['AWS_ACCESS_KEY_ID']}",
64
- " AWS_SECRET_ACCESS_KEY: #{ENV['AWS_SECRET_ACCESS_KEY']}",
65
- " AWS_SESSION_TOKEN: #{ENV['AWS_SECRET_ACCESS_KEY']}",
66
- " AWS_CONTAINER_CREDENTIALS_RELATIVE_URI: #{ENV['AWS_CONTAINER_CREDENTIALS_RELATIVE_URI']}",
67
- '[options]')
68
- o.on('-v', '--verbose', 'verbose mode') { |v| option[:v] = v }
69
- o.on('-c', '--config_path cfndi.yml', "config path (default: #{option[:config_path]})") { |v| option[:config_path] = v }
70
- o.on('-p', '--properties name=value', 'properties') do |v|
71
- md = v.match(/^([a-zA-Z_]+[a-zA-Z0-9_]*)=(.*)$/)
72
- if md
73
- option[:properties][md[0]] = md[1]
74
- else
75
- raise "invalid properties: '#{v}'" unless md
76
- end
77
- end
78
- o.on('-a', '--auto-uuid') { option[:uuid] = SecureRandom.uuid }
79
- o.on('-u', '--uuid uuid') { |v| option[:uuid] = v }
80
- o.on('-n', '--stack-names name1,name2') { |v| option[:stack_names] = v.split(/\s*,\s*/) }
81
- o.on('--no-color') { |b| Rainbow.enabled = false }
82
- o.on('-f', '--force') { |b| option[:force] = true }
83
- o.permute!(ARGV)
84
- end
85
-
86
- logger = CFnDK::Logger.new(option)
87
-
88
- if ARGV.length != 1
89
- puts opt.help
90
- exit 1
91
- elsif ARGV[0] == 'generate-uuid'
92
- puts SecureRandom.uuid
93
- exit 0
94
- elsif ARGV[0] == 'init'
95
- if File.file?(option[:config_path])
96
- logger.error "File exist. #{option[:config_path]}".color(:red)
97
- exit 1
98
- end
99
- logger.info 'init...'.color(:green)
100
- FileUtils.cp_r(Dir.glob(File.dirname(__FILE__) + '/../skel/*'), './')
101
- logger.info "create #{option[:config_path]}".color(:green)
102
- exit 0
103
- end
104
-
105
- unless File.file?(option[:config_path])
106
- logger.error "File does not exist. #{option[:config_path]}".color(:red)
107
- exit 1
108
- end
109
-
110
- data = open(option[:config_path], 'r') { |f| YAML.load(f) } if File.file?(option[:config_path])
111
- credentials = CFnDK::CredentialProviderChain.new.resolve
112
- stacks = CFnDK::Stacks.new(data, option, credentials)
113
- keypairs = CFnDK::KeyPairs.new(data, option, credentials)
114
-
115
- if ARGV[0] == 'create'
116
- logger.info 'create...'.color(:green)
117
- stacks.validate
118
- keypairs.create
119
- stacks.create
120
- elsif ARGV[0] == 'update'
121
- logger.info 'update...'.color(:green)
122
- stacks.validate
123
- stacks.update
124
- elsif ARGV[0] == 'create-or-changeset'
125
- logger.info 'create or changeset...'.color(:green)
126
- stacks.validate
127
- stacks.create_or_changeset
128
- elsif ARGV[0] == 'destroy'
129
- logger.info 'destroy...'.color(:green)
130
- if do_destroy(option)
131
- stacks.destroy
132
- keypairs.destroy
133
- end
134
- elsif ARGV[0] == 'validate'
135
- logger.info 'validate...'.color(:green)
136
- stacks.validate
137
- elsif ARGV[0] == 'report-event'
138
- logger.info 'report event...'.color(:green)
139
- stacks.report_event
140
- elsif ARGV[0] == 'report-stack'
141
- logger.info 'report stack...'.color(:green)
142
- stacks.report_stack
143
- elsif ARGV[0] == 'report-stack-resource'
144
- logger.info 'report stack resource...'.color(:green)
145
- stacks.report_stack_resource
146
- else
147
- puts opt.help
148
- exit 1
149
- end
150
-
151
- exit 0
21
+ c = CFnDK::Command.new
22
+ exit c.execute
data/cfndk.gemspec CHANGED
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
21
21
  spec.add_development_dependency 'bundler', '~> 1.7'
22
22
  spec.add_development_dependency 'rake', '~> 11.1.2'
23
23
 
24
- spec.add_dependency 'rainbow', '~> 2.1.0'
24
+ spec.add_dependency 'rainbow', '~> 3.0.0'
25
25
  spec.add_dependency 'aws-sdk', '~> 3'
26
26
  spec.add_dependency 'camelizable', '~> 0.0.3'
27
27
  spec.add_dependency 'terminal-table', '~> 1'
data/lib/cfndk.rb CHANGED
@@ -6,6 +6,7 @@ require 'cfndk/key_pairs'
6
6
  require 'cfndk/erb_string'
7
7
  require 'cfndk/logger'
8
8
  require 'cfndk/credential_provider_chain'
9
+ require 'cfndk/command'
9
10
 
10
11
  module CFnDK
11
12
  end
@@ -0,0 +1,136 @@
1
+ module CFnDK
2
+ class Command
3
+ def initialize
4
+ @cur_dir = Dir.getwd
5
+ @option = {
6
+ config_path: "#{@cur_dir}/cfndk.yml",
7
+ uuid: ENV['CFNDK_UUID'] || nil,
8
+ properties: {},
9
+ stack_names: nil,
10
+ force: false,
11
+ }
12
+
13
+ @opt = OptionParser.new do |o|
14
+ o.version = CFnDK::VERSION
15
+ o.summary_indent = ' ' * 4
16
+ o.banner = "Version: #{CFnDK::VERSION} \nUsage: cfndk [cmd] [options]"
17
+ o.on_head('[cmd]',
18
+ ' init create config YAML file',
19
+ ' create create stacks',
20
+ ' update update stacks',
21
+ ' create-or-changeset create stacks or create changeset',
22
+ ' destroy destroy stacks',
23
+ ' generate-uuid generate UUID',
24
+ ' report-event report stack event',
25
+ ' report-stack report stack',
26
+ ' report-stack-resource report stack resource',
27
+ '[enviroment variables]',
28
+ " AWS_PROFILE: #{ENV['AWS_PROFILE']}",
29
+ " AWS_DEFAULT_REGION: #{ENV['AWS_DEFAULT_REGION']}",
30
+ " AWS_REGION: #{ENV['AWS_REGION']}",
31
+ " AWS_ACCESS_KEY_ID: #{ENV['AWS_ACCESS_KEY_ID']}",
32
+ " AWS_SECRET_ACCESS_KEY: #{ENV['AWS_SECRET_ACCESS_KEY']}",
33
+ " AWS_SESSION_TOKEN: #{ENV['AWS_SECRET_ACCESS_KEY']}",
34
+ " AWS_CONTAINER_CREDENTIALS_RELATIVE_URI: #{ENV['AWS_CONTAINER_CREDENTIALS_RELATIVE_URI']}",
35
+ '[options]')
36
+ o.on('-v', '--verbose', 'verbose mode') { |v| @option[:v] = v }
37
+ o.on('-c', '--config_path cfndi.yml', "config path (default: #{@option[:config_path]})") { |v| @option[:config_path] = v }
38
+ o.on('-p', '--properties name=value', 'properties') do |v|
39
+ md = v.match(/^([a-zA-Z_]+[a-zA-Z0-9_]*)=(.*)$/)
40
+ if md
41
+ @option[:properties][md[0]] = md[1]
42
+ else
43
+ raise "invalid properties: '#{v}'" unless md
44
+ end
45
+ end
46
+ o.on('-a', '--auto-uuid') { @option[:uuid] = SecureRandom.uuid }
47
+ o.on('-u', '--uuid uuid') { |v| @option[:uuid] = v }
48
+ o.on('-n', '--stack-names name1,name2') { |v| @option[:stack_names] = v.split(/\s*,\s*/) }
49
+ o.on('--no-color') { |b| Rainbow.enabled = false }
50
+ o.on('-f', '--force') { |b| @option[:force] = true }
51
+ o.permute!(ARGV)
52
+ end
53
+ @logger = CFnDK::Logger.new(@option)
54
+ end
55
+
56
+ def execute
57
+ if ARGV.length != 1
58
+ puts @opt.help
59
+ return 2
60
+ elsif ARGV[0] == 'generate-uuid'
61
+ puts SecureRandom.uuid
62
+ return 0
63
+ elsif ARGV[0] == 'init'
64
+ if File.file?(@option[:config_path])
65
+ @logger.error "File exist. #{@option[:config_path]}".color(:red)
66
+ return 1
67
+ end
68
+ @logger.info 'init...'.color(:green)
69
+ FileUtils.cp_r(Dir.glob(File.dirname(__FILE__) + '/../skel/*'), './')
70
+ @logger.info "create #{@option[:config_path]}".color(:green)
71
+ return 0
72
+ end
73
+
74
+ unless File.file?(@option[:config_path])
75
+ @logger.error "File does not exist. #{@option[:config_path]}".color(:red)
76
+ return 1
77
+ end
78
+
79
+ data = open(@option[:config_path], 'r') { |f| YAML.load(f) } if File.file?(@option[:config_path])
80
+ credentials = CFnDK::CredentialProviderChain.new.resolve
81
+ stacks = CFnDK::Stacks.new(data, @option, credentials)
82
+ keypairs = CFnDK::KeyPairs.new(data, @option, credentials)
83
+
84
+ if ARGV[0] == 'create'
85
+ @logger.info 'create...'.color(:green)
86
+ stacks.validate
87
+ keypairs.create
88
+ stacks.create
89
+ elsif ARGV[0] == 'update'
90
+ @logger.info 'update...'.color(:green)
91
+ stacks.validate
92
+ stacks.update
93
+ elsif ARGV[0] == 'create-or-changeset'
94
+ @logger.info 'create or changeset...'.color(:green)
95
+ stacks.validate
96
+ stacks.create_or_changeset
97
+ elsif ARGV[0] == 'destroy'
98
+ @logger.info 'destroy...'.color(:green)
99
+ if destroy?
100
+ stacks.destroy
101
+ keypairs.destroy
102
+ end
103
+ elsif ARGV[0] == 'validate'
104
+ @logger.info 'validate...'.color(:green)
105
+ stacks.validate
106
+ elsif ARGV[0] == 'report-event'
107
+ @logger.info 'report event...'.color(:green)
108
+ stacks.report_event
109
+ elsif ARGV[0] == 'report-stack'
110
+ @logger.info 'report stack...'.color(:green)
111
+ stacks.report_stack
112
+ elsif ARGV[0] == 'report-stack-resource'
113
+ @logger.info 'report stack resource...'.color(:green)
114
+ stacks.report_stack_resource
115
+ else
116
+ puts @opt.help
117
+ return 2
118
+ end
119
+ 0
120
+ end
121
+
122
+ def destroy?
123
+ return true if @option[:force]
124
+ loop do
125
+ print 'destroy? [yes|no]:'
126
+ res = STDIN.gets
127
+ case res
128
+ when /^yes/
129
+ return true
130
+ when /^no/, /^$/
131
+ return false
132
+ end
133
+ end
134
+ end
135
+ end
136
+ end
data/lib/cfndk/stack.rb CHANGED
@@ -167,7 +167,7 @@ module CFnDK
167
167
  item.stack_name,
168
168
  item.creation_time,
169
169
  item.deletion_time,
170
- coloerd_status(item.stack_status),
170
+ colored_status(item.stack_status),
171
171
  item.stack_status_reason]
172
172
  end
173
173
  table = Terminal::Table.new headings: %w(Name Creation Deletion Status Reason), rows: rows
@@ -188,7 +188,7 @@ module CFnDK
188
188
  [
189
189
  item.resource_type,
190
190
  item.timestamp,
191
- coloerd_status(item.resource_status),
191
+ colored_status(item.resource_status),
192
192
  item.resource_status_reason]
193
193
  end
194
194
  table = Terminal::Table.new headings: %w(Type Time Status Reason), rows: rows
@@ -211,7 +211,7 @@ module CFnDK
211
211
  item.physical_resource_id,
212
212
  item.resource_type,
213
213
  item.timestamp,
214
- coloerd_status(item.resource_status),
214
+ colored_status(item.resource_status),
215
215
  item.resource_status_reason,
216
216
  item.description,
217
217
  ]
@@ -244,20 +244,20 @@ module CFnDK
244
244
 
245
245
  private
246
246
 
247
- def coloerd_status(str)
247
+ def colored_status(str)
248
248
  case str
249
249
  when 'CREATE_FAILED' then
250
- item.resource_status.color :red
250
+ str.color :red
251
251
  when 'ROLLBACK_IN_PROGRESS' then
252
- item.resource_status.color :red
252
+ str.color :red
253
253
  when 'ROLLBACK_COMPLETE' then
254
- item.resource_status.color :red
254
+ str.color :red
255
255
  when 'CREATE_COMPLETE' then
256
- item.resource_status.color :green
256
+ str.color :green
257
257
  when 'DELETE_COMPLETE' then
258
- item.resource_status.color :gray
258
+ str.color :gray
259
259
  else
260
- item.resource_status.color :orange
260
+ str.color :orange
261
261
  end
262
262
  end
263
263
 
data/lib/cfndk/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module CFnDK
2
- VERSION = '0.0.5'.freeze
2
+ VERSION = '0.0.6'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cfndk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yoshihisa AMAKATA
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-02-18 00:00:00.000000000 Z
11
+ date: 2019-02-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 2.1.0
47
+ version: 3.0.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 2.1.0
54
+ version: 3.0.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: aws-sdk
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -111,6 +111,7 @@ files:
111
111
  - bin/cfndk
112
112
  - cfndk.gemspec
113
113
  - lib/cfndk.rb
114
+ - lib/cfndk/command.rb
114
115
  - lib/cfndk/credential_provider_chain.rb
115
116
  - lib/cfndk/erb_string.rb
116
117
  - lib/cfndk/key_pair.rb