cfn-model 0.6.1 → 0.6.5

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: 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