-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathgenerator.yaml
213 lines (213 loc) · 7.68 KB
/
generator.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
ignore:
resource_names:
# DBCluster
- DBClusterParameterGroup
- DBClusterSnapshot
# DBInstance
# DBSubnetGroup
- EventSubscription
- GlobalCluster
controller_name: documentdb
sdk_names:
model_name: docdb
package_name: docdb
operations:
DeleteDBCluster:
override_values:
# Clearly this is not ideal, but will suffice until we add custom hook
# points to the build_request methods to enable a genmeration of the
# final snapshot identifier to use.
SkipFinalSnapshot: true
ModifyDBCluster:
override_values:
# The whole concept of a "maintenance window" isn't aligned with the
# declarative state model in Kubernetes. Users should build "maintenance
# window" functionality at a higher layer than the APIs that manage the
# lifecycle of individual resources like a DB cluster or DB instance. For
# example, users can build maintenance window functionality into their
# deployment pipeline solution or GitOps solution.
#
# We override the value of the ApplyImmediately field in the modify
# operations to "true" because we want changes that a Kubernetes user
# makes to a resource's Spec to be reconciled by the ACK service
# controller, not a different service.
ApplyImmediately: true
# We override the value of AllowMajorVersionUpgrade field in the modify
# call since any engine version change should apply directly.
# This flag was designed as a protect flag but not necessary in controller
# side when customer need to make the engine version change
AllowMajorVersionUpgrade: true
ModifyDBInstance:
override_values:
# The whole concept of a "maintenance window" isn't aligned with the
# declarative state model in Kubernetes. Users should build "maintenance
# window" functionality at a higher layer than the APIs that manage the
# lifecycle of individual resources like a DB cluster or DB instance. For
# example, users can build maintenance window functionality into their
# deployment pipeline solution or GitOps solution.
#
# We override the value of the ApplyImmediately field in the modify
# operations to "true" because we want changes that a Kubernetes user
# makes to a resource's Spec to be reconciled by the ACK service
# controller, not a different service.
ApplyImmediately: true
# We override the value of the ApplyImmediately field in the modify
# operations to "true" because we want changes that a Kubernetes user
# makes to a resource's Spec to be reconciled by the ACK service
# controller, not a different service.
AllowMajorVersionUpgrade: true
DeleteDBInstance:
override_values:
# Clearly this is not ideal, but will suffice until we add custom hook
# points to the build_request methods to enable a genmeration of the
# final snapshot identifier to use.
SkipFinalSnapshot: true
resources:
DBCluster:
hooks:
sdk_create_pre_build_request:
template_path: hooks/db_cluster/sdk_create_pre_build_request.go.tpl
sdk_create_post_set_output:
template_path: hooks/db_cluster/sdk_create_post_set_output.go.tpl
sdk_read_many_post_set_output:
template_path: hooks/db_cluster/sdk_read_many_post_set_output.go.tpl
sdk_delete_pre_build_request:
template_path: hooks/db_cluster/sdk_delete_pre_build_request.go.tpl
sdk_file_end:
template_path: hooks/db_cluster/sdk_file_end.go.tpl
exceptions:
terminal_codes:
- DBClusterQuotaExceededFault
- DBSubnetGroupDoesNotCoverEnoughAZs
- InsufficientStorageClusterCapacity
- InvalidParameter
- InvalidParameterValue
- InvalidParameterCombination
- InvalidSubnet
- StorageQuotaExceeded
update_operation:
custom_method_name: customUpdate
fields:
DBClusterIdentifier:
is_primary_key: true
MasterUserPassword:
is_secret: true
KmsKeyId:
references:
resource: Key
service_name: kms
path: Status.ACKResourceMetadata.ARN
MasterUserSecretKmsKeyId:
references:
resource: Key
service_name: kms
path: Status.ACKResourceMetadata.ARN
# DBClusterParameterGroupName:
# references:
# resource: DBClusterParameterGroup
# path: Spec.Name
DBSubnetGroupName:
references:
resource: DBSubnetGroup
path: Spec.Name
VpcSecurityGroupIds:
references:
resource: SecurityGroup
service_name: ec2
path: Status.ID
SnapshotIdentifier:
from:
operation: RestoreDBClusterFromSnapshot
path: SnapshotIdentifier
DBSubnetGroup:
renames:
operations:
DescribeDBSubnetGroups:
input_fields:
DBSubnetGroupName: Name
DBSubnetGroupDescription: Description
CreateDBSubnetGroup:
input_fields:
DBSubnetGroupName: Name
DBSubnetGroupDescription: Description
ModifyDBSubnetGroup:
input_fields:
DBSubnetGroupName: Name
DBSubnetGroupDescription: Description
DeleteDBSubnetGroup:
input_fields:
DBSubnetGroupName: Name
exceptions:
terminal_codes:
- DBSubnetGroupDoesNotCoverEnoughAZs
- InvalidSubnet
- InvalidParameter
- SubnetAlreadyInUse
hooks:
sdk_read_many_post_set_output:
template_path: hooks/db_subnet_group/sdk_read_many_post_set_output.go.tpl
sdk_update_pre_set_output:
template_path: hooks/db_subnet_group/sdk_update_pre_set_output.go.tpl
fields:
SubnetIDs:
references:
service_name: ec2
resource: Subnet
path: Status.SubnetID
Name:
is_primary_key: true
DBInstance:
hooks:
delta_pre_compare:
code: customPreCompare(delta, a, b)
sdk_create_post_set_output:
template_path: hooks/db_instance/sdk_create_post_set_output.go.tpl
sdk_read_many_post_set_output:
template_path: hooks/db_instance/sdk_read_many_post_set_output.go.tpl
sdk_update_pre_build_request:
template_path: hooks/db_instance/sdk_update_pre_build_request.go.tpl
sdk_update_post_build_request:
template_path: hooks/db_instance/sdk_update_post_build_request.go.tpl
sdk_update_post_set_output:
template_path: hooks/db_instance/sdk_update_post_set_output.go.tpl
sdk_delete_pre_build_request:
template_path: hooks/db_instance/sdk_delete_pre_build_request.go.tpl
exceptions:
terminal_codes:
- InvalidParameter
- InvalidParameterValue
- InvalidParameterCombination
fields:
AvailabilityZone:
is_immutable: true
DBInstanceIdentifier:
is_primary_key: true
DBInstanceStatus:
print:
name: "STATUS"
PerformanceInsightsKMSKeyId:
references:
resource: Key
service_name: kms
path: Status.ACKResourceMetadata.ARN
# DBParameterGroupName:
# references:
# resource: DBParameterGroup
# path: Spec.Name
DBSubnetGroupName:
references:
resource: DBSubnetGroup
path: Spec.Name
VpcSecurityGroupIds:
references:
resource: SecurityGroup
service_name: ec2
path: Status.ID
renames:
operations:
CreateDBInstance:
input_fields:
EnablePerformanceInsights: PerformanceInsightsEnabled
ModifyDBInstance:
input_fields:
EnablePerformanceInsights: PerformanceInsightsEnabled