autostacker24 1.0.8 → 1.0.9

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: dba5db40a030fc43099e897142221408281fde0f
4
- data.tar.gz: e0bdf82e4fe18602a9c5852077c03ef1bfd4a9b4
3
+ metadata.gz: b732fd31c628afdb647f46c73cf3291deb75a1a8
4
+ data.tar.gz: 64a7bcd1cbda0d7671901af8007cce921a2d6cdb
5
5
  SHA512:
6
- metadata.gz: be884bbe188f6ed46c47aba394be80873e582d682c1414070b335be2f725b76644888f9a6b8cf72c741ef065ec228fc891a767de7278503a135bfd2c18f9b3ee
7
- data.tar.gz: f406a791a692ed25729778f5970e74e92f94ae02ac4426531243e9f8f32ced4e249fced641434e1f164a2f3db20ebbf5c35fd9ce5c8c5e8585d7572a3eccc03c
6
+ metadata.gz: bb34baa7e6d305e4003bd17f219cc3cd794fa72dfd11dc132a3d507072f73bc20e0624bdfa9813f2387041a987d90f4a2e8c6d0ce234de5d75ee45a202030b36
7
+ data.tar.gz: 6b0841d59347522ec965c6b99d4c9c9784b31c062954beff3f81f329890650282222d56a0e7390aa4b9de555aa8e0d9b3aebaa11f5dba496c38237019098f96b
@@ -14,10 +14,8 @@ class ServiceStack
14
14
  attr_reader :name, :sandbox, :version, :stack_name, :global_stack_name
15
15
 
16
16
  def create_or_update(template, parameters)
17
- inputs = JSON(template)['Parameters']
18
- global_outputs.each{|k, v| parameters[k.to_sym] = v if inputs.has_key?(k.to_s)}
19
17
  parameters[:Version] = version
20
- Stacker.create_or_update_stack(stack_name, template, parameters)
18
+ Stacker.create_or_update_stack(stack_name, template, parameters, global_stack_name)
21
19
  end
22
20
 
23
21
  def delete
@@ -2,15 +2,16 @@ require 'aws-sdk'
2
2
 
3
3
  module Stacker
4
4
 
5
- def self.create_or_update_stack(stack_name, template_body, parameters)
5
+ def self.create_or_update_stack(stack_name, template_body, parameters, parent_stack_name = nil)
6
6
  if find_stack(stack_name).nil?
7
- create_stack(stack_name, template_body, parameters)
7
+ create_stack(stack_name, template_body, parameters, parent_stack_name)
8
8
  else
9
- update_stack(stack_name, template_body, parameters)
9
+ update_stack(stack_name, template_body, parameters, parent_stack_name)
10
10
  end
11
11
  end
12
12
 
13
- def self.create_stack(stack_name, template_body, parameters)
13
+ def self.create_stack(stack_name, template_body, parameters, parent_stack_name = nil)
14
+ merge_output_parameters(parent_stack_name, template_body, parameters) if parent_stack_name
14
15
  cloud_formation.create_stack(stack_name: stack_name,
15
16
  template_body: template_body,
16
17
  on_failure: 'DELETE',
@@ -19,7 +20,8 @@ module Stacker
19
20
  wait_for_stack(stack_name, :create)
20
21
  end
21
22
 
22
- def self.update_stack(stack_name, template_body, parameters)
23
+ def self.update_stack(stack_name, template_body, parameters, parent_stack_name = nil)
24
+ merge_output_parameters(parent_stack_name, template_body, parameters) if parent_stack_name
23
25
  begin
24
26
  cloud_formation.update_stack(stack_name: stack_name,
25
27
  template_body: template_body,
@@ -33,6 +35,14 @@ module Stacker
33
35
  end
34
36
  end
35
37
 
38
+ def merge_output_parameters(stack_name, template_body, parameters)
39
+ expected_parameters = JSON(template_body)['Parameters']
40
+ get_stack_outputs(stack_name).each do |k, v|
41
+ parameters[k.to_sym] = v if expected_parameters.has_key?(k.to_s)
42
+ end
43
+ parameters
44
+ end
45
+
36
46
  def self.delete_stack(stack_name)
37
47
  cloud_formation.delete_stack(stack_name: stack_name)
38
48
  wait_for_stack(stack_name, :delete)
@@ -68,14 +78,14 @@ module Stacker
68
78
  cloud_formation.estimate_template_cost(:template_body => template_body, :parameters => transform_parameters(parameters))
69
79
  end
70
80
 
71
- def self.get_stack_outputs(stack_name, hash = {})
81
+ def self.get_stack_outputs(stack_name)
72
82
  stack = find_stack(stack_name)
73
83
  fail "stack #{stack_name} not found" unless stack
74
- transform_outputs(stack.outputs, hash).freeze
84
+ transform_outputs(stack.outputs).freeze
75
85
  end
76
86
 
77
- def self.transform_outputs(outputs, existing_outputs = {})
78
- outputs.inject(existing_outputs) { |m, o| m.merge(o.output_key.to_sym => o.output_value) }
87
+ def self.transform_outputs(outputs)
88
+ outputs.inject({}) { |m, o| m.merge(o.output_key.to_sym => o.output_value) }
79
89
  end
80
90
 
81
91
  def self.transform_parameters(parameters)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: autostacker24
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.8
4
+ version: 1.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Johannes Mueller
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-01-02 00:00:00.000000000 Z
12
+ date: 2015-01-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: aws-sdk