cfn-model 0.6.1 → 0.6.5

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: 8dc3a4591c1b5668be2ba0c45b49e84097b2537ed7fac5afc354d8b71621b942
4
- data.tar.gz: d1b22db490a9c5702d2dcfeaff014955eaed2bf2b988c9eea18651afa148aa34
3
+ metadata.gz: '0192739b7367787ee3b788d075ce2753c618bbf5962542f9612b0799c458c4ae'
4
+ data.tar.gz: 0cdec84887e934a1794ba04a97bf7dee42946d668e845573908d801306fc6dc6
5
5
  SHA512:
6
- metadata.gz: 5036a2c1135ba9a59f2a637d74ecd2898127640d03fc802e03e7a034f01df83d40050c54ba5f2e094c3bbce161544e76c346d96f73fcef6d9f4427ab728a7ccb
7
- data.tar.gz: c51fd070edfda12f59a8a75af1226ea3ec577b770b1dbaaaf3268887802d0c5853a8fadc2fc23a23d302d5bb0943d0b95fcc25459f66c7993b6e59ced6f07bf1
6
+ metadata.gz: 3bab8d35d13d44789d734cceba9289182a9673821d11d8b6e5db34c06d7a7af6ba25db9f5522ac5bfae7ae03d1b39ce79488dc56ba0a38c5d8afec978ab39ae2
7
+ data.tar.gz: 143f2f5c176f14c1c4c568e5de4be4baf6f289e256daf6197f30fa1310ce770144deeb889cc7b4292355051e802c05a0d30206b0e73ceb059d891e252e407c5c
@@ -184,6 +184,7 @@ class CfnParser
184
184
  parameter = Parameter.new
185
185
  parameter.id = parameter_name
186
186
  parameter.type = parameter_hash['Type']
187
+ parameter.logical_resource_id = parameter_name
187
188
 
188
189
  parameter_hash.each do |property_name, property_value|
189
190
  next if %w(Type).include? property_name
@@ -191,6 +192,7 @@ class CfnParser
191
192
  end
192
193
 
193
194
  cfn_model.parameters[parameter_name] = parameter
195
+ cfn_model.line_numbers[parameter_name] = parameter_hash['Type']['line']
194
196
  end
195
197
  cfn_model
196
198
  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)
@@ -93,6 +93,7 @@ class CfnModel
93
93
  handler: serverless_function_property(serverless_function, cfn_hash, 'Handler'),
94
94
  role: format_function_role(serverless_function, fn_name),
95
95
  runtime: serverless_function_property(serverless_function, cfn_hash, 'Runtime'),
96
+ reserved_concurrent_executions: serverless_function_property(serverless_function, cfn_hash, 'ReservedConcurrentExecutions'),
96
97
  with_line_numbers: with_line_numbers
97
98
  }
98
99
 
@@ -107,6 +108,8 @@ class CfnModel
107
108
  def replace_serverless_function(cfn_hash, resource_name, with_line_numbers)
108
109
  serverless_function = cfn_hash['Resources'][resource_name]
109
110
 
111
+ original_line_number = serverless_function['Type']['line']
112
+
110
113
  lambda_fn_params = serverless_function_properties(cfn_hash,
111
114
  serverless_function,
112
115
  resource_name,
@@ -118,15 +121,18 @@ class CfnModel
118
121
  code_key: lambda_fn_params[:code_key],
119
122
  role: lambda_fn_params[:role],
120
123
  runtime: lambda_fn_params[:runtime],
124
+ reserved_concurrent_executions: lambda_fn_params[:reserved_concurrent_executions],
125
+ line_number: original_line_number,
121
126
  with_line_numbers: lambda_fn_params[:with_line_numbers]
122
127
  )
123
128
  unless serverless_function['Properties']['Role']
124
129
  cfn_hash['Resources'][resource_name + 'Role'] = function_role(serverless_function,
125
130
  resource_name,
131
+ original_line_number,
126
132
  with_line_numbers)
127
133
  end
128
134
 
129
- 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 \
130
136
  serverless_function['Properties']['Events']
131
137
 
132
138
  # Handle passing along cfn-nag specific metadata. SAM itself does not support metadata during transformation.
@@ -154,9 +160,9 @@ class CfnModel
154
160
 
155
161
  # Return the hash structure of the '<function_name>Role'
156
162
  # AWS::IAM::Role resource as created by Serverless transform
157
- def function_role(serverless_function, function_name, with_line_numbers)
163
+ def function_role(serverless_function, function_name, line_number, with_line_numbers)
158
164
  fn_role = {
159
- 'Type' => format_resource_type('AWS::IAM::Role', -1, with_line_numbers),
165
+ 'Type' => format_resource_type('AWS::IAM::Role', line_number, with_line_numbers),
160
166
  'Properties' => {
161
167
  'ManagedPolicyArns' => function_role_managed_policies(serverless_function['Properties']),
162
168
  'AssumeRolePolicyDocument' => lambda_service_can_assume_role
@@ -223,30 +229,34 @@ class CfnModel
223
229
  code_key: nil,
224
230
  role:,
225
231
  runtime:,
232
+ reserved_concurrent_executions:,
233
+ line_number:,
226
234
  with_line_numbers: false)
227
235
  fn_resource = {
228
- 'Type' => format_resource_type('AWS::Lambda::Function', -1, with_line_numbers),
236
+ 'Type' => format_resource_type('AWS::Lambda::Function', line_number, with_line_numbers),
229
237
  'Properties' => {
230
238
  'Handler' => handler,
231
239
  'Role' => role,
232
240
  'Runtime' => runtime
233
241
  }
234
242
  }
243
+ fn_resource['Properties']['ReservedConcurrentExecutions'] = reserved_concurrent_executions unless reserved_concurrent_executions.nil?
244
+
235
245
  lambda_function_code(fn_resource, code_bucket, code_key)
236
246
  end
237
247
 
238
248
  # Return the Event structure of a AWS::Lambda::Function as created
239
249
  # by Serverless transform
240
- 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)
241
251
  serverless_function['Properties']['Events'].each do |_, event|
