cfn-model 0.6.2 → 0.6.6
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 696ba992da760c8627ace103dccdce05b2eeec0404cc568ed7086fc74b734a5f
|
4
|
+
data.tar.gz: 335d86d84e4f2be5249c954392f1bb889fe19fbbe20b48f81261abdc03f5c74f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0fdc30f8d26a35eb6a91e2146cf37f5dc2ddd7ef3d7d0abba24010efcde2206d82cdede85fe3e0b3c53eccdfb8562126dc84d17b542b9304eb56919e0e6301e1
|
7
|
+
data.tar.gz: 4046b076c06c39f0a61b207921b8ce96ecfa519ff5955895bf0f29b5789b07347adebf2c2eb4c12b069672fd2a71ceef98ce87f3e0afb4214836038768bd388a
|
@@ -3,7 +3,7 @@
|
|
3
3
|
require_relative 'references'
|
4
4
|
|
5
5
|
class CfnModel
|
6
|
-
attr_reader :resources, :parameters, :line_numbers, :conditions, :globals, :mappings
|
6
|
+
attr_reader :resources, :parameters, :line_numbers, :conditions, :globals, :mappings, :element_types
|
7
7
|
|
8
8
|
##
|
9
9
|
# if you really want it, here it is - the raw Hash from YAML.load. you'll have to mess with structural nits of
|
@@ -19,6 +19,7 @@ class CfnModel
|
|
19
19
|
@mappings = {}
|
20
20
|
@raw_model = nil
|
21
21
|
@line_numbers = {}
|
22
|
+
@element_types = {}
|
22
23
|
end
|
23
24
|
|
24
25
|
##
|
@@ -156,6 +156,7 @@ class CfnParser
|
|
156
156
|
assign_fields_based_upon_properties resource_object, resource, cfn_model
|
157
157
|
|
158
158
|
cfn_model.resources[resource_name] = resource_object
|
159
|
+
cfn_model.element_types[resource_name] = "resource"
|
159
160
|
end
|
160
161
|
cfn_model
|
161
162
|
end
|
@@ -173,6 +174,7 @@ class CfnParser
|
|
173
174
|
|
174
175
|
cfn_model.resources[resource_name] = resource_object
|
175
176
|
cfn_model.line_numbers[resource_name] = resource['Type']['line']
|
177
|
+
cfn_model.element_types[resource_name] = "resource"
|
176
178
|
end
|
177
179
|
cfn_model
|
178
180
|
end
|
@@ -184,6 +186,7 @@ class CfnParser
|
|
184
186
|
parameter = Parameter.new
|
185
187
|
parameter.id = parameter_name
|
186
188
|
parameter.type = parameter_hash['Type']
|
189
|
+
parameter.logical_resource_id = parameter_name
|
187
190
|
|
188
191
|
parameter_hash.each do |property_name, property_value|
|
189
192
|
next if %w(Type).include? property_name
|
@@ -191,6 +194,8 @@ class CfnParser
|
|
191
194
|
end
|
192
195
|
|
193
196
|
cfn_model.parameters[parameter_name] = parameter
|
197
|
+
cfn_model.line_numbers[parameter_name] = parameter_hash['Type']['line']
|
198
|
+
cfn_model.element_types[parameter_name] = "parameter"
|
194
199
|
end
|
195
200
|
cfn_model
|
196
201
|
end
|
@@ -3,7 +3,7 @@
|
|
3
3
|
class CfnModel
|
4
4
|
class Transforms
|
5
5
|
# Handle transformation of model elements performed by the
|
6
|
-
# Serverless
|
6
|
+
# Serverless transform, see
|
7
7
|
# https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/transform-aws-serverless.html
|
8
8
|
class Serverless
|
9
9
|
def perform_transform(cfn_hash)
|
@@ -108,6 +108,8 @@ class CfnModel
|
|
108
108
|
def replace_serverless_function(cfn_hash, resource_name, with_line_numbers)
|
109
109
|
serverless_function = cfn_hash['Resources'][resource_name]
|
110
110
|
|
111
|
+
original_line_number = serverless_function['Type']['line']
|
112
|
+
|
111
113
|
lambda_fn_params = serverless_function_properties(cfn_hash,
|
112
114
|
serverless_function,
|
113
115
|
resource_name,
|
@@ -120,15 +122,17 @@ class CfnModel
|
|
120
122
|
role: lambda_fn_params[:role],
|
121
123
|
runtime: lambda_fn_params[:runtime],
|
122
124
|
reserved_concurrent_executions: lambda_fn_params[:reserved_concurrent_executions],
|
125
|
+
line_number: original_line_number,
|
123
126
|
with_line_numbers: lambda_fn_params[:with_line_numbers]
|
124
127
|
)
|
125
128
|
unless serverless_function['Properties']['Role']
|
126
129
|
cfn_hash['Resources'][resource_name + 'Role'] = function_role(serverless_function,
|
127
130
|
resource_name,
|
131
|
+
original_line_number,
|
128
132
|
with_line_numbers)
|
129
133
|
end
|
130
134
|
|
131
|
-
transform_function_events(cfn_hash, serverless_function, resource_name, with_line_numbers) if \
|
135
|
+
transform_function_events(cfn_hash, serverless_function, resource_name, original_line_number, with_line_numbers) if \
|
132
136
|
serverless_function['Properties']['Events']
|
133
137
|
|
134
138
|
# Handle passing along cfn-nag specific metadata. SAM itself does not support metadata during transformation.
|
@@ -156,9 +160,9 @@ class CfnModel
|
|
156
160
|
|
157
161
|
# Return the hash structure of the '<function_name>Role'
|
158
162
|
# AWS::IAM::Role resource as created by Serverless transform
|
159
|
-
def function_role(serverless_function, function_name, with_line_numbers)
|
163
|
+
def function_role(serverless_function, function_name, line_number, with_line_numbers)
|
160
164
|
fn_role = {
|
161
|
-
'Type' => format_resource_type('AWS::IAM::Role',
|
165
|
+
'Type' => format_resource_type('AWS::IAM::Role', line_number, with_line_numbers),
|
162
166
|
'Properties' => {
|
163
167
|
'ManagedPolicyArns' => function_role_managed_policies(serverless_function['Properties']),
|
164
168
|
'AssumeRolePolicyDocument' => lambda_service_can_assume_role
|
@@ -226,9 +230,10 @@ class CfnModel
|
|
226
230
|
role:,
|
227
231
|
runtime:,
|
228
232
|
reserved_concurrent_executions:,
|
233
|
+
line_number:,
|
229
234
|
with_line_numbers: false)
|
230
235
|
fn_resource = {
|
231
|
-
'Type' => format_resource_type('AWS::Lambda::Function',
|
236
|
+
'Type' => format_resource_type('AWS::Lambda::Function', line_number, with_line_numbers),
|
232
237
|
'Properties' => {
|
233
238
|
'Handler' => handler,
|
234
239
|
'Role' => role,
|
@@ -242,16 +247,16 @@ class CfnModel
|
|
242
247
|
|
243
248
|
# Return the Event structure of a AWS::Lambda::Function as created
|
244
249
|
# by Serverless transform
|
245
|
-
def transform_function_events(cfn_hash, serverless_function, function_name, with_line_numbers)
|
250
|
+
def transform_function_events(cfn_hash, serverless_function, function_name, line_number, with_line_numbers)
|
246
251
|
serverless_function['Properties']['Events'].each do |_, event|
|
247
|
-
serverlessrestapi_resources(cfn_hash, event, function_name, with_line_numbers) if \
|
252
|
+
serverlessrestapi_resources(cfn_hash, event, function_name, line_number, with_line_numbers) if \
|
248
253
|
matching_resource_type?(event['Type'], 'Api')
|
249
254
|
end
|
250
255
|
end
|
251
256
|
|
252
|
-
def serverlessrestapi_resources(cfn_hash, event, func_name, with_line_numbers)
|
257
|
+
def serverlessrestapi_resources(cfn_hash, event, func_name, line_number, with_line_numbers)
|
253
258
|
# ServerlessRestApi
|
254
|
-
cfn_hash['Resources']['ServerlessRestApi'] ||= serverlessrestapi_base with_line_numbers
|
259
|
+
cfn_hash['Resources']['ServerlessRestApi'] ||= serverlessrestapi_base line_number, with_line_numbers
|
255
260
|
add_serverlessrestapi_event(
|
256
261
|
cfn_hash['Resources']['ServerlessRestApi']['Properties']['Body']['paths'],
|
257
262
|
event,
|
@@ -259,15 +264,15 @@ class CfnModel
|
|
259
264
|
)
|
260
265
|
|
261
266
|
# ServerlessRestApiDeployment
|
262
|
-
cfn_hash['Resources']['ServerlessRestApiDeployment']
|
267
|
+
cfn_hash['Resources']['ServerlessRestApiDeployment'] ||= serverlessrestapi_deployment line_number, with_line_numbers
|
263
268
|
|
264
269
|
# ServerlessRestApiProdStage
|
265
|
-
cfn_hash['Resources']['ServerlessRestApiProdStage']
|
270
|
+
cfn_hash['Resources']['ServerlessRestApiProdStage'] ||= serverlessrestapi_stage line_number, with_line_numbers
|
266
271
|
end
|
267
272
|
|
268
|
-
def serverlessrestapi_base(
|
273
|
+
def serverlessrestapi_base(line_number, with_line_numbers)
|
269
274
|
{
|
270
|
-
'Type' => format_resource_type('AWS::ApiGateway::RestApi',
|
275
|
+
'Type' => format_resource_type('AWS::ApiGateway::RestApi', line_number, with_line_numbers),
|
271
276
|
'Properties' => {
|
272
277
|
'Body' => {
|
273
278
|
'info' => {
|
@@ -294,9 +299,9 @@ class CfnModel
|
|
294
299
|
}
|
295
300
|
end
|
296
301
|
|
297
|
-
def serverlessrestapi_deployment(
|
302
|
+
def serverlessrestapi_deployment(line_number, with_line_numbers)
|
298
303
|
{
|
299
|
-
'Type' => format_resource_type('AWS::ApiGateway::Deployment',
|
304
|
+
'Type' => format_resource_type('AWS::ApiGateway::Deployment', line_number, with_line_numbers),
|
300
305
|
'Properties' => {
|
301
306
|
'Description' => 'Generated by cfn-model',
|
302
307
|
'RestApiId' => { 'Ref' => 'ServerlessRestApi' },
|
@@ -311,9 +316,9 @@ class CfnModel
|
|
311
316
|
}
|
312
317
|
end
|
313
318
|
|
314
|
-
def serverlessrestapi_stage(
|
319
|
+
def serverlessrestapi_stage(line_number, with_line_numbers)
|
315
320
|
{
|
316
|
-
'Type' => format_resource_type('AWS::ApiGateway::Stage',
|
321
|
+
'Type' => format_resource_type('AWS::ApiGateway::Stage', line_number, with_line_numbers),
|
317
322
|
'Properties' => {
|
318
323
|
'DeploymentId' => { 'Ref' => 'ServerlessRestApiDeployment' },
|
319
324
|
'RestApiId' => { 'Ref' => 'ServerlessRestApi' },
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cfn-model
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Kascic
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-10-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -95,7 +95,7 @@ dependencies:
|
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '3'
|
97
97
|
description: An object model for CloudFormation templates
|
98
|
-
email:
|
98
|
+
email:
|
99
99
|
executables:
|
100
100
|
- cfn_parse
|
101
101
|
extensions: []
|
@@ -193,10 +193,10 @@ licenses:
|
|
193
193
|
metadata:
|
194
194
|
bug_tracker_uri: https://github.com/stelligent/cfn-model/issues
|
195
195
|
changelog_uri: https://github.com/stelligent/cfn-model/releases
|
196
|
-
documentation_uri: https://www.rubydoc.info/gems/cfn-model/0.6.
|
196
|
+
documentation_uri: https://www.rubydoc.info/gems/cfn-model/0.6.6
|
197
197
|
homepage_uri: https://github.com/stelligent/cfn-model
|
198
|
-
source_code_uri: https://github.com/stelligent/cfn-model/tree/v0.6.
|
199
|
-
post_install_message:
|
198
|
+
source_code_uri: https://github.com/stelligent/cfn-model/tree/v0.6.6
|
199
|
+
post_install_message:
|
200
200
|
rdoc_options: []
|
201
201
|
require_paths:
|
202
202
|
- lib
|
@@ -213,7 +213,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
213
213
|
version: '0'
|
214
214
|
requirements: []
|
215
215
|
rubygems_version: 3.1.2
|
216
|
-
signing_key:
|
216
|
+
signing_key:
|
217
217
|
specification_version: 4
|
218
218
|
summary: cfn-model
|
219
219
|
test_files: []
|