Skip to content

fix(rds): round-trip option-group Options, event-sub source ids, global-cluster/integration/proxy-target modifies#1950

Merged
vieiralucas merged 1 commit into
mainfrom
worktree-bughunt-rds-extras
Jun 25, 2026
Merged

fix(rds): round-trip option-group Options, event-sub source ids, global-cluster/integration/proxy-target modifies#1950
vieiralucas merged 1 commit into
mainfrom
worktree-bughunt-rds-extras

Conversation

@vieiralucas

@vieiralucas vieiralucas commented Jun 25, 2026

Copy link
Copy Markdown
Member

Summary

Bug-hunt 2026-06-25 Tier-1 — the RDS extras round-trip cluster. Several Modify/Register ops parsed their input but returned/persisted nothing, so read-back showed the default (write-succeeds / read-shows-default stubs). Surfaced on the surface the recent tfacc batches (#1947-#1949) deepened.

  • ModifyOptionGroup Options (MEDIUM) — now maintains an effective Options list (upsert OptionsToInclude by name, drop OptionsToRemove) and renders it; previously the Modify response and every DescribeOptionGroups hardcoded empty <Options/>.
  • Event-subscription SourceIds / EventCategories (MEDIUM) — CreateEventSubscription now captures them and renders SourceIdsList / EventCategoriesList; AddSourceIdentifierToSubscription / RemoveSourceIdentifierFromSubscription mutate the persisted list and return the subscription. Fixes a perpetual diff for Terraform aws_db_event_subscription with source_ids / event_categories.
  • ModifyGlobalCluster / Failover / Switchover / RemoveFromGlobalCluster (LOW) — load, apply DeletionProtection / EngineVersion / rename, persist, return the wrapped GlobalCluster (were no-op empty <GlobalCluster/>).
  • ModifyIntegration (LOW) — load by name or ARN, apply changes, persist, return (was no-op empty <Integration/>).
  • RegisterDBProxyTargets / DescribeDBProxyTargets / DeregisterDBProxyTargets (LOW) — persist registered RDS_INSTANCE / TRACKED_CLUSTER targets and reflect them on Describe (were register-succeeds / describe-empty stubs).

Test plan

  • Updated the extras unit tests that encoded the old stub shapes (now pass the AWS-mandated params + assert the round-trips).
  • Added focused round-trip tests: event-sub source ids add/remove, proxy-target register/deregister, global-cluster deletion-protection persist.
  • cargo test -p fakecloud-rds — 225 passed.
  • cargo clippy -p fakecloud-rds --all-targets -- -D warnings clean; cargo fmt applied.
  • All three RDS tfacc shards still pass end-to-end: rds-param-groups, rds-option-groups, rds-event-global (1 passed each via the harness).

Surface check

  • No new public API / introspection surface — existing RDS query-protocol response fields.
  • No struct/persistence schema change (all stored in the existing JSON extras maps; new fields are additive).

Summary by cubic

Fixes RDS extras round‑trip behavior by persisting and returning data for Option Groups, Event Subscriptions, Global Clusters, Integrations, and DB Proxy targets so reads match writes. Removes empty responses and resolves Terraform diffs for aws_db_event_subscription and proxy targets.

  • Bug Fixes
    • Option groups: ModifyOptionGroup now maintains an Options list (upsert includes, drop removes) and DescribeOptionGroups renders it.
    • Event subscriptions: CreateEventSubscription saves SourceIdsList and EventCategoriesList; add/remove source ID updates the list and returns the subscription (fixes Terraform diff).
    • Global clusters: Modify/Failover/Switchover/RemoveFromGlobalCluster load, apply DeletionProtection/EngineVersion/rename, persist, and return the updated GlobalCluster.
    • Integrations: ModifyIntegration loads by name or ARN, applies DataFilter/Description/rename, persists, and returns the updated Integration.
    • DB Proxy targets: Register/Deregister now persist RDS_INSTANCE/TRACKED_CLUSTER targets and DescribeDBProxyTargets returns them.

Written for commit d5cfb84. Summary will update on new commits.

Review in cubic

…al-cluster/integration/proxy-target modifies

Bug-hunt 2026-06-25 Tier-1 RDS extras cluster — several Modify/Register ops
parsed input but returned/persisted nothing, so read-back showed the default.

- ModifyOptionGroup: maintain an effective Options list (upsert OptionsToInclude
  by name, drop OptionsToRemove) and render it in option_group_xml. Previously
  the Modify response and every DescribeOptionGroups hardcoded an empty <Options/>.
- CreateEventSubscription: capture SourceIds / EventCategories and render them in
  SourceIdsList / EventCategoriesList; AddSourceIdentifierToSubscription /
  RemoveSourceIdentifierFromSubscription now mutate the persisted list and return
  the subscription. Fixes a perpetual diff for Terraform aws_db_event_subscription
  with source_ids / event_categories.
- ModifyGlobalCluster / FailoverGlobalCluster / SwitchoverGlobalCluster /
  RemoveFromGlobalCluster: load, apply DeletionProtection / EngineVersion / rename,
  persist, and return the wrapped GlobalCluster (were no-op empty <GlobalCluster/>).
- ModifyIntegration: load by name or ARN, apply DataFilter / Description / rename,
  persist, return the updated Integration (was no-op empty <Integration/>).
- RegisterDBProxyTargets / DescribeDBProxyTargets / DeregisterDBProxyTargets:
  persist registered RDS_INSTANCE / TRACKED_CLUSTER targets and reflect them on
  Describe (were a register-succeeds / describe-empty stub).

Updated the extras unit tests that encoded the old stub shapes (now require the
AWS-mandated params + assert the round-trips); added focused round-trip tests for
event-sub source ids, proxy targets, and global-cluster deletion protection. All
three RDS tfacc shards (param/option/event-global) still pass end-to-end.
@vieiralucas vieiralucas merged commit 14c9b5c into main Jun 25, 2026
103 checks passed
@vieiralucas vieiralucas deleted the worktree-bughunt-rds-extras branch June 25, 2026 23:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant