kumo_keisei 3.1.1 → 3.2.0

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: e434e0c19435d10b3c7a986b87979a47f693a8fc
4
- data.tar.gz: 442d92aa71ecfb60f7955e2fb244afd8708020b4
3
+ metadata.gz: f6d8ec619b69634348ca0d40ee8be1c4a1b236b2
4
+ data.tar.gz: aa6f7aa6c067191256ba89fa53b4ed52bb6ba7c1
5
5
  SHA512:
6
- metadata.gz: 63fc7d4caf90e0d0c1725540d6758c361117f10149d47f6c3d8208170326c0905f0af5bc4d4f3f1c35e901172f201e5055c0140e20a4a88acb2e6eae4313e4a6
7
- data.tar.gz: 823a33b5d53bb23e3810c9f1d0fa662a5fa96415c2e82401fdea70d5bc2f2d5e0b7569424619f7591d56c5e8c8d62678463133f918965073affea9b1784a82b9
6
+ metadata.gz: 51d5efe78c8e8e45fc83a7cf434f3df9e74e63b8b657215a981104f14e3825905fa189e9da75947760d63b9848772ce81ac7394671bca3ad2e2b4e660c98543a
7
+ data.tar.gz: 67eb98dc2278360e47d05e1caaae9e91be7a4820f4faf54f108f04a13733e3163f4566ec59625fe5f4604da752ad85aacf234a08683c8fb9bc1cfb12425f5479
data/VERSION CHANGED
@@ -1 +1 @@
1
- 3.1.1
1
+ 3.2.0
@@ -29,10 +29,10 @@ module KumoKeisei
29
29
  end
30
30
 
31
31
  def initialize(app_name, environment_name, options = { confirmation_timeout: 30, waiter_delay: 20, waiter_attempts: 90 })
32
- type = options[:type]
32
+ type = options.fetch(:type, 'nodes')
33
33
  @env_name = environment_name
34
34
  @app_name = app_name
35
- @stack_name = type.nil? ? "#{app_name}-#{ environment_name }" : "#{app_name}-#{type}-#{ environment_name }"
35
+ @stack_name = "#{app_name}-#{type}-#{ environment_name }"
36
36
  @confirmation_timeout = options[:confirmation_timeout]
37
37
  @waiter_delay = options[:waiter_delay]
38
38
  @waiter_attempts = options[:waiter_attempts]
@@ -85,6 +85,10 @@ module KumoKeisei
85
85
  environment_config(stack_config).config
86
86
  end
87
87
 
88
+ def params_template_path(stack_config)
89
+ stack_config.has_key?(:template_path) ? File.absolute_path(File.join(File.dirname(stack_config[:template_path]), "#{File.basename(stack_config[:template_path], '.*')}.yml.erb")) : nil
90
+ end
91
+
88
92
  private
89
93
 
90
94
  def transform_logical_resource_id(id)
@@ -162,8 +166,7 @@ module KumoKeisei
162
166
  end
163
167
 
164
168
  def environment_config(stack_config)
165
- params_template_path = stack_config.has_key?(:template_path) ? File.absolute_path(File.join(File.dirname(stack_config[:template_path]), "#{@app_name}.yml.erb")) : nil
166
- EnvironmentConfig.new(stack_config.merge(params_template_file_path: params_template_path))
169
+ EnvironmentConfig.new(stack_config.merge(params_template_file_path: params_template_path(stack_config)))
167
170
  end
168
171
 
169
172
  def stack_events_url
@@ -10,9 +10,10 @@ describe KumoKeisei::Stack do
10
10
 
11
11
  let(:app_name) { "my-stack" }
12
12
  let(:environment_name) { 'non-production' }
13
- let(:stack_name) { "#{app_name}-#{environment_name}" }
14
- let(:stack_template_path) { "#{app_name}-#{environment_name}.json" }
15
- let(:file_params_path) { nil }
13
+ let(:stack_name) { "#{app_name}-nodes-#{environment_name}" }
14
+ let(:stack_template_name) { "#{app_name}-#{environment_name}" }
15
+ let(:stack_cfntemplate_filename) { "#{stack_template_name}.json" }
16
+ let(:stack_cfnparams_filename) { "#{stack_template_name}.yml.erb" }
16
17
  let(:cloudformation) { instance_double(Aws::CloudFormation::Client) }
17
18
  let(:happy_stack_status) { "CREATE_COMPLETE" }
18
19
  let(:cf_stack) { stack_result_list_with_status(happy_stack_status, stack_name) }
