diff --git a/mmv1/products/memorystore/Instance.yaml b/mmv1/products/memorystore/Instance.yaml index b4f3f54ea8a0..242298662e8a 100644 --- a/mmv1/products/memorystore/Instance.yaml +++ b/mmv1/products/memorystore/Instance.yaml @@ -257,8 +257,7 @@ properties: default_from_api: true - name: 'engineVersion' type: String - description: "Optional. Immutable. Engine version of the instance. " - immutable: true + description: "Optional. Engine version of the instance." default_from_api: true - name: 'engineConfigs' type: KeyValuePairs diff --git a/mmv1/third_party/terraform/services/memorystore/resource_memorystore_instance_test.go b/mmv1/third_party/terraform/services/memorystore/resource_memorystore_instance_test.go index e7d024a00db3..5d5a61c5d226 100644 --- a/mmv1/third_party/terraform/services/memorystore/resource_memorystore_instance_test.go +++ b/mmv1/third_party/terraform/services/memorystore/resource_memorystore_instance_test.go @@ -186,6 +186,49 @@ func TestAccMemorystoreInstance_updateDeletionProtection(t *testing.T) { }) } +// Validate that engine version is updated for the cluster +func TestAccMemorystoreInstance_updateEngineVersion(t *testing.T) { + t.Parallel() + + name := fmt.Sprintf("tf-test-%d", acctest.RandInt(t)) + + acctest.VcrTest(t, resource.TestCase{ + PreCheck: func() { acctest.AccTestPreCheck(t) }, + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t), + CheckDestroy: testAccCheckMemorystoreInstanceDestroyProducer(t), + Steps: []resource.TestStep{ + { + // create cluster with engine version 7.2 + Config: createOrUpdateMemorystoreInstance(&InstanceParams{ + name: name, + shardCount: 3, + zoneDistributionMode: "MULTI_ZONE", + engineVersion: "VALKEY_7_2", + }), + }, + { + ResourceName: "google_memorystore_instance.test", + ImportState: true, + ImportStateVerify: true, + }, + { + // update cluster with engine version 8.0 + Config: createOrUpdateMemorystoreInstance(&InstanceParams{ + name: name, + shardCount: 3, + zoneDistributionMode: "MULTI_ZONE", + engineVersion: "VALKEY_8_0", + }), + }, + { + ResourceName: "google_memorystore_instance.test", + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + // Validate that persistence config is updated for the cluster func TestAccMemorystoreInstance_updatePersistence(t *testing.T) { t.Parallel() @@ -234,6 +277,7 @@ type InstanceParams struct { zone string deletionProtectionEnabled bool persistenceMode string + engineVersion string } func createOrUpdateMemorystoreInstance(params *InstanceParams) string { @@ -278,6 +322,7 @@ resource "google_memorystore_instance" "test" { project_id = data.google_project.project.project_id } deletion_protection_enabled = %t + engine_version = "%s" engine_configs = { %s } @@ -314,5 +359,5 @@ resource "google_compute_network" "producer_net" { data "google_project" "project" { } -`, params.name, params.replicaCount, params.shardCount, params.nodeType, params.deletionProtectionEnabled, strBuilder.String(), zoneDistributionConfigBlock, persistenceBlock, lifecycleBlock, params.name, params.name, params.name) +`, params.name, params.replicaCount, params.shardCount, params.nodeType, params.deletionProtectionEnabled, params.engineVersion, strBuilder.String(), zoneDistributionConfigBlock, persistenceBlock, lifecycleBlock, params.name, params.name, params.name) }