cfn-model 0.4.22 → 0.4.23
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 82b727cdb60f1f606204c54f5cbc7bcc730e481126d9a3815541f54add0de308
|
4
|
+
data.tar.gz: 1c1026cfdcd134576c11e4a2c11046b441fcc3e1179bc89de89c8c81b1dbe961
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 93623be9812b065eb4fdf1a7f9bdedd7942ac997d46c66fd5bc1c50a940f7ae27652984e36dec7e4d9304a0641d1341d613ded703935834ad1cf50f6eb44819e
|
7
|
+
data.tar.gz: edde0501eac183a6e9b04d5190f7e3396d4af16467b8604721331a901cbe9d6fdedd1f8c04edbda8d59d1741f0921ba06fa96f49ed5e0b4589a172e327e5c1c5
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'model_element'
|
4
|
+
|
5
|
+
class AWS::ApiGateway::Deployment < ModelElement
|
6
|
+
attr_accessor :usage_plan_ids
|
7
|
+
|
8
|
+
def initialize(cfn_model)
|
9
|
+
super
|
10
|
+
@usage_plan_ids = []
|
11
|
+
@resource_type = 'AWS::ApiGateway::Deployment'
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'parser_error'
|
4
|
+
require 'cfn-model/model/api_gateway_deployment'
|
5
|
+
require 'cfn-model/model/references'
|
6
|
+
|
7
|
+
class ApiGatewayDeploymentParser
|
8
|
+
|
9
|
+
def parse(cfn_model:, resource:)
|
10
|
+
deployment = resource
|
11
|
+
|
12
|
+
attach_usage_plan_to_api_deployment(cfn_model: cfn_model, deployment: deployment)
|
13
|
+
deployment
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def attached_usage_plans(cfn_model)
|
19
|
+
usage_plans = cfn_model.resources_by_type 'AWS::ApiGateway::UsagePlan'
|
20
|
+
usage_plans.select { |usage_plan| !usage_plan.apiStages.nil? }
|
21
|
+
end
|
22
|
+
|
23
|
+
def stages_for_deployment(cfn_model, deployment)
|
24
|
+
stages = cfn_model.resources_by_type 'AWS::ApiGateway::Stage'
|
25
|
+
stages.select { |stage| stage.deploymentId ? References.resolve_resource_id(stage.deploymentId) == deployment.logical_resource_id : false }
|
26
|
+
end
|
27
|
+
|
28
|
+
def deployment_creates_stage?(deployment)
|
29
|
+
!deployment.stageName.nil?
|
30
|
+
end
|
31
|
+
|
32
|
+
def usage_plans_for_stage_by_resource_id(cfn_model, logical_resource_id)
|
33
|
+
usage_plans = attached_usage_plans(cfn_model)
|
34
|
+
usage_plans.select do |usage_plan|
|
35
|
+
stages = usage_plan.apiStages.select do |up_api_stage|
|
36
|
+
References.resolve_resource_id(up_api_stage['Stage']) == logical_resource_id
|
37
|
+
end
|
38
|
+
!stages.empty?
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def usage_plans_for_stage_by_stage_name(cfn_model, stage_name)
|
43
|
+
usage_plans = attached_usage_plans(cfn_model)
|
44
|
+
usage_plans.select do |usage_plan|
|
45
|
+
stages = usage_plan.apiStages.select do |up_api_stage|
|
46
|
+
up_api_stage['Stage'] == stage_name
|
47
|
+
end
|
48
|
+
!stages.empty?
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def attach_usage_plans_for_deployment_that_creates_stage(cfn_model, deployment)
|
53
|
+
usage_plans_for_stage_by_stage_name(cfn_model, deployment.stageName).each do |usage_plan|
|
54
|
+
deployment.usage_plan_ids << usage_plan.logical_resource_id
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def attach_usage_plans_for_deployment_without_stage_name(cfn_model, deployment)
|
59
|
+
stages_for_deployment(cfn_model, deployment).each do |stage|
|
60
|
+
usage_plans_for_stage_by_resource_id(cfn_model, stage.logical_resource_id).each do |usage_plan|
|
61
|
+
deployment.usage_plan_ids << usage_plan.logical_resource_id
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def attach_usage_plan_to_api_deployment(cfn_model:, deployment:)
|
67
|
+
if deployment_creates_stage?(deployment)
|
68
|
+
attach_usage_plans_for_deployment_that_creates_stage(cfn_model, deployment)
|
69
|
+
else
|
70
|
+
attach_usage_plans_for_deployment_without_stage_name(cfn_model, deployment)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
@@ -23,6 +23,7 @@ class ParserRegistry
|
|
23
23
|
'AWS::SNS::TopicPolicy' => WithPolicyDocumentParser,
|
24
24
|
'AWS::SQS::QueuePolicy' => WithPolicyDocumentParser,
|
25
25
|
'AWS::ApiGateway::Stage' => ApiGatewayStageParser,
|
26
|
+
'AWS::ApiGateway::Deployment' => ApiGatewayDeploymentParser
|
26
27
|
}
|
27
28
|
end
|
28
29
|
|
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.4.
|
4
|
+
version: 0.4.23
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Kascic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-03-
|
11
|
+
date: 2020-03-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubocop
|
@@ -61,6 +61,7 @@ extra_rdoc_files: []
|
|
61
61
|
files:
|
62
62
|
- bin/cfn_parse
|
63
63
|
- lib/cfn-model.rb
|
64
|
+
- lib/cfn-model/model/api_gateway_deployment.rb
|
64
65
|
- lib/cfn-model/model/api_gateway_stage.rb
|
65
66
|
- lib/cfn-model/model/bucket_policy.rb
|
66
67
|
- lib/cfn-model/model/cfn_model.rb
|
@@ -88,6 +89,7 @@ files:
|
|
88
89
|
- lib/cfn-model/model/statement.rb
|
89
90
|
- lib/cfn-model/model/topic_policy.rb
|
90
91
|
- lib/cfn-model/monkey_patches/psych/nodes/node.rb
|
92
|
+
- lib/cfn-model/parser/api_gateway_deployment_parser.rb
|
91
93
|
- lib/cfn-model/parser/api_gateway_stage_parser.rb
|
92
94
|
- lib/cfn-model/parser/cfn_parser.rb
|
93
95
|
- lib/cfn-model/parser/ec2_instance_parser.rb
|