Add GlobalReplicationGroup resource support - #237
backlog-burndown-bot wants to merge 1 commit into
Conversation
Adds the ElastiCache Global Datastore resource, which backs cross-region replication. The configuration is declarative apart from what the API forces into hooks: ModifyGlobalReplicationGroup accepts only one logical change per request, deleting a datastore requires disassociating every secondary member first, and the Describe response carries no top-level automatic-failover field, so that value is derived from member state. Rebuilds the approach prototyped in aws-controllers-k8s#228 onto current main and incorporates the review findings from that PR. Co-authored-by: NicholasBlaskey <31451191+NicholasBlaskey@users.noreply.github.com>
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: backlog-burndown-bot The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
|
Hi @backlog-burndown-bot. Thanks for your PR. I'm waiting for a aws-controllers-k8s member to verify that this patch is reasonable to test. If it is, they should reply with Tip We noticed you've done this a few times! Consider joining the org to skip this step and gain Once the patch is verified, the new status will be reflected by the I understand the commands that are listed here. DetailsInstructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. |
Issue #, if available: fixes aws-controllers-k8s/community#1048
Description of changes:
Adds the ElastiCache
GlobalReplicationGroupresource, which backs the Global Datastore feature for cross-region replication. The configuration is declarative apart from what the API forces into hooks:ModifyGlobalReplicationGroupaccepts only one logical change per request, deleting a datastore requires disassociating every secondary member first, and the Describe response carries no top-level automatic-failover field, so that value is derived from live member state (which is whyShowMemberInfois set).This supersedes #228, rebuilt on current
mainand incorporating that PR's review feedback. It is co-authored with @NicholasBlaskey, whose live-AWS testing established the API's one-change-per-request and engine-upgrade grouping rules that this implementation relies on.Points a reviewer may want to weigh, called out rather than buried:
DecreaseNodeGroupsInGlobalReplicationGrouprequires naming which shards survive, and the issue does not specify a policy. This retains the lowest-ordered shard IDs, sorted so the choice does not depend on the order AWS returns them in. Deterministic and safe for data, but users cannot pick specific shards.spec.cacheParameterGroupNameis an engine-upgrade input, not observable state. ElastiCache copies it onto members and never reports it back on the datastore, so it is sent only alongside an engine-family or major-version upgrade and produces no delta of its own. A major upgrade without it is rejected terminally.elasticache-kind-e2eis a required presubmit on every elasticache PR, so the scaling decisions are tested over the delta classifier instead.Excluded on purpose, as pre-existing and outside this resource's scope:
util.EngineVersionsMatchpanics on an empty version string and is reached the same way fromcache_clusterandreplication_group, so it is guarded locally here rather than changed for all three; andprimaryReplicationGroupRefdoes not inherit the CEL immutability rule that guardsprimaryReplicationGroupID, which is general ACK reference behaviour.Agent-assisted: authored by an AI agent (
backlog-burndown-bot) under human supervision — @gobos12By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.