Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Valkey engine support for ElastiCache resources #39745

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

relu
Copy link
Contributor

@relu relu commented Oct 16, 2024

Description

Adding support for the newly introduced Valkey engine in AWS ElastiCache.

Relations

Closes #39641

References

Output from Acceptance Testing

% make testacc TESTS=TestAccElastiCacheCluster PKG=elasticache
make: Verifying source code with gofmt...
==> Checking that code complies with gofmt requirements...
TF_ACC=1 go1.23.2 test ./internal/service/elasticache/... -v -count 1 -parallel 20 -run='TestAccElastiCacheCluster'  -timeout 360m
2024/10/16 21:29:03 Initializing Terraform AWS Provider...
=== RUN   TestAccElastiCacheClusterDataSource_basic
=== PAUSE TestAccElastiCacheClusterDataSource_basic
=== RUN   TestAccElastiCacheClusterDataSource_Engine_Redis_LogDeliveryConfigurations
=== PAUSE TestAccElastiCacheClusterDataSource_Engine_Redis_LogDeliveryConfigurations
=== RUN   TestAccElastiCacheCluster_Engine_memcached
=== PAUSE TestAccElastiCacheCluster_Engine_memcached
=== RUN   TestAccElastiCacheCluster_Engine_redis
=== PAUSE TestAccElastiCacheCluster_Engine_redis
=== RUN   TestAccElastiCacheCluster_disappears
=== PAUSE TestAccElastiCacheCluster_disappears
=== RUN   TestAccElastiCacheCluster_Engine_redis_v5
=== PAUSE TestAccElastiCacheCluster_Engine_redis_v5
=== RUN   TestAccElastiCacheCluster_Engine_None
=== PAUSE TestAccElastiCacheCluster_Engine_None
=== RUN   TestAccElastiCacheCluster_PortRedis_default
=== PAUSE TestAccElastiCacheCluster_PortRedis_default
=== RUN   TestAccElastiCacheCluster_ParameterGroupName_default
=== PAUSE TestAccElastiCacheCluster_ParameterGroupName_default
=== RUN   TestAccElastiCacheCluster_ipDiscovery
=== PAUSE TestAccElastiCacheCluster_ipDiscovery
=== RUN   TestAccElastiCacheCluster_port
=== PAUSE TestAccElastiCacheCluster_port
=== RUN   TestAccElastiCacheCluster_snapshotsWithUpdates
=== PAUSE TestAccElastiCacheCluster_snapshotsWithUpdates
=== RUN   TestAccElastiCacheCluster_NumCacheNodes_decrease
=== PAUSE TestAccElastiCacheCluster_NumCacheNodes_decrease
=== RUN   TestAccElastiCacheCluster_NumCacheNodes_increase
=== PAUSE TestAccElastiCacheCluster_NumCacheNodes_increase
=== RUN   TestAccElastiCacheCluster_NumCacheNodes_increaseWithPreferredAvailabilityZones
=== PAUSE TestAccElastiCacheCluster_NumCacheNodes_increaseWithPreferredAvailabilityZones
=== RUN   TestAccElastiCacheCluster_vpc
=== PAUSE TestAccElastiCacheCluster_vpc
=== RUN   TestAccElastiCacheCluster_multiAZInVPC
=== PAUSE TestAccElastiCacheCluster_multiAZInVPC
=== RUN   TestAccElastiCacheCluster_AZMode_memcached
=== PAUSE TestAccElastiCacheCluster_AZMode_memcached
=== RUN   TestAccElastiCacheCluster_AZMode_redis
=== PAUSE TestAccElastiCacheCluster_AZMode_redis
=== RUN   TestAccElastiCacheCluster_EngineVersion_memcached
=== PAUSE TestAccElastiCacheCluster_EngineVersion_memcached
=== RUN   TestAccElastiCacheCluster_EngineVersion_redis
=== PAUSE TestAccElastiCacheCluster_EngineVersion_redis
=== RUN   TestAccElastiCacheCluster_NodeTypeResize_memcached
=== PAUSE TestAccElastiCacheCluster_NodeTypeResize_memcached
=== RUN   TestAccElastiCacheCluster_NodeTypeResize_redis
=== PAUSE TestAccElastiCacheCluster_NodeTypeResize_redis
=== RUN   TestAccElastiCacheCluster_NumCacheNodes_redis
=== PAUSE TestAccElastiCacheCluster_NumCacheNodes_redis
=== RUN   TestAccElastiCacheCluster_ReplicationGroupID_availabilityZone
=== PAUSE TestAccElastiCacheCluster_ReplicationGroupID_availabilityZone
=== RUN   TestAccElastiCacheCluster_ReplicationGroupID_transitEncryption
=== PAUSE TestAccElastiCacheCluster_ReplicationGroupID_transitEncryption
=== RUN   TestAccElastiCacheCluster_ReplicationGroupID_singleReplica
=== PAUSE TestAccElastiCacheCluster_ReplicationGroupID_singleReplica
=== RUN   TestAccElastiCacheCluster_ReplicationGroupID_multipleReplica
=== PAUSE TestAccElastiCacheCluster_ReplicationGroupID_multipleReplica
=== RUN   TestAccElastiCacheCluster_Memcached_finalSnapshot
=== PAUSE TestAccElastiCacheCluster_Memcached_finalSnapshot
=== RUN   TestAccElastiCacheCluster_Redis_finalSnapshot
=== PAUSE TestAccElastiCacheCluster_Redis_finalSnapshot
=== RUN   TestAccElastiCacheCluster_Redis_autoMinorVersionUpgrade
=== PAUSE TestAccElastiCacheCluster_Redis_autoMinorVersionUpgrade
=== RUN   TestAccElastiCacheCluster_Engine_Redis_LogDeliveryConfigurations
=== PAUSE TestAccElastiCacheCluster_Engine_Redis_LogDeliveryConfigurations
=== RUN   TestAccElastiCacheCluster_tags
=== PAUSE TestAccElastiCacheCluster_tags
=== RUN   TestAccElastiCacheCluster_tagWithOtherModification
=== PAUSE TestAccElastiCacheCluster_tagWithOtherModification
=== RUN   TestAccElastiCacheCluster_TransitEncryption
=== PAUSE TestAccElastiCacheCluster_TransitEncryption
=== RUN   TestAccElastiCacheCluster_outpost_memcached
=== PAUSE TestAccElastiCacheCluster_outpost_memcached
=== RUN   TestAccElastiCacheCluster_outpost_redis
=== PAUSE TestAccElastiCacheCluster_outpost_redis
=== RUN   TestAccElastiCacheCluster_outpostID_memcached
=== PAUSE TestAccElastiCacheCluster_outpostID_memcached
=== RUN   TestAccElastiCacheCluster_outpostID_redis
=== PAUSE TestAccElastiCacheCluster_outpostID_redis
=== CONT  TestAccElastiCacheClusterDataSource_basic
=== CONT  TestAccElastiCacheCluster_EngineVersion_redis
=== CONT  TestAccElastiCacheCluster_Redis_autoMinorVersionUpgrade
=== CONT  TestAccElastiCacheCluster_ReplicationGroupID_transitEncryption
=== CONT  TestAccElastiCacheCluster_port
=== CONT  TestAccElastiCacheCluster_vpc
=== CONT  TestAccElastiCacheCluster_NumCacheNodes_increaseWithPreferredAvailabilityZones
=== CONT  TestAccElastiCacheCluster_NumCacheNodes_decrease
=== CONT  TestAccElastiCacheCluster_snapshotsWithUpdates
=== CONT  TestAccElastiCacheCluster_outpost_memcached
=== CONT  TestAccElastiCacheCluster_outpostID_redis
=== CONT  TestAccElastiCacheCluster_outpostID_memcached
=== CONT  TestAccElastiCacheCluster_outpost_redis
=== CONT  TestAccElastiCacheCluster_EngineVersion_memcached
=== CONT  TestAccElastiCacheCluster_AZMode_redis
=== CONT  TestAccElastiCacheCluster_AZMode_memcached
=== CONT  TestAccElastiCacheCluster_multiAZInVPC
=== CONT  TestAccElastiCacheCluster_Memcached_finalSnapshot
=== CONT  TestAccElastiCacheCluster_tagWithOtherModification
=== CONT  TestAccElastiCacheCluster_NumCacheNodes_increase
=== NAME  TestAccElastiCacheCluster_outpost_redis
    cluster_test.go:1360: skipping since no Outposts found