@@ -34,7 +35,7 @@ describe KumoKeisei::Stack do
34
35
  let(:stack_config) {
35
36
  {
36
37
  config_path: 'config-path',
37
- template_path: stack_template_path,
38
+ template_path: stack_cfntemplate_filename,
38
39
  injected_config: { 'VpcId' => 'vpc-id' },
39
40
  env_name: 'non-production'
40
41
  }
@@ -49,9 +50,10 @@ describe KumoKeisei::Stack do
49
50
  allow(Aws::CloudFormation::Client).to receive(:new).and_return(cloudformation)
50
51
  allow(cloudformation).to receive(:describe_stacks).with({stack_name: stack_name}).and_return(cf_stack)
51
52
  allow(KumoKeisei::ParameterBuilder).to receive(:new).and_return(parameter_builder)
52
- allow(File).to receive(:read).with(stack_template_path).and_return(stack_template_body)
53
- allow(KumoKeisei::EnvironmentConfig).to receive(:new).with(stack_config.merge(params_template_file_path: "#{app_name}.yml.erb")).and_return(double(:environment_config, cf_params: {}))
54
- allow(File).to receive(:absolute_path).and_return("#{app_name}.yml.erb")
53
+ allow(File).to receive(:read).with(stack_cfntemplate_filename).and_return(stack_template_body)
54
+ allow(KumoKeisei::EnvironmentConfig).to receive(:new).with(stack_config.merge(params_template_file_path: "/#{stack_cfnparams_filename}")).and_return(double(:environment_config, cf_params: {}))
55
+ # allow(File).to receive(:absolute_path).and_return("#{app_name}.yml.erb")
56
+ Dir.chdir('/')
55
57
  end
56
58
 
57
59
  describe "#destroy!" do
@@ -271,8 +273,8 @@ describe KumoKeisei::Stack do
271
273
  end
272
274
 
273
275
  describe "#type" do
274
- it "uses appname-environment name as stack name if the type is not set" do
275
- expect(subject.stack_name).to eq("#{app_name}-#{environment_name}")
276
+ it "presumes stacks are of type node if the type is not set" do
277
+ expect(subject.stack_name).to eq("#{app_name}-nodes-#{environment_name}")
276
278
  end
277
279
 
278
280
  it "embeds the type into the name of the stack if set" do
@@ -283,11 +285,8 @@ describe KumoKeisei::Stack do
283
285
 
284
286
  describe "#config" do
285
287
  context "when passed a config_path and params_template_file_path" do
286
- before do
287
- allow(KumoKeisei::EnvironmentConfig).to receive(:new).with(stack_config.merge(params_template_file_path: "#{app_name}.yml.erb")).and_return(double(:environment_config, cf_params: {}, config: { :foo=> 'bar', :baz=> 'qux' }))
288
- end
289
-
290
288
  it "will return the results of the nested KumoKeisei::EnvironmentConfig.config" do
289
+ expect(KumoKeisei::EnvironmentConfig).to receive(:new).with(stack_config.merge(params_template_file_path: "/#{stack_template_name}.yml.erb")).and_return(double(:environment_config, cf_params: {}, config: { :foo=> 'bar', :baz=> 'qux' }))
291
290
  expect(subject.config(stack_config)).to eq({:foo=> 'bar', :baz=>'qux'})
292
291
  end
293
292
  end
@@ -300,11 +299,8 @@ describe KumoKeisei::Stack do
300
299
  }
301
300
  }
302
301
 
303
- before do
304
- allow(KumoKeisei::EnvironmentConfig).to receive(:new).with(stack_config.merge(params_template_file_path: nil)).and_return(double(:environment_config, cf_params: {}, config: { :foo=> 'bar', :baz=> 'qux' }))
305
- end
306
-
307
302
  it "will return the results of the nested KumoKeisei::EnvironmentConfig.config" do
303
+ expect(KumoKeisei::EnvironmentConfig).to receive(:new).with(stack_config.merge(params_template_file_path: nil)).and_return(double(:environment_config, cf_params: {}, config: { :foo=> 'bar', :baz=> 'qux' }))
308
304
  expect(subject.config(stack_config)).to eq({:foo=> 'bar', :baz=>'qux'})
309
305
  end
310
306
  end
@@ -322,4 +318,37 @@ describe KumoKeisei::Stack do
322
318
  end
323
319
  end
324
320
 
321
+ describe "#params_template_path" do
322
+ context "when looking for the parameter template file" do
323
+ CFN_STACK_TEMPLATE_TO_PARAMATER_TEMPLATE = {
324
+ '/foo/app.json' => '/foo/app.yml.erb',
325
+ '/foo/rds.json' => '/foo/rds.yml.erb'
326
+ }
327
+
328
+ CFN_STACK_TEMPLATE_TO_PARAMATER_TEMPLATE.each_pair do |cfn_template, parameter_template|
329
+ context "given #{cfn_template}" do
330
+ let(:stack_cfntemplate_filename) { "#{cfn_template}" }
331
+ it "uses a matching file in the form of #{parameter_template}" do
332
+ expect(subject.params_template_path(stack_config)).to eq(File.join(Dir.pwd, parameter_template))
333
+ end
334
+ end
335
+ end
336
+ end
337
+
338
+ context "when the parameter template file has not been passed in" do
339
+ let(:stack_config) {
340
+ {
341
+ config_path: 'config-path',
342
+ injected_config: { 'VpcId' => 'vpc-id' },
343
+ env_name: 'non-production'
344
+ }
345
+ }
346
+
347
+ it "will return nil" do
348
+ expect(subject.params_template_path(stack_config)).to be_nil
349
+ end
350
+ end
351
+
352
+ end
353
+
325
354
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kumo_keisei
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.1
4
+ version: 3.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Redbubble