Skip to content

Commit 7885b55

Browse files
authored
Engine is required to validate the plan (#101)
1 parent 9c755b8 commit 7885b55

File tree

3 files changed

+12
-8
lines changed

3 files changed

+12
-8
lines changed

er_aws_rds/input.py

+6-3
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ class Rds(RdsAppInterface):
133133

134134
model_config = ConfigDict(extra="allow")
135135
identifier: str
136-
engine: str | None = None
136+
engine: str = "postgres"
137137
allow_major_version_upgrade: bool | None = False
138138
availability_zone: str | None = None
139139
monitoring_interval: int | None = None
@@ -191,12 +191,15 @@ def unset_az_if_multi_region(self) -> "Rds":
191191

192192
@model_validator(mode="after")
193193
def unset_replica_or_snapshot_not_allowed_attrs(self) -> "Rds":
194-
"""Some attributes are not allowed if the instance is a replica or needs to be created from a snapshot"""
194+
"""
195+
Some attributes are not allowed if the instance is a read replica or is created from a snapshot.
196+
197+
engine is not removed because it's needed in the plan validation.
198+
"""
195199
if self.replica_source or self.replicate_source_db or self.snapshot_identifier:
196200
self.username = None
197201
self.password = None
198202
self.name = None
199-
self.engine = None
200203
self.allocated_storage = None
201204
return self
202205

hooks/post_plan.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ def _validate_version_on_create(self) -> None:
8989
for u in self.aws_db_instance_creations:
9090
if not u.change or not u.change.after:
9191
continue
92-
engine = u.change.after["engine"]
92+
engine = self.input.data.engine
9393
version = u.change.after["engine_version"]
9494
if not self.aws_api.is_rds_engine_version_available(
9595
engine=engine, version=version

module/main.tf

+5-4
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,10 @@ resource "aws_iam_role_policy_attachment" "this" {
4141
}
4242

4343
locals {
44-
parameter_groups = { for pg in try(var.parameter_groups, []) : pg.name => pg }
45-
parameter_group_name = try(var.rds_instance.parameter_group_name, null)
46-
parameter_group_managed = local.parameter_group_name != null ? contains(keys(local.parameter_groups), local.parameter_group_name) : false
44+
parameter_groups = { for pg in try(var.parameter_groups, []) : pg.name => pg }
45+
parameter_group_name = try(var.rds_instance.parameter_group_name, null)
46+
parameter_group_managed = local.parameter_group_name != null ? contains(keys(local.parameter_groups), local.parameter_group_name) : false
47+
aws_db_instance_needs_engine = try(var.rds_instance.replicate_source_db, null) == null && try(var.rds_instance.snapshot_identifier, null) == null ? true : false
4748
}
4849

4950
resource "aws_db_parameter_group" "this" {
@@ -115,7 +116,7 @@ resource "aws_db_instance" "this" {
115116
domain_iam_role_name = try(var.rds_instance.domain_iam_role_name, null)
116117
domain_ou = try(var.rds_instance.domain_ou, null)
117118
enabled_cloudwatch_logs_exports = try(var.rds_instance.enabled_cloudwatch_logs_exports, null)
118-
engine = try(var.rds_instance.engine, null)
119+
engine = local.aws_db_instance_needs_engine ? var.rds_instance.engine : null
119120
engine_version = try(var.rds_instance.engine_version, null)
120121
final_snapshot_identifier = try(var.rds_instance.final_snapshot_identifier, null)
121122
iam_database_authentication_enabled = try(var.rds_instance.iam_database_authentication_enabled, null)

0 commit comments

Comments
 (0)