sparkle_formation 3.0.26 → 3.0.28
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 +5 -5
- data/CHANGELOG.md +6 -0
- data/lib/sparkle_formation/composition.rb +17 -17
- data/lib/sparkle_formation/error.rb +2 -5
- data/lib/sparkle_formation/function_struct.rb +27 -31
- data/lib/sparkle_formation/provider/aws.rb +32 -31
- data/lib/sparkle_formation/provider/azure.rb +18 -19
- data/lib/sparkle_formation/provider/google.rb +20 -22
- data/lib/sparkle_formation/provider/heat.rb +17 -17
- data/lib/sparkle_formation/provider/terraform.rb +14 -15
- data/lib/sparkle_formation/provider.rb +0 -2
- data/lib/sparkle_formation/resources/aws.rb +129 -149
- data/lib/sparkle_formation/resources/aws_resources.json +9208 -5542
- data/lib/sparkle_formation/resources/azure.rb +2 -5
- data/lib/sparkle_formation/resources/azure_resources.json +12367 -2901
- data/lib/sparkle_formation/resources/google.rb +1 -4
- data/lib/sparkle_formation/resources/heat.rb +0 -4
- data/lib/sparkle_formation/resources/heat_resources.json +2616 -2062
- data/lib/sparkle_formation/resources/rackspace.rb +0 -4
- data/lib/sparkle_formation/resources/terraform.rb +2 -6
- data/lib/sparkle_formation/resources.rb +20 -24
- data/lib/sparkle_formation/sparkle.rb +56 -66
- data/lib/sparkle_formation/sparkle_attribute/aws.rb +61 -34
- data/lib/sparkle_formation/sparkle_attribute/azure.rb +12 -8
- data/lib/sparkle_formation/sparkle_attribute/google.rb +18 -15
- data/lib/sparkle_formation/sparkle_attribute/heat.rb +22 -7
- data/lib/sparkle_formation/sparkle_attribute/rackspace.rb +0 -2
- data/lib/sparkle_formation/sparkle_attribute/terraform.rb +11 -5
- data/lib/sparkle_formation/sparkle_attribute.rb +13 -7
- data/lib/sparkle_formation/sparkle_collection/rainbow.rb +5 -7
- data/lib/sparkle_formation/sparkle_collection.rb +13 -15
- data/lib/sparkle_formation/sparkle_formation.rb +116 -112
- data/lib/sparkle_formation/sparkle_struct.rb +30 -24
- data/lib/sparkle_formation/translation/heat.rb +57 -58
- data/lib/sparkle_formation/translation/rackspace.rb +48 -49
- data/lib/sparkle_formation/translation.rb +34 -37
- data/lib/sparkle_formation/utils.rb +6 -13
- data/lib/sparkle_formation/version.rb +1 -1
- data/sparkle_formation.gemspec +1 -1
- metadata +9 -9
@@ -16,13 +16,14 @@ class SparkleFormation
|
|
16
16
|
# @option options [String] :delimiter value used for joining items. Defaults to ''
|
17
17
|
# @return [Hash]
|
18
18
|
def _cf_join(*args)
|
19
|
-
options = args.detect{|i| i.is_a?(Hash) && i[:options]} || {:options => {}}
|
19
|
+
options = args.detect { |i| i.is_a?(Hash) && i[:options] } || {:options => {}}
|
20
20
|
args.delete(options)
|
21
|
-
unless
|
21
|
+
unless args.size == 1
|
22
22
|
args = [args]
|
23
23
|
end
|
24
24
|
{'Fn::Join' => [options[:options][:delimiter] || '', *args]}
|
25
25
|
end
|
26
|
+
|
26
27
|
alias_method :join!, :_cf_join
|
27
28
|
|
28
29
|
# Split generator
|
@@ -35,6 +36,7 @@ class SparkleFormation
|
|
35
36
|
__t_stringish(delimiter) unless delimiter.is_a?(Hash)
|
36
37
|
{'Fn::Split' => [delimiter, string]}
|
37
38
|
end
|
39
|
+
|
38
40
|
alias_method :split!, :_cf_split
|
39
41
|
|
40
42
|
# Sub generator
|
@@ -43,9 +45,14 @@ class SparkleFormation
|
|
43
45
|
# @param variables [Hash] key value mappings for substitution
|
44
46
|
# @return [Hash]
|
45
47
|
def _cf_sub(string, variables = nil)
|
46
|
-
|
47
|
-
|
48
|
+
if variables.nil?
|
49
|
+
{'Fn::Sub' => string}
|
50
|
+
else
|
51
|
+
__t_hashish(variables)
|
52
|
+
{'Fn::Sub' => [string, variables]}
|
53
|
+
end
|
48
54
|
end
|
55
|
+
|
49
56
|
alias_method :_sub, :_cf_sub
|
50
57
|
alias_method :sub!, :_cf_sub
|
51
58
|
|
@@ -58,6 +65,7 @@ class SparkleFormation
|
|
58
65
|
__t_stringish(thing)
|
59
66
|
{'Ref' => __attribute_key(thing)}
|
60
67
|
end
|
68
|
+
|
61
69
|
alias_method :_ref, :_cf_ref
|
62
70
|
alias_method :ref!, :_cf_ref
|
63
71
|
|
@@ -69,6 +77,7 @@ class SparkleFormation
|
|
69
77
|
__t_stringish(thing) unless thing.is_a?(Hash)
|
70
78
|
{'Fn::ImportValue' => __attribute_key(thing)}
|
71
79
|
end
|
80
|
+
|
72
81
|
alias_method :_import_value, :_cf_value_import
|
73
82
|
alias_method :import_value!, :_cf_value_import
|
74
83
|
|
@@ -81,18 +90,19 @@ class SparkleFormation
|
|
81
90
|
def _cf_map(thing, key, *suffix)
|
82
91
|
__t_stringish(thing)
|
83
92
|
suffix = suffix.map do |item|
|
84
|
-
if
|
93
|
+
if item.is_a?(Symbol)
|
85
94
|
_process_key(item, :force)
|
86
95
|
else
|
87
96
|
item
|
88
97
|
end
|
89
98
|
end
|
90
99
|
thing = __attribute_key(thing)
|
91
|
-
if
|
100
|
+
if key.is_a?(Symbol)
|
92
101
|
key = ref!(key)
|
93
102
|
end
|
94
103
|
{'Fn::FindInMap' => [thing, key, *suffix]}
|
95
104
|
end
|
105
|
+
|
96
106
|
alias_method :_cf_find_in_map, :_cf_map
|
97
107
|
alias_method :find_in_map!, :_cf_map
|
98
108
|
alias_method :map!, :_cf_map
|
@@ -107,7 +117,7 @@ class SparkleFormation
|
|
107
117
|
args = args.slice(1, args.size)
|
108
118
|
__t_stringish(r_name)
|
109
119
|
args = args.map do |thing|
|
110
|
-
if
|
120
|
+
if thing.is_a?(Symbol)
|
111
121
|
_process_key(thing, :force)
|
112
122
|
else
|
113
123
|
thing
|
@@ -115,6 +125,7 @@ class SparkleFormation
|
|
115
125
|
end
|
116
126
|
{'Fn::GetAtt' => [__attribute_key(r_name), *args]}
|
117
127
|
end
|
128
|
+
|
118
129
|
alias_method :_cf_get_att, :_cf_attr
|
119
130
|
alias_method :get_att!, :_cf_attr
|
120
131
|
alias_method :attr!, :_cf_attr
|
@@ -126,13 +137,14 @@ class SparkleFormation
|
|
126
137
|
def _cf_base64(arg)
|
127
138
|
{'Fn::Base64' => arg}
|
128
139
|
end
|
140
|
+
|
129
141
|
alias_method :base64!, :_cf_base64
|
130
142
|
|
131
143
|
# Fn::GetAZs generator
|
132
144
|
#
|
133
145
|
# @param region [String, Symbol] String will pass through. Symbol will be converted to ref
|
134
146
|
# @return [Hash]
|
135
|
-
def _cf_get_azs(region=nil)
|
147
|
+
def _cf_get_azs(region = nil)
|
136
148
|
region = case region
|
137
149
|
when Symbol
|
138
150
|
_cf_ref(region)
|
@@ -143,6 +155,7 @@ class SparkleFormation
|
|
143
155
|
end
|
144
156
|
{'Fn::GetAZs' => region}
|
145
157
|
end
|
158
|
+
|
146
159
|
alias_method :get_azs!, :_cf_get_azs
|
147
160
|
alias_method :azs!, :_cf_get_azs
|
148
161
|
|
@@ -156,6 +169,7 @@ class SparkleFormation
|
|
156
169
|
item = _cf_ref(item) if item.is_a?(Symbol)
|
157
170
|
{'Fn::Select' => [index, item]}
|
158
171
|
end
|
172
|
+
|
159
173
|
alias_method :select!, :_cf_select
|
160
174
|
|
161
175
|
# Condition generator
|
@@ -166,6 +180,7 @@ class SparkleFormation
|
|
166
180
|
__t_stringish(name)
|
167
181
|
{'Condition' => __attribute_key(name)}
|
168
182
|
end
|
183
|
+
|
169
184
|
alias_method :condition!, :_condition
|
170
185
|
|
171
186
|
# Condition setter
|
@@ -177,6 +192,7 @@ class SparkleFormation
|
|
177
192
|
def _on_condition(name)
|
178
193
|
_set(*_condition(name).to_a.flatten)
|
179
194
|
end
|
195
|
+
|
180
196
|
alias_method :on_condition!, :_on_condition
|
181
197
|
|
182
198
|
# Fn::If generator
|
@@ -188,6 +204,7 @@ class SparkleFormation
|
|
188
204
|
def _if(cond, true_value, false_value)
|
189
205
|
{'Fn::If' => _array(__attribute_key(cond), true_value, false_value)}
|
190
206
|
end
|
207
|
+
|
191
208
|
alias_method :if!, :_if
|
192
209
|
|
193
210
|
# Fn::And generator
|
@@ -199,16 +216,17 @@ class SparkleFormation
|
|
199
216
|
def _and(*args)
|
200
217
|
{
|
201
218
|
'Fn::And' => _array(
|
202
|
-
*args.map{|v|
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
)
|
219
|
+
*args.map { |v|
|
220
|
+
if v.is_a?(Symbol) || v.is_a?(String)
|
221
|
+
_condition(v)
|
222
|
+
else
|
223
|
+
v
|
224
|
+
end
|
225
|
+
}
|
226
|
+
),
|
210
227
|
}
|
211
228
|
end
|
229
|
+
|
212
230
|
alias_method :and!, :_and
|
213
231
|
|
214
232
|
# Fn::Equals generator
|
@@ -219,6 +237,7 @@ class SparkleFormation
|
|
219
237
|
def _equals(v1, v2)
|
220
238
|
{'Fn::Equals' => _array(v1, v2)}
|
221
239
|
end
|
240
|
+
|
222
241
|
alias_method :equals!, :_equals
|
223
242
|
|
224
243
|
# Fn::Not generator
|
@@ -226,13 +245,14 @@ class SparkleFormation
|
|
226
245
|
# @param arg [Object]
|
227
246
|
# @return [Hash]
|
228
247
|
def _not(arg)
|
229
|
-
if
|
248
|
+
if arg.is_a?(String) || arg.is_a?(Symbol)
|
230
249
|
arg = _condition(arg)
|
231
250
|
else
|
232
251
|
arg = _array(arg).first
|
233
252
|
end
|
234
253
|
{'Fn::Not' => [arg]}
|
235
254
|
end
|
255
|
+
|
236
256
|
alias_method :not!, :_not
|
237
257
|
|
238
258
|
# Fn::Or generator
|
@@ -243,16 +263,17 @@ class SparkleFormation
|
|
243
263
|
def _or(*args)
|
244
264
|
{
|
245
265
|
'Fn::Or' => _array(
|
246
|
-
*args.map{|v|
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
)
|
266
|
+
*args.map { |v|
|
267
|
+
if v.is_a?(Symbol) || v.is_a?(String)
|
268
|
+
_condition(v)
|
269
|
+
else
|
270
|
+
v
|
271
|
+
end
|
272
|
+
}
|
273
|
+
),
|
254
274
|
}
|
255
275
|
end
|
276
|
+
|
256
277
|
alias_method :or!, :_or
|
257
278
|
|
258
279
|
# No value generator
|
@@ -261,6 +282,7 @@ class SparkleFormation
|
|
261
282
|
def _no_value
|
262
283
|
_ref('AWS::NoValue')
|
263
284
|
end
|
285
|
+
|
264
286
|
alias_method :no_value!, :_no_value
|
265
287
|
|
266
288
|
# Region generator
|
@@ -269,6 +291,7 @@ class SparkleFormation
|
|
269
291
|
def _region
|
270
292
|
_ref('AWS::Region')
|
271
293
|
end
|
294
|
+
|
272
295
|
alias_method :region!, :_region
|
273
296
|
|
274
297
|
# Notification ARNs generator
|
@@ -277,6 +300,7 @@ class SparkleFormation
|
|
277
300
|
def _notification_arns
|
278
301
|
_ref('AWS::NotificationARNs')
|
279
302
|
end
|
303
|
+
|
280
304
|
alias_method :notification_arns!, :_notification_arns
|
281
305
|
|
282
306
|
# Account ID generator
|
@@ -285,6 +309,7 @@ class SparkleFormation
|
|
285
309
|
def _account_id
|
286
310
|
_ref('AWS::AccountId')
|
287
311
|
end
|
312
|
+
|
288
313
|
alias_method :account_id!, :_account_id
|
289
314
|
|
290
315
|
# Stack ID generator
|
@@ -293,6 +318,7 @@ class SparkleFormation
|
|
293
318
|
def _stack_id
|
294
319
|
_ref('AWS::StackId')
|
295
320
|
end
|
321
|
+
|
296
322
|
alias_method :stack_id!, :_stack_id
|
297
323
|
|
298
324
|
# Stack name generator
|
@@ -301,6 +327,7 @@ class SparkleFormation
|
|
301
327
|
def _stack_name
|
302
328
|
_ref('AWS::StackName')
|
303
329
|
end
|
330
|
+
|
304
331
|
alias_method :stack_name!, :_stack_name
|
305
332
|
|
306
333
|
# Resource dependency generator
|
@@ -313,8 +340,9 @@ class SparkleFormation
|
|
313
340
|
# @return [Array<String>]
|
314
341
|
# @note this will directly modify the struct at its current context to inject depends on structure
|
315
342
|
def _depends_on(*args)
|
316
|
-
_set('DependsOn', [args].flatten.compact.map{|s| __attribute_key(s)})
|
343
|
+
_set('DependsOn', [args].flatten.compact.map { |s| __attribute_key(s) })
|
317
344
|
end
|
345
|
+
|
318
346
|
alias_method :depends_on!, :_depends_on
|
319
347
|
|
320
348
|
# Reference output value from nested stack
|
@@ -324,15 +352,16 @@ class SparkleFormation
|
|
324
352
|
def _stack_output(stack_name, output_name)
|
325
353
|
_cf_attr(_process_key(stack_name), "Outputs.#{__attribute_key(output_name)}")
|
326
354
|
end
|
355
|
+
|
327
356
|
alias_method :stack_output!, :_stack_output
|
328
357
|
|
329
358
|
# @return [TrueClass, FalseClass] resource can be tagged
|
330
359
|
def taggable?
|
331
|
-
if
|
360
|
+
if self[:type]
|
332
361
|
resource = _self._provider._resources.lookup(self[:type].gsub('::', '_').downcase)
|
333
362
|
resource && resource[:properties].include?('Tags')
|
334
363
|
else
|
335
|
-
if
|
364
|
+
if _parent
|
336
365
|
_parent.taggable?
|
337
366
|
end
|
338
367
|
end
|
@@ -345,14 +374,12 @@ class SparkleFormation
|
|
345
374
|
def _tags(hash)
|
346
375
|
__t_hashish(hash)
|
347
376
|
_set('Tags',
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
)
|
377
|
+
hash.map { |k, v|
|
378
|
+
{'Key' => __attribute_key(k), 'Value' => v}
|
379
|
+
})
|
352
380
|
end
|
353
|
-
alias_method :tags!, :_tags
|
354
381
|
|
382
|
+
alias_method :tags!, :_tags
|
355
383
|
end
|
356
|
-
|
357
384
|
end
|
358
385
|
end
|
@@ -14,7 +14,7 @@ class SparkleFormation
|
|
14
14
|
# @param hash [Hash] template dump
|
15
15
|
# @return [Hash]
|
16
16
|
def self.resources_formatter(hash)
|
17
|
-
if
|
17
|
+
if hash.key?('resources') && !hash['resources'].is_a?(Array)
|
18
18
|
resources = hash.delete('resources')
|
19
19
|
hash['resources'] = Array.new
|
20
20
|
resources.each do |r_name, r_contents|
|
@@ -34,11 +34,12 @@ class SparkleFormation
|
|
34
34
|
klass.class_eval do
|
35
35
|
def _azure_dump
|
36
36
|
result = _attribute_struct_dump
|
37
|
-
if
|
37
|
+
if _parent.nil?
|
38
38
|
result = ::SparkleFormation::SparkleAttribute::Azure.resources_formatter(result)
|
39
39
|
end
|
40
40
|
result
|
41
41
|
end
|
42
|
+
|
42
43
|
alias_method :_attribute_struct_dump, :_dump
|
43
44
|
alias_method :_dump, :_azure_dump
|
44
45
|
alias_method :dump!, :_azure_dump
|
@@ -73,7 +74,7 @@ class SparkleFormation
|
|
73
74
|
'providers',
|
74
75
|
'reference',
|
75
76
|
'resourceGroup',
|
76
|
-
'subscription'
|
77
|
+
'subscription',
|
77
78
|
]
|
78
79
|
|
79
80
|
# NOTE: Alias implementation disabled due to Ruby 2.3 __callee__ bug
|
@@ -110,6 +111,7 @@ class SparkleFormation
|
|
110
111
|
x._fn_context = self
|
111
112
|
x
|
112
113
|
end
|
114
|
+
|
113
115
|
alias_method :variables!, :_variables
|
114
116
|
|
115
117
|
# @overload _resource_id(resource_name)
|
@@ -119,14 +121,14 @@ class SparkleFormation
|
|
119
121
|
# @param [String, Symbol] name of resource
|
120
122
|
# @return [FunctionStruct]
|
121
123
|
def _resource_id(*args)
|
122
|
-
if
|
124
|
+
if args.size > 1
|
123
125
|
::SparkleFormation::FunctionStruct.new('resourceId', *args)
|
124
126
|
else
|
125
127
|
r_name = args.first
|
126
128
|
resource = _root.resources.set!(r_name)
|
127
|
-
if
|
129
|
+
if resource.nil?
|
128
130
|
::Kernel.raise ::SparkleFormation::Error::NotFound::Resource.new(:name => r_name)
|
129
|
-
elsif
|
131
|
+
elsif resource.type.nil?
|
130
132
|
::Kernel.raise ::SparkleFormation::Error::InvalidResource.new(
|
131
133
|
"Resource `#{r_name}` provides no type information."
|
132
134
|
)
|
@@ -139,6 +141,7 @@ class SparkleFormation
|
|
139
141
|
end
|
140
142
|
end
|
141
143
|
end
|
144
|
+
|
142
145
|
alias_method :resource_id!, :_resource_id
|
143
146
|
|
144
147
|
# Resource dependency generator
|
@@ -155,7 +158,7 @@ class SparkleFormation
|
|
155
158
|
case item
|
156
159
|
when ::Symbol
|
157
160
|
resource = _root.resources.set!(item)
|
158
|
-
if
|
161
|
+
if resource.nil?
|
159
162
|
::Kernel.raise ::SparkleFormation::Error::NotFound::Resource.new(:name => item)
|
160
163
|
else
|
161
164
|
[resource.type, resource.resource_name!].join('/')
|
@@ -166,6 +169,7 @@ class SparkleFormation
|
|
166
169
|
end
|
167
170
|
set!(:depends_on, args)
|
168
171
|
end
|
172
|
+
|
169
173
|
alias_method :depends_on!, :_depends_on
|
170
174
|
|
171
175
|
# Reference output value from nested stack
|
@@ -180,8 +184,8 @@ class SparkleFormation
|
|
180
184
|
o_root.outputs.set!(output_name).value
|
181
185
|
o_root
|
182
186
|
end
|
183
|
-
alias_method :stack_output!, :_stack_output
|
184
187
|
|
188
|
+
alias_method :stack_output!, :_stack_output
|
185
189
|
end
|
186
190
|
end
|
187
191
|
end
|
@@ -6,7 +6,6 @@ class SparkleFormation
|
|
6
6
|
|
7
7
|
# Google specific helper implementations
|
8
8
|
module Google
|
9
|
-
|
10
9
|
CHARACTER_COLLECTION = ('a'..'z').to_a
|
11
10
|
|
12
11
|
def self.included(klass)
|
@@ -15,9 +14,9 @@ class SparkleFormation
|
|
15
14
|
klass.class_eval do
|
16
15
|
def _google_dump
|
17
16
|
result = _non_google_attribute_struct_dump
|
18
|
-
if
|
17
|
+
if _parent.nil?
|
19
18
|
sparkle_root = {}
|
20
|
-
if
|
19
|
+
if result.key?('resources') && result['resources'].is_a?(Hash)
|
21
20
|
resources = result.delete('resources') || {}
|
22
21
|
sparkle_root = (resources.delete(_self.name) || {}).fetch('properties', {})
|
23
22
|
result['resources'] = resources.map do |r_name, r_content|
|
@@ -27,21 +26,22 @@ class SparkleFormation
|
|
27
26
|
result['outputs'] = outputs.map do |o_name, o_content|
|
28
27
|
o_content.merge('name' => o_name)
|
29
28
|
end
|
30
|
-
if
|
29
|
+
if _self.parent.nil?
|
31
30
|
result = {
|
32
31
|
'resources' => [{
|
33
32
|
'name' => _self.name,
|
34
33
|
'type' => _self.stack_resource_type,
|
35
34
|
'properties' => {
|
36
|
-
'stack' => result
|
37
|
-
}.merge(sparkle_root)
|
38
|
-
}]
|
35
|
+
'stack' => result,
|
36
|
+
}.merge(sparkle_root),
|
37
|
+
}],
|
39
38
|
}
|
40
39
|
end
|
41
40
|
end
|
42
41
|
end
|
43
42
|
result
|
44
43
|
end
|
44
|
+
|
45
45
|
alias_method :_non_google_attribute_struct_dump, :_dump
|
46
46
|
alias_method :_dump, :_google_dump
|
47
47
|
alias_method :dump!, :_google_dump
|
@@ -56,17 +56,16 @@ class SparkleFormation
|
|
56
56
|
# @see SparkleFormation::SparkleAttribute#dynamic!
|
57
57
|
# @note generate unique names using the `:sparkle_unique` argument
|
58
58
|
def _google_dynamic!(name, *args, &block)
|
59
|
-
if
|
59
|
+
if args.delete(:sparkle_unique)
|
60
60
|
seed = Zlib.crc32(_self.root_path.map(&:name).join('-'))
|
61
61
|
gen = Random.new(seed)
|
62
62
|
suffix = Array.new(10) do
|
63
63
|
CHARACTER_COLLECTION.at(
|
64
|
-
gen.rand(CHARACTER_COLLECTION.size
|
65
|
-
)
|
64
|
+
gen.rand(CHARACTER_COLLECTION.size)
|
66
65
|
)
|
67
66
|
end.join
|
68
|
-
config_hash = args.detect{|a| a.is_a?(Hash)}
|
69
|
-
unless
|
67
|
+
config_hash = args.detect { |a| a.is_a?(Hash) }
|
68
|
+
unless config_hash
|
70
69
|
config_hash = {}
|
71
70
|
args.push(config_hash)
|
72
71
|
end
|
@@ -83,12 +82,13 @@ class SparkleFormation
|
|
83
82
|
# @return [SparkleFormation::GoogleStruct]
|
84
83
|
def _ref(r_name)
|
85
84
|
__t_stringish(r_name)
|
86
|
-
if
|
85
|
+
if _root.resources.set!(r_name).nil?
|
87
86
|
::Kernel.raise ::SparkleFormation::Error::NotFound::Resource.new(:name => r_name)
|
88
87
|
else
|
89
88
|
::SparkleFormation::GoogleStruct.new('ref').set!(__attribute_key(r_name))
|
90
89
|
end
|
91
90
|
end
|
91
|
+
|
92
92
|
alias_method :ref!, :_ref
|
93
93
|
|
94
94
|
# Jinja function string wrapper
|
@@ -97,6 +97,7 @@ class SparkleFormation
|
|
97
97
|
def _jinja
|
98
98
|
::SparkleFormation::JinjaExpressionStruct.new
|
99
99
|
end
|
100
|
+
|
100
101
|
alias_method :jinja!, :_jinja
|
101
102
|
alias_method :fn!, :_jinja
|
102
103
|
|
@@ -108,6 +109,7 @@ class SparkleFormation
|
|
108
109
|
__t_stringish(e_name)
|
109
110
|
_jinja.env[__attribute_key(e_name)]
|
110
111
|
end
|
112
|
+
|
111
113
|
alias_method :env!, :_env
|
112
114
|
|
113
115
|
# Access a property value supplied to template
|
@@ -119,6 +121,7 @@ class SparkleFormation
|
|
119
121
|
__t_stringish(p_name)
|
120
122
|
_jinja.properties[__attribute_key(p_name)]
|
121
123
|
end
|
124
|
+
|
122
125
|
alias_method :property!, :_property
|
123
126
|
alias_method :properties!, :_property
|
124
127
|
|
@@ -129,6 +132,7 @@ class SparkleFormation
|
|
129
132
|
def _statement(line)
|
130
133
|
::SparkleFormation::JinjaStatementStruct.new(line)
|
131
134
|
end
|
135
|
+
|
132
136
|
alias_method :statement!, :_statement
|
133
137
|
|
134
138
|
# Reference output value from nested stack
|
@@ -141,9 +145,8 @@ class SparkleFormation
|
|
141
145
|
__t_stringish(output_name)
|
142
146
|
_ref(stack_name)._set(output_name)
|
143
147
|
end
|
144
|
-
alias_method :stack_output!, :_stack_output
|
145
148
|
|
149
|
+
alias_method :stack_output!, :_stack_output
|
146
150
|
end
|
147
|
-
|
148
151
|
end
|
149
152
|
end
|
@@ -10,7 +10,7 @@ class SparkleFormation
|
|
10
10
|
|
11
11
|
# Set customized struct behavior
|
12
12
|
def self.included(klass)
|
13
|
-
if
|
13
|
+
if klass.const_defined?(:CAMEL_KEYS)
|
14
14
|
klass.send(:remove_const, :CAMEL_KEYS)
|
15
15
|
end
|
16
16
|
klass.const_set(:CAMEL_KEYS, false)
|
@@ -28,6 +28,7 @@ class SparkleFormation
|
|
28
28
|
end
|
29
29
|
{'get_attr' => args}
|
30
30
|
end
|
31
|
+
|
31
32
|
alias_method :_attr, :_get_attr
|
32
33
|
alias_method :attr!, :_get_attr
|
33
34
|
|
@@ -39,13 +40,14 @@ class SparkleFormation
|
|
39
40
|
# @option options [String] :delimiter value used for joining items. Defaults to ''
|
40
41
|
# @return [Hash]
|
41
42
|
def _list_join(*args)
|
42
|
-
options = args.detect{|i| i.is_a?(::Hash) && i[:options]} || {:options => {}}
|
43
|
+
options = args.detect { |i| i.is_a?(::Hash) && i[:options] } || {:options => {}}
|
43
44
|
args.delete(options)
|
44
|
-
unless
|
45
|
+
unless args.size == 1
|
45
46
|
args = [args]
|
46
47
|
end
|
47
48
|
{'list_join' => [options[:options][:delimiter] || '', *args]}
|
48
49
|
end
|
50
|
+
|
49
51
|
alias_method :_join, :_list_join
|
50
52
|
alias_method :join!, :_list_join
|
51
53
|
|
@@ -57,6 +59,7 @@ class SparkleFormation
|
|
57
59
|
__t_stringish(loc)
|
58
60
|
{'get_file' => loc}
|
59
61
|
end
|
62
|
+
|
60
63
|
alias_method :_file, :_get_file
|
61
64
|
alias_method :file!, :_get_file
|
62
65
|
|
@@ -76,6 +79,7 @@ class SparkleFormation
|
|
76
79
|
end
|
77
80
|
{'get_param' => args.size == 1 ? args.first : args}
|
78
81
|
end
|
82
|
+
|
79
83
|
alias_method :_param, :_get_param
|
80
84
|
alias_method :param!, :_get_param
|
81
85
|
|
@@ -87,6 +91,7 @@ class SparkleFormation
|
|
87
91
|
__t_stringish(r_name)
|
88
92
|
{'get_resource' => __attribute_key(r_name)}
|
89
93
|
end
|
94
|
+
|
90
95
|
alias_method :_resource, :_get_resource
|
91
96
|
alias_method :resource!, :_get_resource
|
92
97
|
|
@@ -94,10 +99,11 @@ class SparkleFormation
|
|
94
99
|
#
|
95
100
|
# @param value [String, Hash] thing to be hashed
|
96
101
|
# @param algorithm [String] algorithm to use (defaults to 'sha512')
|
97
|
-
def _digest(value, algorithm='sha512')
|
102
|
+
def _digest(value, algorithm = 'sha512')
|
98
103
|
__t_stringish(algorithm)
|
99
104
|
{'digest' => [algorithm, value]}
|
100
105
|
end
|
106
|
+
|
101
107
|
alias_method :digest!, :_digest
|
102
108
|
|
103
109
|
# resource_facade generator
|
@@ -108,6 +114,7 @@ class SparkleFormation
|
|
108
114
|
__t_stringish(type)
|
109
115
|
{'resource_facade' => type}
|
110
116
|
end
|
117
|
+
|
111
118
|
alias_method :_facade, :_resource_facade
|
112
119
|
alias_method :facade!, :_resource_facade
|
113
120
|
alias_method :resource_facade!, :_resource_facade
|
@@ -122,6 +129,7 @@ class SparkleFormation
|
|
122
129
|
__t_hashish(params)
|
123
130
|
{'str_replace' => {'template' => template, 'params' => params}}
|
124
131
|
end
|
132
|
+
|
125
133
|
alias_method :_replace, :_str_replace
|
126
134
|
alias_method :replace!, :_str_replace
|
127
135
|
|
@@ -131,10 +139,11 @@ class SparkleFormation
|
|
131
139
|
# @param string [Object]
|
132
140
|
# @param idx [Numeric]
|
133
141
|
# @return [Hash]
|
134
|
-
def _str_split(splitter, string, idx=nil)
|
142
|
+
def _str_split(splitter, string, idx = nil)
|
135
143
|
__t_stringish(splitter) unless splitter.is_a?(Hash)
|
136
144
|
{'str_split' => [splitter, string, idx].compact}
|
137
145
|
end
|
146
|
+
|
138
147
|
alias_method :_split, :_str_split
|
139
148
|
alias_method :split!, :_str_split
|
140
149
|
|
@@ -146,24 +155,28 @@ class SparkleFormation
|
|
146
155
|
def _map_merge(*args)
|
147
156
|
{'map_merge' => args}
|
148
157
|
end
|
158
|
+
|
149
159
|
alias_method :map_merge!, :_map_merge
|
150
160
|
|
151
161
|
# @return [Hash]
|
152
162
|
def _stack_id
|
153
163
|
_get_param('OS::stack_id')
|
154
164
|
end
|
165
|
+
|
155
166
|
alias_method :stack_id!, :_stack_id
|
156
167
|
|
157
168
|
# @return [Hash]
|
158
169
|
def _stack_name
|
159
170
|
_get_param('OS::stack_name')
|
160
171
|
end
|
172
|
+
|
161
173
|
alias_method :stack_name!, :_stack_name
|
162
174
|
|
163
175
|
# @return [Hash]
|
164
176
|
def _project_id
|
165
177
|
_get_param('OS::project_id')
|
166
178
|
end
|
179
|
+
|
167
180
|
alias_method :project_id!, :_project_id
|
168
181
|
|
169
182
|
# Resource dependency generator
|
@@ -176,8 +189,9 @@ class SparkleFormation
|
|
176
189
|
# @return [Array<String>]
|
177
190
|
# @note this will directly modify the struct at its current context to inject depends on structure
|
178
191
|
def _depends_on(*args)
|
179
|
-
_set('depends_on', [args].flatten.compact.map{|s| __attribute_key(s) })
|
192
|
+
_set('depends_on', [args].flatten.compact.map { |s| __attribute_key(s) })
|
180
193
|
end
|
194
|
+
|
181
195
|
alias_method :depends_on!, :_depends_on
|
182
196
|
|
183
197
|
# Reference output value from nested stack
|
@@ -191,9 +205,10 @@ class SparkleFormation
|
|
191
205
|
__attribute_key(output_name)
|
192
206
|
)
|
193
207
|
end
|
194
|
-
alias_method :stack_output!, :_stack_output
|
195
208
|
|
209
|
+
alias_method :stack_output!, :_stack_output
|
196
210
|
end
|
211
|
+
|
197
212
|
OpenStack = Heat
|
198
213
|
end
|
199
214
|
end
|