autostacker24 1.0.18 → 1.0.19

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/autostacker24/stacker.rb +35 -22
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1a61bb187cfbe5a926cfc075c658d3910a16a038
4
- data.tar.gz: 9cf46ec2538671b7f5ff1f87507192bcac78d0a2
3
+ metadata.gz: 69bc0d89a868d3567ee930a91d259a89ded9ee12
4
+ data.tar.gz: 940cd3e57bb08dd03b3efe3c1142f5867bc811ac
5
5
  SHA512:
6
- metadata.gz: 88a04ef3bcdf0f549658d95b47d165bf441c16fa0be3b97c7eb6c87f7bc1f192de23cf95d971e0cb5dbf0185fba535d9fb720c0e08369fcdd92f17e56989b4c0
7
- data.tar.gz: 05d01520d75d393492a4058acec9afd83a6f8854bd19607ca344314243e3b4a7c29f559dd2ae4a3d82679732ea3b68142242e7cd494c7ed23b5c80aaf2abed08
6
+ metadata.gz: 6a3f32022329081da86915e95960a5fd836861764c99cd7b542d297a39332e7b5862d945095bb3b0e550debe91eacaaa674d697bca2b9119e656d8ef557326c0
7
+ data.tar.gz: 54b854f345d1a1068876de8ea07f2b6a2fce675b3e6c2874975b7ff1bba2a7919a2060a463e81ef4c746ba17d7a721cb87c31b2b991c4575aafa81f2985981fb
@@ -3,29 +3,40 @@ require 'json'
3
3
 
4
4
  module Stacker
5
5
 
6
- def create_or_update_stack(stack_name, template_body, parameters, parent_stack_name = nil)
6
+ def credentials
7
+ @credentials
8
+ end
9
+
10
+ def credentials=(credentials)
11
+ unless credentials == @credentials
12
+ @lazy_cloud_formation = nil
13
+ @credentials = credentials
14
+ end
15
+ end
16
+
17
+ def create_or_update_stack(stack_name, template, parameters, parent_stack_name = nil)
7
18
  if find_stack(stack_name).nil?
8
- create_stack(stack_name, template_body, parameters, parent_stack_name)
19
+ create_stack(stack_name, template, parameters, parent_stack_name)
9
20
  else
10
- update_stack(stack_name, template_body, parameters, parent_stack_name)
21
+ update_stack(stack_name, template, parameters, parent_stack_name)
11
22
  end
12
23
  end
13
24
 
14
- def create_stack(stack_name, template_body, parameters, parent_stack_name = nil)
15
- merge_output_parameters(parent_stack_name, template_body, parameters) if parent_stack_name
25
+ def create_stack(stack_name, template, parameters, parent_stack_name = nil)
26
+ merge_output_parameters(parent_stack_name, template, parameters) if parent_stack_name
16
27
  cloud_formation.create_stack(stack_name: stack_name,
17
- template_body: template_body,
28
+ template_body: template_body(template),
18
29
  on_failure: 'DELETE',
19
30
  parameters: transform_parameters(parameters),
20
31
  capabilities: ['CAPABILITY_IAM'])
21
32
  wait_for_stack(stack_name, :create)
22
33
  end
23
34
 
24
- def update_stack(stack_name, template_body, parameters, parent_stack_name = nil)
25
- merge_output_parameters(parent_stack_name, template_body, parameters) if parent_stack_name
35
+ def update_stack(stack_name, template, parameters, parent_stack_name = nil)
36
+ merge_output_parameters(parent_stack_name, template, parameters) if parent_stack_name
26
37
  begin
27
38
  cloud_formation.update_stack(stack_name: stack_name,
28
- template_body: template_body,
39
+ template_body: template_body(template),
29
40
  parameters: transform_parameters(parameters),
30
41
  capabilities: ['CAPABILITY_IAM'])
31
42
  rescue Aws::CloudFormation::Errors::ValidationError => error
@@ -36,8 +47,8 @@ module Stacker
36
47
  end
37
48
  end
38
49
 
39
- def merge_output_parameters(stack_name, template_body, parameters)
40
- expected_parameters = JSON(template_body)['Parameters']
50
+ def merge_output_parameters(stack_name, template, parameters)
51
+ expected_parameters = JSON(template_body(template))['Parameters']
41
52
  get_stack_outputs(stack_name).each do |k, v|
42
53
  parameters[k.to_sym] = v if expected_parameters.has_key?(k.to_s)
43
54
  end
@@ -83,8 +94,8 @@ module Stacker
83
94
  cloud_formation.describe_stacks.stacks
84
95
  end
85
96
 
86
- def estimate_template_cost(template_body, parameters)
87
- cloud_formation.estimate_template_cost(:template_body => template_body, :parameters => transform_parameters(parameters))
97
+ def estimate_template_cost(template, parameters)
98
+ cloud_formation.estimate_template_cost(:template_body => template_body(template), :parameters => transform_parameters(parameters))
88
99
  end
89
100
 
90
101
  def get_stack_outputs(stack_name)
@@ -110,15 +121,9 @@ module Stacker
110
121
  @lazy_cloud_formation ||= Aws::CloudFormation::Client.new(region: ENV['AWS_DEFAULT_REGION'] || 'eu-west-1', credentials: @credentials)
111
122
  end
112
123
 
113
- def credentials
114
- @credentials
115
- end
116
-
117
- def credentials=(credentials)
118
- unless credentials == @credentials
119
- @lazy_cloud_formation = nil
120
- @credentials = credentials
121
- end
124
+ def template_body(template)
125
+ template = File.read(template) if File.exists?(template)
126
+ template.gsub(/(\s*\/\/.*$)|(".*")/) {|m| m[0] == '"' ? m : ''}
122
127
  end
123
128
 
124
129
  extend self
@@ -126,5 +131,13 @@ module Stacker
126
131
  end
127
132
 
128
133
  if $0 ==__FILE__ # placeholder for interactive testing
134
+ template = <<-EOL
135
+ bla bla //comment
136
+ bla "//no comment"
137
+ bla // still a "comment"
138
+ bla "some string" // comment
139
+ EOL
140
+
141
+ puts Stacker.template_body(template)
129
142
 
130
143
  end
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.18
4
+ version: 1.0.19
5
5
  platform: ruby
6
6
  authors:
7
7
  - Johannes Mueller