242
- 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 \
243
253
  matching_resource_type?(event['Type'], 'Api')
244
254
  end
245
255
  end
246
256
 
247
- 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)
248
258
  # ServerlessRestApi
249
- cfn_hash['Resources']['ServerlessRestApi'] ||= serverlessrestapi_base with_line_numbers
259
+ cfn_hash['Resources']['ServerlessRestApi'] ||= serverlessrestapi_base line_number, with_line_numbers
250
260
  add_serverlessrestapi_event(
251
261
  cfn_hash['Resources']['ServerlessRestApi']['Properties']['Body']['paths'],
252
262
  event,
@@ -254,15 +264,15 @@ class CfnModel
254
264
  )
255
265
 
256
266
  # ServerlessRestApiDeployment
257
- cfn_hash['Resources']['ServerlessRestApiDeployment'] = serverlessrestapi_deployment with_line_numbers
267
+ cfn_hash['Resources']['ServerlessRestApiDeployment'] ||= serverlessrestapi_deployment line_number, with_line_numbers
258
268
 
259
269
  # ServerlessRestApiProdStage
260
- cfn_hash['Resources']['ServerlessRestApiProdStage'] = serverlessrestapi_stage with_line_numbers
270
+ cfn_hash['Resources']['ServerlessRestApiProdStage'] ||= serverlessrestapi_stage line_number, with_line_numbers
261
271
  end
262
272
 
263
- def serverlessrestapi_base(with_line_nos)
273
+ def serverlessrestapi_base(line_number, with_line_numbers)
264
274
  {
265
- 'Type' => format_resource_type('AWS::ApiGateway::RestApi', -1, with_line_nos),
275
+ 'Type' => format_resource_type('AWS::ApiGateway::RestApi', line_number, with_line_numbers),
266
276
  'Properties' => {
267
277
  'Body' => {
268
278
  'info' => {
@@ -289,9 +299,9 @@ class CfnModel
289
299
  }
290
300
  end
291
301
 
292
- def serverlessrestapi_deployment(with_line_nos)
302
+ def serverlessrestapi_deployment(line_number, with_line_numbers)
293
303
  {
294
- 'Type' => format_resource_type('AWS::ApiGateway::Deployment', -1, with_line_nos),
304
+ 'Type' => format_resource_type('AWS::ApiGateway::Deployment', line_number, with_line_numbers),
295
305
  'Properties' => {
296
306
  'Description' => 'Generated by cfn-model',
297
307
  'RestApiId' => { 'Ref' => 'ServerlessRestApi' },
@@ -306,9 +316,9 @@ class CfnModel
306
316
  }
307
317
  end
308
318
 
309
- def serverlessrestapi_stage(with_line_nos)
319
+ def serverlessrestapi_stage(line_number, with_line_numbers)
310
320
  {
311
- 'Type' => format_resource_type('AWS::ApiGateway::Stage', -1, with_line_nos),
321
+ 'Type' => format_resource_type('AWS::ApiGateway::Stage', line_number, with_line_numbers),
312
322
  'Properties' => {
313
323
  'DeploymentId' => { 'Ref' => 'ServerlessRestApiDeployment' },
314
324
  'RestApiId' => { 'Ref' => 'ServerlessRestApi' },
metadata CHANGED
@@ -1,15 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cfn-model
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.6.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Kascic
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-19 00:00:00.000000000 Z
11
+ date: 2021-10-25 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.4'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.4'
13
41
  - !ruby/object:Gem::Dependency
14
42
  name: rubocop
15
43
  requirement: !ruby/object:Gem::Requirement
@@ -24,6 +52,20 @@ dependencies:
24
52
  - - ">="
25
53
  - !ruby/object:Gem::Version
26
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: simplecov
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.11'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.11'
27
69
  - !ruby/object:Gem::Dependency
28
70
  name: kwalify
29
71
  requirement: !ruby/object:Gem::Requirement
@@ -151,9 +193,9 @@ licenses:
151
193
  metadata:
152
194
  bug_tracker_uri: https://github.com/stelligent/cfn-model/issues
153
195
  changelog_uri: https://github.com/stelligent/cfn-model/releases
154
- documentation_uri: https://www.rubydoc.info/gems/cfn-model/0.6.1
196
+ documentation_uri: https://www.rubydoc.info/gems/cfn-model/0.6.5
155
197
  homepage_uri: https://github.com/stelligent/cfn-model
156
- source_code_uri: https://github.com/stelligent/cfn-model/tree/v0.6.1
198
+ source_code_uri: https://github.com/stelligent/cfn-model/tree/v0.6.5
157
199
  post_install_message:
158
200
  rdoc_options: []
159
201
  require_paths:
@@ -170,8 +212,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
170
212
  - !ruby/object:Gem::Version
171
213
  version: '0'
172
214
  requirements: []
173
- rubyforge_project:
174
- rubygems_version: 2.7.6
215
+ rubygems_version: 3.1.2
175
216
  signing_key:
176
217
  specification_version: 4
177
218
  summary: cfn-model