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: 36ad8068b8a22556bbcfa227568544fe045f809e5d3fc32be33bd87682de8e44
4
- data.tar.gz: 067332f14d8ff714fcff7161871f1b4d7198efdfda05f5462c0e6558e8c2d587
3
+ metadata.gz: 696ba992da760c8627ace103dccdce05b2eeec0404cc568ed7086fc74b734a5f
4
+ data.tar.gz: 335d86d84e4f2be5249c954392f1bb889fe19fbbe20b48f81261abdc03f5c74f
5
5
  SHA512:
6
- metadata.gz: e28bedd978945aa74ad25947c792b4e851b4902165b7cee05bd8b0109ad73470b48cb374eca11106c56063ff0b5e1b50432e7d6a80d4a07cf03e4ed0d7076f38
7
- data.tar.gz: 46951dafa2d6927b240d23309dc25a7f26914ed9b15b5d59908517738fc3c1b5fbafd3a6cbc42d150e84895e1fb483556d9c0ebf8991d7c8a63c97a21602e4d0
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
@@ -14,13 +14,13 @@ mapping:
14
14
  required: yes
15
15
  Handler:
16
16
  type: any
17
- required: yes
17
+ required: no
18
18
  Role:
19
19
  type: any
20
20
  required: yes
21
21
  Runtime:
22
22
  type: any
23
- required: yes
23
+ required: no
24
24
  =:
25
25
  type: any
26
26
  =:
@@ -3,7 +3,7 @@
3
3
  class CfnModel
4
4
  class Transforms
5
5
  # Handle transformation of model elements performed by the
6
- # Serverless trasnform, see
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', -1, with_line_numbers),
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', -1, with_line_numbers),
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'] = serverlessrestapi_deployment with_line_numbers
267
+ cfn_hash['Resources']['ServerlessRestApiDeployment'] ||= serverlessrestapi_deployment line_number, with_line_numbers
263
268
 
264
269
  # ServerlessRestApiProdStage
265
- cfn_hash['Resources']['ServerlessRestApiProdStage'] = serverlessrestapi_stage with_line_numbers
270
+ cfn_hash['Resources']['ServerlessRestApiProdStage'] ||= serverlessrestapi_stage line_number, with_line_numbers
266
271
  end
267
272
 
268
- def serverlessrestapi_base(with_line_nos)
273
+ def serverlessrestapi_base(line_number, with_line_numbers)
269
274
  {
270
- 'Type' => format_resource_type('AWS::ApiGateway::RestApi', -1, with_line_nos),
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(with_line_nos)
302
+ def serverlessrestapi_deployment(line_number, with_line_numbers)
298
303
  {
299
- 'Type' => format_resource_type('AWS::ApiGateway::Deployment', -1, with_line_nos),
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(with_line_nos)
319
+ def serverlessrestapi_stage(line_number, with_line_numbers)
315
320
  {
316
- 'Type' => format_resource_type('AWS::ApiGateway::Stage', -1, with_line_nos),
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.2
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-04-21 00:00:00.000000000 Z
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.2
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.2
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: []