diff --git a/.changelog/45205.txt b/.changelog/45205.txt new file mode 100644 index 000000000000..3db6869e7008 --- /dev/null +++ b/.changelog/45205.txt @@ -0,0 +1,3 @@ +```release-note:bug +resource/aws_odb_cloud_vm_cluster: Fix incorrect validation error when arguments are configured using variables. This addresses a regression introduced in [v6.22.0](https://github.com/hashicorp/terraform-provider-aws/blob/main/CHANGELOG.md#6220-november-20-2025) +``` \ No newline at end of file diff --git a/internal/service/odb/cloud_vm_cluster.go b/internal/service/odb/cloud_vm_cluster.go index bf145895c97c..a0f68a4a5d9a 100644 --- a/internal/service/odb/cloud_vm_cluster.go +++ b/internal/service/odb/cloud_vm_cluster.go @@ -880,17 +880,17 @@ type cloudVMCDbIormConfigResourceModel struct { } func (r cloudVmClusterResourceModel) isNetworkIdAndExadataInfraIdPresent() bool { - return !r.OdbNetworkId.IsNull() && !r.OdbNetworkId.IsUnknown() && !r.CloudExadataInfrastructureId.IsNull() && !r.CloudExadataInfrastructureId.IsUnknown() + return !r.OdbNetworkId.IsNull() && !r.CloudExadataInfrastructureId.IsNull() } func (r cloudVmClusterResourceModel) isNetworkARNAndExadataInfraARNPresent() bool { - return !r.OdbNetworkArn.IsNull() && !r.OdbNetworkArn.IsUnknown() && !r.CloudExadataInfrastructureArn.IsNull() && !r.CloudExadataInfrastructureArn.IsUnknown() + return !r.OdbNetworkArn.IsNull() && !r.CloudExadataInfrastructureArn.IsNull() } func (r cloudVmClusterResourceModel) isNetworkARNAndIdPresent() bool { - return (!r.OdbNetworkId.IsNull() && !r.OdbNetworkId.IsUnknown()) && (!r.OdbNetworkArn.IsNull() && !r.OdbNetworkArn.IsUnknown()) + return !r.OdbNetworkId.IsNull() && !r.OdbNetworkArn.IsNull() } func (r cloudVmClusterResourceModel) isExadataInfraARNAndIdPresent() bool { - return (!r.CloudExadataInfrastructureId.IsNull() && !r.CloudExadataInfrastructureId.IsUnknown()) && (!r.CloudExadataInfrastructureArn.IsNull() && !r.CloudExadataInfrastructureArn.IsUnknown()) + return !r.CloudExadataInfrastructureId.IsNull() && !r.CloudExadataInfrastructureArn.IsNull() } diff --git a/internal/service/odb/cloud_vm_cluster_test.go b/internal/service/odb/cloud_vm_cluster_test.go index b7e561c8d87c..5a311c71e8f6 100644 --- a/internal/service/odb/cloud_vm_cluster_test.go +++ b/internal/service/odb/cloud_vm_cluster_test.go @@ -332,6 +332,32 @@ func TestAccODBCloudVmCluster_usingARN(t *testing.T) { }) } +func TestAccODBCloudVmCluster_variables(t *testing.T) { + ctx := acctest.Context(t) + if testing.Short() { + t.Skip("skipping long-running test in short mode") + } + + vmcDisplayName := sdkacctest.RandomWithPrefix(vmClusterTestEntity.vmClusterDisplayNamePrefix) + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(ctx, t) + vmClusterTestEntity.testAccPreCheck(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.ODBServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: vmClusterTestEntity.testAccCheckCloudVmClusterDestroy(ctx), + Steps: []resource.TestStep{ + // nosemgrep:ci.semgrep.acctest.checks.replace-planonly-checks + { + Config: testAccCloudVmClusterConfig_useVariables(vmcDisplayName), + PlanOnly: true, + ExpectNonEmptyPlan: true, + }, + }, + }) +} + func (cloudVmClusterResourceTest) testAccCheckCloudVmClusterDestroy(ctx context.Context) resource.TestCheckFunc { return func(s *terraform.State) error { conn := acctest.Provider.Meta().(*conns.AWSClient).ODBClient(ctx) @@ -383,6 +409,43 @@ func (cloudVmClusterResourceTest) testAccPreCheck(ctx context.Context, t *testin } } +func testAccCloudVmClusterConfig_useVariables(rName string) string { + return fmt.Sprintf(` +variable cloud_exadata_infrastructure_id { + default = "exa_gjrmtxl4qk" + type = string + description = "ODB Exadata Infrastructure Resource ID" + +} +variable odb_network_id { + default = "odbnet_3l9st3litg" + type = string + description = "ODB Network" +} + +resource "aws_odb_cloud_vm_cluster" "test" { + display_name = %[1]q + cloud_exadata_infrastructure_id = var.cloud_exadata_infrastructure_id + cpu_core_count = 6 + gi_version = "23.0.0.0" + hostname_prefix = "apollo12" + ssh_public_keys = ["public-ssh-key"] + odb_network_id = var.odb_network_id + is_local_backup_enabled = true + is_sparse_diskgroup_enabled = true + license_model = "LICENSE_INCLUDED" + data_storage_size_in_tbs = 20.0 + db_servers = ["db-server-1", "db-server-2"] + db_node_storage_size_in_gbs = 120.0 + memory_size_in_gbs = 60 + data_collection_options { + is_diagnostics_events_enabled = false + is_health_monitoring_enabled = false + is_incident_logs_enabled = false + } +} +`, rName) +} func (cloudVmClusterResourceTest) testAccCloudVmClusterConfigBasic(vmClusterDisplayName, sshKey string) (string, string) { exaInfraDisplayName := sdkacctest.RandomWithPrefix(vmClusterTestEntity.exaInfraDisplayNamePrefix) odbNetDisplayName := sdkacctest.RandomWithPrefix(vmClusterTestEntity.odbNetDisplayNamePrefix)