--- SKIP: TestAccElastiCacheCluster_outpost_redis (2.10s)
=== CONT  TestAccElastiCacheCluster_Redis_finalSnapshot
=== NAME  TestAccElastiCacheCluster_outpostID_memcached
    cluster_test.go:1400: skipping since no Outposts found
--- SKIP: TestAccElastiCacheCluster_outpostID_memcached (2.10s)
=== CONT  TestAccElastiCacheCluster_ReplicationGroupID_multipleReplica
=== NAME  TestAccElastiCacheCluster_outpost_memcached
    cluster_test.go:1320: skipping since no Outposts found
--- SKIP: TestAccElastiCacheCluster_outpost_memcached (2.11s)
=== CONT  TestAccElastiCacheCluster_TransitEncryption
=== NAME  TestAccElastiCacheCluster_outpostID_redis
    cluster_test.go:1433: skipping since no Outposts found
--- SKIP: TestAccElastiCacheCluster_outpostID_redis (2.15s)
=== CONT  TestAccElastiCacheCluster_NumCacheNodes_redis
--- PASS: TestAccElastiCacheCluster_Memcached_finalSnapshot (7.28s)
=== CONT  TestAccElastiCacheCluster_ReplicationGroupID_availabilityZone
--- PASS: TestAccElastiCacheCluster_NumCacheNodes_redis (5.84s)
=== CONT  TestAccElastiCacheCluster_ReplicationGroupID_singleReplica
=== NAME  TestAccElastiCacheCluster_tagWithOtherModification
    cluster_test.go:1241: Step 1/2 error: Error running apply: exit status 1
        
        Error: creating ElastiCache Cache Cluster (tf-acc-test-8771268403948989507): operation error ElastiCache: CreateCacheCluster, https response error StatusCode: 400, RequestID: 76d59ae0-81a7-4deb-82c3-c3ee8130e922, InvalidParameterCombination: Cannot find version 5.0.5 for redis
        
          with aws_elasticache_cluster.test,
          on terraform_plugin_test.tf line 12, in resource "aws_elasticache_cluster" "test":
          12: resource "aws_elasticache_cluster" "test" {
        
--- FAIL: TestAccElastiCacheCluster_tagWithOtherModification (17.20s)
=== CONT  TestAccElastiCacheCluster_Engine_redis_v5
--- PASS: TestAccElastiCacheClusterDataSource_basic (656.07s)
=== CONT  TestAccElastiCacheCluster_ipDiscovery
--- PASS: TestAccElastiCacheCluster_AZMode_memcached (659.91s)
=== CONT  TestAccElastiCacheCluster_ParameterGroupName_default
--- PASS: TestAccElastiCacheCluster_port (660.11s)
=== CONT  TestAccElastiCacheCluster_PortRedis_default
--- PASS: TestAccElastiCacheCluster_TransitEncryption (674.20s)
=== CONT  TestAccElastiCacheCluster_Engine_None
--- PASS: TestAccElastiCacheCluster_Engine_None (0.96s)
=== CONT  TestAccElastiCacheCluster_NodeTypeResize_redis
--- PASS: TestAccElastiCacheCluster_AZMode_redis (719.91s)
=== CONT  TestAccElastiCacheCluster_tags
--- PASS: TestAccElastiCacheCluster_Engine_redis_v5 (702.73s)
=== CONT  TestAccElastiCacheCluster_Engine_redis
--- PASS: TestAccElastiCacheCluster_vpc (743.14s)
=== CONT  TestAccElastiCacheCluster_disappears
--- PASS: TestAccElastiCacheCluster_snapshotsWithUpdates (754.71s)
=== CONT  TestAccElastiCacheCluster_Engine_memcached
--- PASS: TestAccElastiCacheCluster_Redis_autoMinorVersionUpgrade (780.85s)
=== CONT  TestAccElastiCacheCluster_Engine_Redis_LogDeliveryConfigurations
--- PASS: TestAccElastiCacheCluster_multiAZInVPC (841.20s)
=== CONT  TestAccElastiCacheClusterDataSource_Engine_Redis_LogDeliveryConfigurations
--- PASS: TestAccElastiCacheCluster_Redis_finalSnapshot (900.54s)
=== CONT  TestAccElastiCacheCluster_NodeTypeResize_memcached
--- PASS: TestAccElastiCacheCluster_NumCacheNodes_decrease (990.90s)
--- PASS: TestAccElastiCacheCluster_NumCacheNodes_increaseWithPreferredAvailabilityZones (1257.50s)
--- PASS: TestAccElastiCacheCluster_PortRedis_default (626.08s)
--- PASS: TestAccElastiCacheCluster_NumCacheNodes_increase (1302.93s)
--- PASS: TestAccElastiCacheCluster_ParameterGroupName_default (670.45s)
--- PASS: TestAccElastiCacheCluster_ipDiscovery (693.55s)
--- PASS: TestAccElastiCacheCluster_tags (690.69s)
--- PASS: TestAccElastiCacheCluster_Engine_memcached (658.70s)
--- PASS: TestAccElastiCacheCluster_EngineVersion_memcached (1426.33s)
--- PASS: TestAccElastiCacheCluster_Engine_redis (712.84s)
--- PASS: TestAccElastiCacheCluster_disappears (738.13s)
--- PASS: TestAccElastiCacheCluster_ReplicationGroupID_singleReplica (1513.76s)
--- PASS: TestAccElastiCacheCluster_ReplicationGroupID_multipleReplica (1519.87s)
--- PASS: TestAccElastiCacheCluster_ReplicationGroupID_availabilityZone (1536.47s)
--- PASS: TestAccElastiCacheCluster_ReplicationGroupID_transitEncryption (1629.24s)
--- PASS: TestAccElastiCacheClusterDataSource_Engine_Redis_LogDeliveryConfigurations (954.35s)
--- PASS: TestAccElastiCacheCluster_Engine_Redis_LogDeliveryConfigurations (1214.61s)
--- PASS: TestAccElastiCacheCluster_NodeTypeResize_memcached (1347.40s)
--- PASS: TestAccElastiCacheCluster_NodeTypeResize_redis (1597.59s)
--- PASS: TestAccElastiCacheCluster_EngineVersion_redis (4752.04s)
FAIL
FAIL	github.com/hashicorp/terraform-provider-aws/internal/service/elasticache	4758.107s
FAIL
make: *** [testacc] Error 1

WIP

Copy link

Community Note

Voting for Prioritization

  • Please vote on this pull request by adding a 👍 reaction to the original post to help the community and maintainers prioritize this pull request.
  • Please see our prioritization guide for information on how we prioritize.
  • Please do not leave "+1" or other comments that do not add relevant new information or questions, they generate extra noise for issue followers and do not help prioritize the request.

For Submitters

  • Review the contribution guide relating to the type of change you are making to ensure all of the necessary steps have been taken.
  • For new resources and data sources, use skaff to generate scaffolding with comments detailing common expectations.
  • Whether or not the branch has been rebased will not impact prioritization, but doing so is always a welcome surprise.

@github-actions github-actions bot added documentation Introduces or discusses updates to documentation. tests PRs: expanded test coverage. Issues: expanded coverage, enhancements to test infrastructure. service/elasticache Issues and PRs that pertain to the elasticache service. needs-triage Waiting for first response or review from a maintainer. labels Oct 16, 2024
Copy link
Contributor

@chlunde chlunde left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cool!

Did you consider if the following needs to be updated, as they have a check for Redis only?

  • clusterForceNewOnMemcachedNodeTypeChange
  • clusterValidateMemcachedSnapshotIdentifier

@relu
Copy link
Contributor Author

relu commented Oct 16, 2024

I'm in the process of running the acceptance tests and will post updates to the PR as they are completed. I'm going to run for the following namespaces:

TestAccElastiCacheCluster TestAccElastiCacheGlobalReplicationGroup TestAccElastiCacheParameterGroup TestAccElastiCacheReplicationGroup TestAccElastiCacheReservedNodeOffering TestAccElastiCacheServerlessCacheDataSource TestAccElastiCacheServerlessCache

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Introduces or discusses updates to documentation. needs-triage Waiting for first response or review from a maintainer. service/elasticache Issues and PRs that pertain to the elasticache service. tests PRs: expanded test coverage. Issues: expanded coverage, enhancements to test infrastructure.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Enhancement]: Add Valkey support to Elasticache resources
2 participants