cfn-model 0.6.0 → 0.6.4

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: 7671033cb2d190bc7782352c1331f8529b1ec1ad3debe22802e3e4ef49d7faf9
4
- data.tar.gz: 68949533edc714d14032fd4719ccd70dc71d5349f2b8e414a48f75fa31fa5dd5
3
+ metadata.gz: 819df60d0212456c46c1fe5ae95b97bf33c8cb223a0d4f836e4d2f7e35a9d28e
4
+ data.tar.gz: 9e29152b3a2988ad4dc31ef0bb40307ae5fcb23dc5752ee13998280ee1b6e660
5
5
  SHA512:
6
- metadata.gz: '09be423398f6a8b9faba6765d12073c71309359902055a6cc3cf45048e3cd435221e0405ee86564022e7d0d9d0185a4218ceb622ff7f183ff2c39c2bdf0d4d28'
7
- data.tar.gz: 4e7757f0c6f7c4a610e071bdd5e544ec345f9e7fc46513339daf217ee018c47d259866661216be662eb751655e82d2eb093bd8c8f628311fab936f285797f0df
6
+ metadata.gz: 60dff3853250130a0d39e7a4844e1e84f11be354c88600e3b127387e71afbfd6f5aac4f90b8192c7b19559dfd263ef127d7eb0070e016c79347579d3d8efae42
7
+ data.tar.gz: ec6b71a0376167b1a52857c4570a8e1c199ccf40901d1cff5d31cf26da32d6c01dccd035f0504e712eb344ca62e90b70408277223eff5de8dc85c7c4ef9a2f71
@@ -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.0
4
+ version: 0.6.4
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-18 00:00:00.000000000 Z
11
+ date: 2021-10-14 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
@@ -148,7 +190,12 @@ files:
148
190
  homepage: https://github.com/stelligent/cfn-model
149
191
  licenses:
150
192
  - MIT
151
- metadata: {}
193
+ metadata:
194
+ bug_tracker_uri: https://github.com/stelligent/cfn-model/issues
195
+ changelog_uri: https://github.com/stelligent/cfn-model/releases
196
+ documentation_uri: https://www.rubydoc.info/gems/cfn-model/0.6.4
197
+ homepage_uri: https://github.com/stelligent/cfn-model
198
+ source_code_uri: https://github.com/stelligent/cfn-model/tree/v0.6.4
152
199
  post_install_message:
153
200
  rdoc_options: []
154
201
  require_paths:
@@ -165,8 +212,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
165
212
  - !ruby/object:Gem::Version
166
213
  version: '0'
167
214
  requirements: []
168
- rubyforge_project:
169
- rubygems_version: 2.7.6
215
+ rubygems_version: 3.1.2
170
216
  signing_key:
171
217
  specification_version: 4
172
218
  summary: cfn-model