-
Notifications
You must be signed in to change notification settings - Fork 53
/
Copy pathgenerator.yaml
212 lines (212 loc) · 7.22 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
ignore:
resource_names:
- CustomAvailabilityZone
- CustomDBEngineVersion
#- DBCluster
- DBClusterEndpoint
#- DBClusterParameterGroup
- DBClusterSnapshot
#- DBInstance
- DBInstanceReadReplica
#- DBParameterGroup
- DBProxy
- DBProxyEndpoint
#- DBSecurityGroup
- DBSnapshot
#- DBSubnetGroup
- EventSubscription
#- GlobalCluster
- OptionGroup
field_paths:
operations:
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
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
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
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:
update_operation:
# We need a custom update implementation until the issue behind
# https://github.com/aws-controllers-k8s/community/issues/917 is
# resolved.
custom_method_name: customUpdate
hooks:
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
exceptions:
terminal_codes:
- DBClusterQuotaExceededFault
- DBParameterGroupNotFound
- DBSubnetGroupNotFoundFault
- DBSubnetGroupDoesNotCoverEnoughAZs
- DomainNotFoundFault
- InsufficientStorageClusterCapacity
- InvalidParameter
- InvalidParameterValue
- InvalidParameterCombination
- InvalidSubnet
- KMSKeyNotAccessibleFault
- StorageQuotaExceeded
fields:
DBClusterIdentifier:
is_primary_key: true
MasterUserPassword:
is_secret: true
DBClusterParameterGroup:
renames:
operations:
DescribeDBClusterParameterGroups:
input_fields:
DBClusterParameterGroupName: Name
CreateDBClusterParameterGroup:
input_fields:
DBClusterParameterGroupName: Name
DBParameterGroupFamily: Family
DeleteDBClusterParameterGroup:
input_fields:
DBClusterParameterGroupName: Name
fields:
Name:
is_primary_key: true
Parameters:
from:
operation: ModifyDBClusterParameterGroup
path: Parameters
DBInstance:
hooks:
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_delete_pre_build_request:
template_path: hooks/db_instance/sdk_delete_pre_build_request.go.tpl
exceptions:
terminal_codes:
- InvalidParameter
- InvalidParameterValue
- InvalidParameterCombination
- DBSecurityGroupNotFound
- DBSubnetGroupNotFoundFault
- DBParameterGroupNotFound
fields:
AvailabilityZone:
late_initialize: {}
DBInstanceIdentifier:
is_primary_key: true
# Because the Create input and Create/Update/ReadOne output shapes for
# the DBSecurityGroups field have different Go types, we are instructing
# the code generator to set the Spec.DBSecurityGroups field (which is a
# []string field) to the set of DBSecurityGroups..DBSecurityGroupName
# values in the ReadOne method's Output shape.
DBSecurityGroups:
set:
- method: Update
from: DBSecurityGroupName
- method: Create
from: DBSecurityGroupName
- method: ReadOne
from: DBSecurityGroupName
MasterUserPassword:
is_secret: true
GlobalCluster:
exceptions:
terminal_codes:
- GlobalClusterAlreadyExistsFault
- GlobalClusterQuotaExceededFault
fields:
GlobalClusterIdentifier:
is_primary_key: true
DBParameterGroup:
renames:
operations:
DescribeDBParameterGroups:
input_fields:
DBParameterGroupName: Name
CreateDBParameterGroup:
input_fields:
DBParameterGroupName: Name
DBParameterGroupFamily: Family
DeleteDBParameterGroup:
input_fields:
DBParameterGroupName: Name
fields:
Name:
is_primary_key: true
Parameters:
from:
operation: ModifyDBParameterGroup
path: Parameters
DBSecurityGroup:
renames:
operations:
DescribeDBSecurityGroups:
input_fields:
DBSecurityGroupName: Name
CreateDBSecurityGroup:
input_fields:
DBSecurityGroupName: Name
DBSecurityGroupDescription: Description
DeleteDBSecurityGroup:
input_fields:
DBSecurityGroupName: Name
fields:
Name:
is_primary_key: true
DBSubnetGroup:
renames:
operations:
DescribeDBSubnetGroups:
input_fields:
DBSubnetGroupName: Name
CreateDBSubnetGroup:
input_fields:
DBSubnetGroupName: Name
DBSubnetGroupDescription: Description
DeleteDBSubnetGroup:
input_fields:
DBSubnetGroupName: Name
fields:
Name:
is_primary_key: true