Skip to content

Commit 986f31f

Browse files
committed
add all resource and DS
1 parent d76d96c commit 986f31f

21 files changed

+7385
-2
lines changed

internal/service/odb/cloud_autonomous_vm_cluster.go

Lines changed: 649 additions & 0 deletions
Large diffs are not rendered by default.

internal/service/odb/cloud_autonomous_vm_cluster_data_source.go

Lines changed: 345 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 190 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,190 @@
1+
// Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved.
2+
3+
package odb_test
4+
5+
import (
6+
"context"
7+
"errors"
8+
"fmt"
9+
"testing"
10+
11+
"github.com/aws/aws-sdk-go-v2/service/odb"
12+
sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest"
13+
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
14+
"github.com/hashicorp/terraform-plugin-testing/terraform"
15+
"github.com/hashicorp/terraform-provider-aws/internal/acctest"
16+
"github.com/hashicorp/terraform-provider-aws/internal/conns"
17+
"github.com/hashicorp/terraform-provider-aws/internal/create"
18+
tfodb "github.com/hashicorp/terraform-provider-aws/internal/service/odb"
19+
"github.com/hashicorp/terraform-provider-aws/internal/tfresource"
20+
"github.com/hashicorp/terraform-provider-aws/names"
21+
)
22+
23+
type autonomousVMClusterDSTest struct {
24+
exaInfraDisplayNamePrefix string
25+
odbNetDisplayNamePrefix string
26+
autonomousVmClusterDisplayNamePrefix string
27+
}
28+
29+
var autonomousVMClusterDSTestEntity = autonomousVMClusterDSTest{
30+
exaInfraDisplayNamePrefix: "Ofake-exa",
31+
odbNetDisplayNamePrefix: "odb-net",
32+
autonomousVmClusterDisplayNamePrefix: "Ofake-avmc",
33+
}
34+
35+
func TestAccODBCloudAutonomousVmClusterDataSource_basic(t *testing.T) {
36+
ctx := acctest.Context(t)
37+
38+
if testing.Short() {
39+
t.Skip("skipping long-running test in short mode")
40+
}
41+
avmcResource := "aws_odb_cloud_autonomous_vm_cluster.test"
42+
avmcDataSource := "data.aws_odb_cloud_autonomous_vm_cluster.test"
43+
44+
resource.ParallelTest(t, resource.TestCase{
45+
PreCheck: func() {
46+
acctest.PreCheck(ctx, t)
47+
autonomousVMClusterDSTestEntity.testAccPreCheck(ctx, t)
48+
},
49+
ErrorCheck: acctest.ErrorCheck(t, names.ODBServiceID),
50+
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories,
51+
CheckDestroy: autonomousVMClusterDSTestEntity.testAccCheckCloudAutonomousVmClusterDestroy(ctx),
52+
Steps: []resource.TestStep{
53+
{
54+
Config: autonomousVMClusterDSTestEntity.avmcBasic(),
55+
Check: resource.ComposeAggregateTestCheckFunc(
56+
resource.TestCheckResourceAttrPair(avmcResource, names.AttrID, avmcDataSource, names.AttrID),
57+
),
58+
},
59+
},
60+
})
61+
}
62+
63+
func (autonomousVMClusterDSTest) testAccCheckCloudAutonomousVmClusterDestroy(ctx context.Context) resource.TestCheckFunc {
64+
return func(s *terraform.State) error {
65+
conn := acctest.Provider.Meta().(*conns.AWSClient).ODBClient(ctx)
66+
67+
for _, rs := range s.RootModule().Resources {
68+
if rs.Type != "aws_odb_cloud_autonomous_vm_cluster" {
69+
continue
70+
}
71+
72+
_, err := tfodb.FindCloudAutonomousVmClusterByID(ctx, conn, rs.Primary.ID)
73+
if tfresource.NotFound(err) {
74+
return nil
75+
}
76+
if err != nil {
77+
return create.Error(names.ODB, create.ErrActionCheckingDestroyed, tfodb.ResNameCloudAutonomousVmCluster, rs.Primary.ID, err)
78+
}
79+
80+
return create.Error(names.ODB, create.ErrActionCheckingDestroyed, tfodb.ResNameCloudAutonomousVmCluster, rs.Primary.ID, errors.New("not destroyed"))
81+
}
82+
83+
return nil
84+
}
85+
}
86+
func (autonomousVMClusterDSTest) testAccPreCheck(ctx context.Context, t *testing.T) {
87+
conn := acctest.Provider.Meta().(*conns.AWSClient).ODBClient(ctx)
88+
input := odb.ListCloudAutonomousVmClustersInput{}
89+
_, err := conn.ListCloudAutonomousVmClusters(ctx, &input)
90+
if acctest.PreCheckSkipError(err) {
91+
t.Skipf("skipping acceptance testing: %s", err)
92+
}
93+
if err != nil {
94+
t.Fatalf("unexpected PreCheck error: %s", err)
95+
}
96+
}
97+
98+
func (autonomousVMClusterDSTest) avmcBasic() string {
99+
exaInfraDisplayName := sdkacctest.RandomWithPrefix(autonomousVMClusterDSTestEntity.exaInfraDisplayNamePrefix)
100+
odbNetworkDisplayName := sdkacctest.RandomWithPrefix(autonomousVMClusterDSTestEntity.odbNetDisplayNamePrefix)
101+
avmcDisplayName := sdkacctest.RandomWithPrefix(autonomousVMClusterDSTestEntity.autonomousVmClusterDisplayNamePrefix)
102+
domain := acctest.RandomDomainName()
103+
emailAddress := acctest.RandomEmailAddress(domain)
104+
exaInfraRes := autonomousVMClusterDSTestEntity.exaInfra(exaInfraDisplayName, emailAddress)
105+
odbNetRes := autonomousVMClusterDSTestEntity.oracleDBNetwork(odbNetworkDisplayName)
106+
res := fmt.Sprintf(`
107+
%s
108+
109+
%s
110+
111+
data "aws_odb_db_servers_list" "test" {
112+
cloud_exadata_infrastructure_id = aws_odb_cloud_exadata_infrastructure.test.id
113+
}
114+
115+
resource "aws_odb_cloud_autonomous_vm_cluster" "test" {
116+
cloud_exadata_infrastructure_id = aws_odb_cloud_exadata_infrastructure.test.id
117+
odb_network_id = aws_odb_network.test.id
118+
display_name = %[3]q
119+
autonomous_data_storage_size_in_tbs = 5
120+
memory_per_oracle_compute_unit_in_gbs = 2
121+
total_container_databases = 1
122+
cpu_core_count_per_node = 40
123+
license_model = "LICENSE_INCLUDED"
124+
db_servers = [for db_server in data.aws_odb_db_servers_list.test.db_servers : db_server.id]
125+
scan_listener_port_tls = 8561
126+
scan_listener_port_non_tls = 1024
127+
maintenance_window {
128+
preference = "NO_PREFERENCE"
129+
}
130+
tags = {
131+
"env" = "dev"
132+
}
133+
134+
}
135+
136+
137+
data "aws_odb_cloud_autonomous_vm_cluster" "test" {
138+
id = aws_odb_cloud_autonomous_vm_cluster.test.id
139+
140+
}
141+
`, exaInfraRes, odbNetRes, avmcDisplayName)
142+
143+
return res
144+
}
145+
146+
func (autonomousVMClusterDSTest) oracleDBNetwork(odbNetName string) string {
147+
networkRes := fmt.Sprintf(`
148+
149+
150+
151+
152+
resource "aws_odb_network" "test" {
153+
display_name = %[1]q
154+
availability_zone_id = "use1-az6"
155+
client_subnet_cidr = "10.2.0.0/24"
156+
backup_subnet_cidr = "10.2.1.0/24"
157+
s3_access = "DISABLED"
158+
zero_etl_access = "DISABLED"
159+
}
160+
161+
162+
`, odbNetName)
163+
return networkRes
164+
}
165+
166+
func (autonomousVMClusterDSTest) exaInfra(exaInfraName, emailAddress string) string {
167+
exaInfraRes := fmt.Sprintf(`
168+
169+
170+
171+
172+
resource "aws_odb_cloud_exadata_infrastructure" "test" {
173+
display_name = %[1]q
174+
shape = "Exadata.X9M"
175+
storage_count = 3
176+
compute_count = 2
177+
availability_zone_id = "use1-az6"
178+
customer_contacts_to_send_to_oci = ["%[2]s"]
179+
maintenance_window {
180+
custom_action_timeout_in_mins = 16
181+
is_custom_action_timeout_enabled = true
182+
patching_mode = "ROLLING"
183+
preference = "NO_PREFERENCE"
184+
}
185+
}
186+
187+
188+
`, exaInfraName, emailAddress)
189+
return exaInfraRes
190+
}

0 commit comments

Comments
 (0)