autostacker24 1.0.18 → 1.0.19

Sign up to get free protection for your applications and to get access to all the features.
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