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.
- checksums.yaml +4 -4
- data/lib/autostacker24/stacker.rb +35 -22
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 69bc0d89a868d3567ee930a91d259a89ded9ee12
|
4
|
+
data.tar.gz: 940cd3e57bb08dd03b3efe3c1142f5867bc811ac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
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,
|
19
|
+
create_stack(stack_name, template, parameters, parent_stack_name)
|
9
20
|
else
|
10
|
-
update_stack(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,
|
15
|
-
merge_output_parameters(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,
|
25
|
-
merge_output_parameters(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,
|
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(
|
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
|
114
|
-
|
115
|
-
|
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
|