Skip to content

feat(rds): enable RDS storage autoscaling (MaxAllocatedStorage) (#540) - #562

Open
wz-gsa wants to merge 1 commit into
feat/oracle-19c-stig-brokered-rdsfrom
feat/oracle-storage-autoscaling-540
Open

feat(rds): enable RDS storage autoscaling (MaxAllocatedStorage) (#540)#562
wz-gsa wants to merge 1 commit into
feat/oracle-19c-stig-brokered-rdsfrom
feat/oracle-storage-autoscaling-540

Conversation

@wz-gsa

@wz-gsa wz-gsa commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

What

Adds RDS storage autoscaling so storage grows automatically up to a configured cap when free space runs low — avoiding out-of-space outages and manual cf update-service -c '{"storage":…}' bumps. Engine-agnostic; enabled on the Oracle plan now (before any customers land) so the plan needs no later migration (per @cweibel's #537 review comment).

Changes

  • catalog RDSPlan.maxAllocatedStorage (yaml); oracle-se2-license-included-dev sets 20 GB start / 100 GB max.
  • Options max_storage (-c JSON) lets a customer raise the per-instance ceiling. Validate() bounds it: must be the platform MaxAllocatedStorage and, when both supplied, > storage (RDS requires Max > Allocated).
  • RDSInstance carries MaxAllocatedStorage; init() = option-over-plan; modify() = option-over-existing and never silently disables an already-enabled policy (0 = leave unchanged).
  • create/modify workers set MaxAllocatedStorage on the RDS input only when it exceeds the allocation; otherwise omit (autoscaling off).

Testing

  • prepareCreateDbInput / prepareModifyDbInstanceInput: enabled (max > allocated) + omitted (max == allocated) cases.
  • Options.Validate: over-platform-max rejected, max ≤ storage rejected, valid accepted.
  • Full go test ./..., go vet, gofmt, golangci-lint (fresh cache) all green. No RDS client interface change.
  • Docs updated (docs/oracle19c/README.md).

Notes

Autoscaling growth is passed through as cloud.gov credits (documented). SE2 GovCloud autoscaling support should be empirically reconfirmed during the WS15 live proof (#558), but the API/plumbing is standard RDS shared with pg/mysql.

Base is the Oracle integration branch feat/oracle-19c-stig-brokered-rds (per the branching strategy — not main).

Closes #540.

Add storage-autoscaling support so RDS grows storage automatically up to a
configured cap when free space runs low, avoiding out-of-space outages and
manual storage bumps. Engine-agnostic; enabled on the Oracle plan now (before
any customers land) so the plan needs no later migration.

- catalog RDSPlan gains `maxAllocatedStorage` (yaml); oracle-se2 plan sets
  starting 20 GB + max 100 GB.
- Options gains `max_storage` (-c JSON) so a customer can raise the ceiling
  per instance; Validate() bounds it: must be <= the platform MaxAllocatedStorage
  and, when both supplied, > storage (RDS requires Max > Allocated).
- RDSInstance carries MaxAllocatedStorage; init() takes option-over-plan, modify()
  takes option-over-existing and never silently disables an enabled policy (0 =
  leave unchanged).
- create/modify workers set MaxAllocatedStorage on the RDS input only when it
  exceeds the allocation; otherwise omit (autoscaling off).
- Tests: create/modify prepare-input (enabled + omitted cases), Options.Validate
  (over-platform-max rejected, max<=storage rejected, valid accepted). Docs updated.

No RDS client interface change. Cost note: autoscaling growth is passed through
as cloud.gov credits (documented). Closes #540.
@wz-gsa
wz-gsa requested a review from a team as a code owner July 28, 2026 20:16
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