cloudformation-tool 1.5.21 → 1.5.23
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/cloud_formation_tool/cloud_formation/stack.rb +56 -11
- data/lib/cloud_formation_tool/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 87a66ee7654d39788f1151140758db55e1b4683e6961c396077ac7b8d39e70a0
|
|
4
|
+
data.tar.gz: 01d507f67d198d3802e81909393dba0aaadb479251d08d0331489c5c11f1fa00
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e39a2d3e1c8ec9e45f3065d7f17ebf15c261141ff49c109674cb5b5409005cb1ce64afea6f1a552eda58b448f03c74d62d6e3684c5896f3addb6b839cbe38835
|
|
7
|
+
data.tar.gz: 74e10ab19344214e8ffe8bbd237f50b7648426e48df5338f1694e581f0a72f7718706442cc085497781fda9c4c5734047452610666f579f3b20d9f71fcc36415
|
|
@@ -24,7 +24,7 @@ module CloudFormationTool
|
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
def region
|
|
27
|
-
@region
|
|
27
|
+
@region || super
|
|
28
28
|
end
|
|
29
29
|
|
|
30
30
|
def delete
|
|
@@ -86,6 +86,47 @@ module CloudFormationTool
|
|
|
86
86
|
end
|
|
87
87
|
end
|
|
88
88
|
|
|
89
|
+
def preview_changes(template, params = {})
|
|
90
|
+
@template = CloudFormation.parse(template).to_yaml(params)
|
|
91
|
+
url = upload(make_filename('yaml'), @template, gzip: false)
|
|
92
|
+
log "Previewing stack changes for '#{name}' from '#{template}' params #{params.inspect}"
|
|
93
|
+
valid_check do
|
|
94
|
+
resp = awscf.create_change_set({
|
|
95
|
+
stack_name: @name,
|
|
96
|
+
template_url: url,
|
|
97
|
+
capabilities: %w(CAPABILITY_IAM CAPABILITY_NAMED_IAM CAPABILITY_AUTO_EXPAND),
|
|
98
|
+
on_stack_failure: "DO_NOTHING", ##"ROLLBACK",
|
|
99
|
+
parameters: params.collect do |k,v|
|
|
100
|
+
{
|
|
101
|
+
parameter_key: k.to_s,
|
|
102
|
+
parameter_value: v.to_s,
|
|
103
|
+
use_previous_value: false,
|
|
104
|
+
}
|
|
105
|
+
end,
|
|
106
|
+
change_set_name: "preview-#{@name}-dryrun"
|
|
107
|
+
})
|
|
108
|
+
change_set_id = resp.id
|
|
109
|
+
loop do
|
|
110
|
+
resp = awscf.describe_change_set({change_set_name: change_set_id })
|
|
111
|
+
break unless %w( CREATE_PENDING CREATE_IN_PROGRESS ).include? resp.status
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
puts "Update preview for '#{name}':"
|
|
115
|
+
puts "Status: #{resp.execution_status} | #{resp.status} | #{resp.status_reason}"
|
|
116
|
+
puts "---"
|
|
117
|
+
puts "Resource Changes:"
|
|
118
|
+
resp.changes.each do |change|
|
|
119
|
+
puts format_resource(change.resource_change, %w(
|
|
120
|
+
resource_type:40
|
|
121
|
+
logical_resource_id:42
|
|
122
|
+
action
|
|
123
|
+
)).join(" ") + " => " + change.resource_change.details.collect { |d| "#{d.evaluation}:#{d.target}" }.join(", ")
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
awscf.delete_change_set({ change_set_name: change_set_id })
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
|
|
89
130
|
def stack_id
|
|
90
131
|
@stack_id ||= awscf.describe_stacks(stack_name: @name).stacks.first.stack_id
|
|
91
132
|
end
|
|
@@ -198,19 +239,11 @@ module CloudFormationTool
|
|
|
198
239
|
until done
|
|
199
240
|
reverse_each do |ev|
|
|
200
241
|
next if @seenev.add?(ev.event_id).nil?
|
|
201
|
-
text = "#{ev.timestamp.strftime "%Y-%m-%d %H:%M:%S"}| " + %w(
|
|
242
|
+
text = "#{ev.timestamp.strftime "%Y-%m-%d %H:%M:%S"}| " + format_resource(ev, %w(
|
|
202
243
|
resource_type:40
|
|
203
244
|
logical_resource_id:42
|
|
204
245
|
resource_status
|
|
205
|
-
).
|
|
206
|
-
(name,size) = field.split(":")
|
|
207
|
-
size ||= 1
|
|
208
|
-
(if name == 'logical_resource_id' and ev.stack_name != self.name
|
|
209
|
-
logical_nested_stack_name(ev.stack_name) + "|"
|
|
210
|
-
else
|
|
211
|
-
''
|
|
212
|
-
end + ev.send(name.to_sym)).ljust(size.to_i, ' ')
|
|
213
|
-
}.join(" ")
|
|
246
|
+
)).join(" ")
|
|
214
247
|
text += " " + ev.resource_status_reason if ev.resource_status =~ /_FAILED/
|
|
215
248
|
if start_time.nil? or start_time < ev.timestamp
|
|
216
249
|
puts text
|
|
@@ -225,6 +258,18 @@ module CloudFormationTool
|
|
|
225
258
|
end
|
|
226
259
|
end
|
|
227
260
|
|
|
261
|
+
def format_resource(res, columns)
|
|
262
|
+
columns.collect { |field|
|
|
263
|
+
(name,size) = field.split(":")
|
|
264
|
+
size ||= 1
|
|
265
|
+
(if name == 'logical_resource_id' and res.respond_to?(:stack_name) and res.stack_name != self.name
|
|
266
|
+
logical_nested_stack_name(res.stack_name) + "|"
|
|
267
|
+
else
|
|
268
|
+
''
|
|
269
|
+
end + res.send(name.to_sym)).ljust(size.to_i, ' ')
|
|
270
|
+
}
|
|
271
|
+
end
|
|
272
|
+
|
|
228
273
|
def logical_nested_stack_name(phys_name)
|
|
229
274
|
@nested_stacks[phys_name] || 'unknown'
|
|
230
275
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: cloudformation-tool
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.5.
|
|
4
|
+
version: 1.5.23
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Oded Arbel
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2025-
|
|
11
|
+
date: 2025-12-10 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: base64
|