-
Notifications
You must be signed in to change notification settings - Fork 52
/
generator.yaml
503 lines (503 loc) · 17.7 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
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
ignore:
resource_names:
- BlueGreenDeployment
- CustomAvailabilityZone
- CustomDBEngineVersion
#- DBCluster
- DBClusterEndpoint
#- DBClusterParameterGroup
# DBClusterSnapshot
#- DBInstance
- DBInstanceReadReplica
#- DBParameterGroup
#- DBProxy
- DBProxyEndpoint
- DBSecurityGroup
# DBSnapshot
#- DBSubnetGroup
- EventSubscription
#- GlobalCluster
- OptionGroup
field_paths:
- CreateDBInstanceInput.DBSecurityGroups
- DBInstance.DBSecurityGroups
# We handle Spec.Tags separately...
- "DescribeDBInstancesOutput.DBInstances.DBInstance.TagList"
# These fields are also supported for DBSnapshot updates but we can't
# support them for the moment. They require some code-generator modifications.
- "CreateDBSnapshotOutput.DBSnapshot.EngineVersion"
- "CreateDBSnapshotOutput.DBSnapshot.OptionGroupName"
- "DescribeDBClusterSnapshotsOutput.DBClusterSnapshots.TagList"
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
# 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
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_pre_build_request:
template_path: hooks/db_cluster/sdk_create_pre_build_request.go.tpl
delta_pre_compare:
template_path: hooks/db_cluster/delta_pre_compare.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_delete_post_build_request:
template_path: hooks/db_cluster/sdk_delete_post_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
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
SourceDBClusterIdentifier:
from:
operation: RestoreDBClusterToPointInTime
path: SourceDBClusterIdentifier
RestoreType:
from:
operation: RestoreDBClusterToPointInTime
path: RestoreType
RestoreToTime:
from:
operation: RestoreDBClusterToPointInTime
path: RestoreToTime
UseLatestRestorableTime:
from:
operation: RestoreDBClusterToPointInTime
path: UseLatestRestorableTime
Tags:
compare:
# We have a custom comparison function...
is_ignored: true
renames:
operations:
CreateDBCluster:
output_fields:
ScalingConfigurationInfo: ScalingConfiguration
ModifyDBCluster:
output_fields:
ScalingConfigurationInfo: ScalingConfiguration
DBClusterParameterGroup:
renames:
operations:
DescribeDBClusterParameterGroups:
input_fields:
DBClusterParameterGroupName: Name
DBParameterGroupFamily: Family
CreateDBClusterParameterGroup:
input_fields:
DBClusterParameterGroupName: Name
DBParameterGroupFamily: Family
DeleteDBClusterParameterGroup:
input_fields:
DBClusterParameterGroupName: Name
ModifyDBClusterParameterGroup:
input_fields:
DBClusterParameterGroupName: Name
DBParameterGroupFamily: Family
update_operation:
# We need a custom update implementation until the issue behind
# https://github.com/aws-controllers-k8s/community/issues/869 is
# resolved.
custom_method_name: customUpdate
hooks:
sdk_read_many_post_set_output:
template_path: hooks/db_cluster_parameter_group/sdk_read_many_post_set_output.go.tpl
delta_pre_compare:
template_path: hooks/db_cluster_parameter_group/delta_pre_compare.go.tpl
sdk_create_post_set_output:
template_path: hooks/db_cluster_parameter_group/sdk_create_post_set_output.go.tpl
fields:
Name:
is_primary_key: true
Parameters:
from:
operation: ModifyDBClusterParameterGroup
path: Parameters
documentation: DEPRECATED - do not use. Prefer ParameterOverrides instead.
ParameterOverrides:
custom_field:
# Map keys are the parameter name and the values are the parameter value.
# We automatically determine the "apply method" for parameters.
map_of: String
documentation: These are ONLY user-defined parameter overrides for the
DB cluster parameter group. This does not contain default or system
parameters.
Tags:
compare:
# We have a custom comparison function...
is_ignored: true
# These are the "statuses" for the user-defined parameter overrides in
# Spec.ParameterOverrides
ParameterOverrideStatuses:
from:
operation: DescribeDBClusterParameters
path: Parameters
is_read_only: true
DBInstance:
hooks:
delta_pre_compare:
template_path: hooks/db_instance/delta_pre_compare.go.tpl
sdk_create_pre_build_request:
template_path: hooks/db_instance/sdk_create_pre_build_request.go.tpl
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
sdk_delete_post_build_request:
template_path: hooks/db_instance/sdk_delete_post_build_request.go.tpl
sdk_file_end:
template_path: hooks/db_instance/sdk_file_end.go.tpl
exceptions:
terminal_codes:
- InvalidParameter
- InvalidParameterValue
- InvalidParameterCombination
fields:
AvailabilityZone:
late_initialize: {}
is_immutable: true
DBInstanceIdentifier:
is_primary_key: true
DBInstanceStatus:
print:
name: "STATUS"
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
DBParameterGroupName:
references:
resource: DBParameterGroup
path: Spec.Name
DBSubnetGroupName:
references:
resource: DBSubnetGroup
path: Spec.Name
VpcSecurityGroupIds:
references:
resource: SecurityGroup
service_name: ec2
path: Status.ID
BackupTarget:
late_initialize: {}
NetworkType:
late_initialize: {}
# Used by restore db instance from db snapshot
DBSnapshotIdentifier:
from:
operation: RestoreDBInstanceFromDBSnapshot
path: DBSnapshotIdentifier
DBClusterSnapshotIdentifier:
from:
operation: RestoreDBInstanceFromDBSnapshot
path: DBClusterSnapshotIdentifier
UseDefaultProcessorFeatures:
from:
operation: RestoreDBInstanceFromDBSnapshot
path: UseDefaultProcessorFeatures
# Used by create db instance read replica
SourceDBInstanceIdentifier:
from:
operation: CreateDBInstanceReadReplica
path: SourceDBInstanceIdentifier
DestinationRegion:
from:
operation: CreateDBInstanceReadReplica
path: DestinationRegion
ReplicaMode:
from:
operation: CreateDBInstanceReadReplica
path: ReplicaMode
SourceRegion:
from:
operation: CreateDBInstanceReadReplica
path: SourceRegion
PreSignedURL:
from:
operation: CreateDBInstanceReadReplica
path: PreSignedUrl
Tags:
compare:
# We have a custom comparison function...
is_ignored: true
renames:
operations:
CreateDBInstance:
input_fields:
EnablePerformanceInsights: PerformanceInsightsEnabled
ModifyDBInstance:
input_fields:
EnablePerformanceInsights: PerformanceInsightsEnabled
GlobalCluster:
exceptions:
terminal_codes:
- GlobalClusterAlreadyExistsFault
- GlobalClusterQuotaExceededFault
fields:
GlobalClusterIdentifier:
is_primary_key: true
tags:
ignore: true
DBParameterGroup:
renames:
operations:
DescribeDBParameterGroups:
input_fields:
DBParameterGroupName: Name
DBParameterGroupFamily: Family
CreateDBParameterGroup:
input_fields:
DBParameterGroupName: Name
DBParameterGroupFamily: Family
DeleteDBParameterGroup:
input_fields:
DBParameterGroupName: Name
ModifyDBParameterGroup:
input_fields:
DBParameterGroupName: Name
DBParameterGroupFamily: Family
update_operation:
# We need a custom update implementation until the issue behind
# https://github.com/aws-controllers-k8s/community/issues/869 is
# resolved.
custom_method_name: customUpdate
hooks:
sdk_read_many_post_set_output:
template_path: hooks/db_parameter_group/sdk_read_many_post_set_output.go.tpl
delta_pre_compare:
template_path: hooks/db_parameter_group/delta_pre_compare.go.tpl
sdk_create_post_set_output:
template_path: hooks/db_parameter_group/sdk_create_post_set_output.go.tpl
fields:
Name:
is_primary_key: true
ParameterOverrides:
custom_field:
# The type is a map[string]string where the map keys are the
# parameter name and the values are the parameter value. We
# automatically determine the "apply method" for parameters so all
# the user needs to do is specify the parameter name and value they
# want to override...
map_of: String
documentation:
These are ONLY user-defined parameter overrides for the DB parameter
group. This does not contain default or system parameters.
Tags:
compare:
# We have a custom comparison function...
is_ignored: true
# These are the "statuses" for the user-defined parameter overrides in
# Spec.ParameterOverrides
ParameterOverrideStatuses:
from:
operation: DescribeDBParameters
path: Parameters
is_read_only: true
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
delta_pre_compare:
template_path: hooks/db_subnet_group/delta_pre_compare.go.tpl
fields:
SubnetIDs:
references:
service_name: ec2
resource: Subnet
path: Status.SubnetID
Name:
is_primary_key: true
Tags:
compare:
# We have a custom comparison function...
is_ignored: true
DBProxy:
exceptions:
terminal_codes:
- InvalidSubnet
fields:
Name:
is_primary_key: true
renames:
operations:
CreateDBProxy:
input_fields:
DBProxyName: Name
DeleteDBProxy:
input_fields:
DBProxyName: Name
DescribeDBProxies:
input_fields:
DBProxyName: Name
ModifyDBProxy:
input_fields:
DBProxyName: Name
hooks:
sdk_create_post_set_output:
template_path: hooks/db_proxy/sdk_create_post_set_output.go.tpl
sdk_read_many_post_set_output:
template_path: hooks/db_proxy/sdk_read_many_post_set_output.go.tpl
sdk_update_pre_build_request:
template_path: hooks/db_proxy/sdk_update_pre_build_request.go.tpl
sdk_update_post_set_output:
template_path: hooks/db_proxy/sdk_update_post_set_output.go.tpl
sdk_delete_pre_build_request:
template_path: hooks/db_proxy/sdk_delete_pre_build_request.go.tpl
DBSnapshot:
fields:
DBSnapshotIdentifier:
is_primary_key: true
DBInstanceIdentifier:
references:
resource: DBInstance
path: Spec.DBInstanceIdentifier
# EngineVersion:
# is_read_only: false
# OptionGroupName:
# is_read_only: false
hooks:
sdk_create_post_set_output:
template_path: hooks/db_snapshot/sdk_create_post_set_output.go.tpl
sdk_read_many_post_set_output:
template_path: hooks/db_snapshot/sdk_read_many_post_set_output.go.tpl
sdk_update_pre_build_request:
template_path: hooks/db_snapshot/sdk_update_pre_build_request.go.tpl
DBClusterSnapshot:
fields:
DBClusterSnapshotIdentifier:
is_primary_key: true
DBClusterIdentifier:
references:
resource: DBCluster
path: Spec.DBClusterIdentifier
hooks:
sdk_create_post_set_output:
template_path: hooks/db_cluster_snapshot/sdk_create_post_set_output.go.tpl
sdk_read_many_post_set_output:
template_path: hooks/db_cluster_snapshot/sdk_read_many_post_set_output.go.tpl
update_operation:
custom_method_name: customUpdateDBClusterSnapshot