cfn-model 0.6.2 → 0.6.6

Sign up to get free protection for your applications and to get access to all the features.
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: []