1
1
from collections .abc import Sequence
2
- from typing import Any , Literal
2
+ from typing import Any , Literal , Self
3
3
4
4
from external_resources_io .input import AppInterfaceProvision
5
5
from pydantic import (
@@ -193,7 +193,7 @@ def db_name(self) -> str | None:
193
193
return self .name
194
194
195
195
@model_validator (mode = "after" )
196
- def az_belongs_to_region (self ) -> "Rds" :
196
+ def az_belongs_to_region (self ) -> Self :
197
197
"""Check if a the AZ belongs to a region"""
198
198
if self .availability_zone :
199
199
az_region = self .availability_zone [:- 1 ]
@@ -207,14 +207,14 @@ def az_belongs_to_region(self) -> "Rds":
207
207
return self
208
208
209
209
@model_validator (mode = "after" )
210
- def unset_az_if_multi_region (self ) -> "Rds" :
210
+ def unset_az_if_multi_region (self ) -> Self :
211
211
"""Remove az for multi_region instances"""
212
212
if self .multi_az :
213
213
self .availability_zone = None
214
214
return self
215
215
216
216
@model_validator (mode = "after" )
217
- def unset_replica_or_snapshot_not_allowed_attrs (self ) -> "Rds" :
217
+ def unset_replica_or_snapshot_not_allowed_attrs (self ) -> Self :
218
218
"""
219
219
Some attributes are not allowed if the instance is a read replica or is created from a snapshot.
220
220
@@ -228,7 +228,7 @@ def unset_replica_or_snapshot_not_allowed_attrs(self) -> "Rds":
228
228
return self
229
229
230
230
@model_validator (mode = "after" )
231
- def replication (self ) -> "Rds" :
231
+ def replication (self ) -> Self :
232
232
"""replica_source and replicate_source_db are mutually excluive"""
233
233
if not self .replica_source :
234
234
return self
@@ -257,7 +257,7 @@ def replication(self) -> "Rds":
257
257
return self
258
258
259
259
@model_validator (mode = "after" )
260
- def validate_parameter_group_parameters (self ) -> "Rds" :
260
+ def validate_parameter_group_parameters (self ) -> Self :
261
261
"""Validate that every parameter complies with our requirements"""
262
262
if not self .parameter_group :
263
263
return self
@@ -271,7 +271,7 @@ def validate_parameter_group_parameters(self) -> "Rds":
271
271
return self
272
272
273
273
@model_validator (mode = "after" )
274
- def parameter_groups (self ) -> "Rds" :
274
+ def parameter_groups (self ) -> Self :
275
275
"""
276
276
Sets the right parameter group names. The instance identifier is used as prefix on each pg.
277
277
@@ -317,7 +317,7 @@ def is_read_replica(self) -> bool:
317
317
return self .replica_source is not None or self .replicate_source_db is not None
318
318
319
319
@model_validator (mode = "after" )
320
- def enhanced_monitoring_attributes (self ) -> "Rds" :
320
+ def enhanced_monitoring_attributes (self ) -> Self :
321
321
"""
322
322
Enhanced monitoring validation:
323
323
@@ -340,21 +340,17 @@ def enhanced_monitoring_attributes(self) -> "Rds":
340
340
return self
341
341
342
342
@model_validator (mode = "after" )
343
- def kms_key_id_remove_alias_prefix (self ) -> "Rds" :
343
+ def kms_key_id_remove_alias_prefix (self ) -> Self :
344
344
"""Remove alias prefix from kms_key_id"""
345
345
if self .kms_key_id :
346
346
self .kms_key_id = self .kms_key_id .removeprefix ("alias/" )
347
347
return self
348
348
349
349
@model_validator (mode = "after" )
350
- def blue_green_update_requirements (self ) -> "Rds" :
351
- if (
352
- self .blue_green_update
353
- and self .blue_green_update .enabled
354
- and self .snapshot_identifier
355
- ):
350
+ def _validate_blue_green_update (self ) -> Self :
351
+ if self .blue_green_update and self .blue_green_update .enabled :
356
352
raise ValueError (
357
- "Blue/Green updates can not be enabled when snapshot_identifier is set "
353
+ "blue_green_update is not supported, use blue_green_deployment instead "
358
354
)
359
355
return self
360
356
0 commit comments