Skip to content

Commit ecfb8a3

Browse files
Anil Kothurisagarp337
authored andcommitted
Added - Support for ExaDB-D Exascale Integration
1 parent 9f613c8 commit ecfb8a3

24 files changed

+1122
-13
lines changed

examples/database/db_systems/db_exacs/resources.tf

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,4 +206,43 @@ resource "oci_database_pluggable_database" "test_pluggable_database" {
206206
pdb_admin_password = "BEstrO0ng_#11"
207207
pdb_name = "SalesPdb"
208208
tde_wallet_password = "BEstrO0ng_#11"
209-
}
209+
}
210+
211+
resource "oci_database_cloud_exadata_infrastructure_configure_exascale_management" "test_cloud_exadata_infrastructure_configure_exascale_management" {
212+
cloud_exadata_infrastructure_id = oci_database_cloud_exadata_infrastructure.test_cloud_exadata_infrastructure.id
213+
total_storage_in_gbs = var.cloud_exadata_infrastructure_configure_exascale_management_total_storage_in_gbs
214+
}
215+
216+
resource "oci_database_exascale_db_storage_vault" "test_exascale_db_storage_exacs_vault" {
217+
#Required
218+
availability_domain = data.oci_identity_availability_domain.ad.name
219+
compartment_id = var.compartment_ocid
220+
display_name = "ExampleExascaleDbStorageVault"
221+
high_capacity_database_storage {
222+
total_size_in_gbs = 2048
223+
}
224+
exadata_infrastructure_id = oci_database_cloud_exadata_infrastructure_configure_exascale_management.test_cloud_exadata_infrastructure_configure_exascale_management.id
225+
}
226+
227+
resource "oci_database_cloud_vm_cluster" "test_exascale_cloud_vm_cluster" {
228+
#Required
229+
backup_subnet_id = oci_core_subnet.subnet_backup.id
230+
cloud_exadata_infrastructure_id = oci_database_cloud_exadata_infrastructure.test_cloud_exadata_infrastructure.id
231+
compartment_id = var.compartment_ocid
232+
cpu_core_count = var.cloud_vm_cluster_cpu_core_count
233+
display_name = "MyTFExascaleVmClusterExaCs"
234+
gi_version = var.cloud_vm_cluster_gi_version
235+
hostname = var.cloud_vm_cluster_hostname
236+
ssh_public_keys = [var.ssh_public_key]
237+
subnet_id = oci_core_subnet.subnet.id
238+
239+
#Optional
240+
exascale_db_storage_vault_id = oci_database_exascale_db_storage_vault.test_exascale_db_storage_exacs_vault.id
241+
db_node_storage_size_in_gbs = var.cloud_vm_cluster_db_node_storage_size_in_gbs
242+
db_servers = [data.oci_database_db_servers.test_cloud_db_servers.db_servers.0.id, data.oci_database_db_servers.test_cloud_db_servers.db_servers.1.id]
243+
memory_size_in_gbs = var.cloud_vm_cluster_memory_size_in_gbs
244+
ocpu_count = var.cloud_vm_cluster_ocpu_count
245+
scan_listener_port_tcp = var.cloud_vm_cluster_scan_listener_port_tcp
246+
scan_listener_port_tcp_ssl = var.cloud_vm_cluster_scan_listener_port_tcp_ssl
247+
subscription_id = var.tenant_subscription_id
248+
}

examples/database/db_systems/db_exacs/variables.tf

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,4 +157,8 @@ variable "cloud_vm_cluster_db_node_storage_size_in_gbs" {
157157

158158
variable "cloud_vm_cluster_db_servers" {
159159
default = []
160-
}
160+
}
161+
162+
variable "cloud_exadata_infrastructure_configure_exascale_management_total_storage_in_gbs" {
163+
default = 4096
164+
}
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
// Copyright (c) 2017, 2024, Oracle and/or its affiliates. All rights reserved.
2+
// Licensed under the Mozilla Public License v2.0
3+
4+
package integrationtest
5+
6+
import (
7+
"fmt"
8+
"strconv"
9+
"testing"
10+
11+
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
12+
"github.com/hashicorp/terraform-plugin-testing/terraform"
13+
14+
"github.com/oracle/terraform-provider-oci/httpreplay"
15+
"github.com/oracle/terraform-provider-oci/internal/acctest"
16+
17+
"github.com/oracle/terraform-provider-oci/internal/resourcediscovery"
18+
19+
"github.com/oracle/terraform-provider-oci/internal/utils"
20+
)
21+
22+
var (
23+
DatabaseCloudExadataInfrastructureConfigureExascaleManagementRepresentation = map[string]interface{}{
24+
"cloud_exadata_infrastructure_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_database_cloud_exadata_infrastructure.test_cloud_exadata_infrastructure.id}`},
25+
"total_storage_in_gbs": acctest.Representation{RepType: acctest.Required, Create: `4096`},
26+
}
27+
28+
DatabaseCloudExadataInfrastructureConfigureExascaleManagementResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_database_cloud_exadata_infrastructure", "test_cloud_exadata_infrastructure", acctest.Required, acctest.Create, DatabaseCloudExadataInfrastructureRepresentation) +
29+
AvailabilityDomainConfig
30+
)
31+
32+
// issue-routing-tag: database/ExaCS
33+
func TestDatabaseCloudExadataInfrastructureConfigureExascaleManagementResource_basic(t *testing.T) {
34+
httpreplay.SetScenario("TestDatabaseCloudExadataInfrastructureConfigureExascaleManagementResource_basic")
35+
defer httpreplay.SaveScenario()
36+
37+
config := acctest.ProviderTestConfig()
38+
39+
compartmentId := utils.GetEnvSettingWithBlankDefault("compartment_ocid")
40+
compartmentIdVariableStr := fmt.Sprintf("variable \"compartment_id\" { default = \"%s\" }\n", compartmentId)
41+
42+
resourceName := "oci_database_cloud_exadata_infrastructure_configure_exascale_management.test_cloud_exadata_infrastructure_configure_exascale_management"
43+
44+
var resId string
45+
// Save TF content to Create resource with only required properties. This has to be exactly the same as the config part in the create step in the test.
46+
acctest.SaveConfigContent(config+compartmentIdVariableStr+DatabaseCloudExadataInfrastructureConfigureExascaleManagementResourceDependencies+
47+
acctest.GenerateResourceFromRepresentationMap("oci_database_cloud_exadata_infrastructure_configure_exascale_management", "test_cloud_exadata_infrastructure_configure_exascale_management", acctest.Required, acctest.Create, DatabaseCloudExadataInfrastructureConfigureExascaleManagementRepresentation), "database", "cloudExadataInfrastructureConfigureExascaleManagement", t)
48+
49+
acctest.ResourceTest(t, nil, []resource.TestStep{
50+
// verify Create
51+
{
52+
Config: config + compartmentIdVariableStr + DatabaseCloudExadataInfrastructureConfigureExascaleManagementResourceDependencies +
53+
acctest.GenerateResourceFromRepresentationMap("oci_database_cloud_exadata_infrastructure_configure_exascale_management", "test_cloud_exadata_infrastructure_configure_exascale_management", acctest.Required, acctest.Create, DatabaseCloudExadataInfrastructureConfigureExascaleManagementRepresentation),
54+
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
55+
resource.TestCheckResourceAttrSet(resourceName, "cloud_exadata_infrastructure_id"),
56+
resource.TestCheckResourceAttr(resourceName, "total_storage_in_gbs", "4096"),
57+
58+
func(s *terraform.State) (err error) {
59+
resId, err = acctest.FromInstanceState(s, resourceName, "id")
60+
if isEnableExportCompartment, _ := strconv.ParseBool(utils.GetEnvSettingWithDefault("enable_export_compartment", "true")); isEnableExportCompartment {
61+
if errExport := resourcediscovery.TestExportCompartmentWithResourceName(&resId, &compartmentId, resourceName); errExport != nil {
62+
return errExport
63+
}
64+
}
65+
return err
66+
},
67+
),
68+
},
69+
})
70+
}

internal/integrationtest/database_cloud_exadata_infrastructure_test.go

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ var (
3939

4040
DatabaseDatabaseCloudExadataInfrastructureDataSourceRepresentation = map[string]interface{}{
4141
"compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`},
42-
"cluster_placement_group_id": acctest.Representation{RepType: acctest.Optional, Create: `FakeClusterPlacementGroupId`},
42+
"cluster_placement_group_id": acctest.Representation{RepType: acctest.Optional, Create: `${var.cpgId}`},
4343
"display_name": acctest.Representation{RepType: acctest.Optional, Create: `tstExaInfra`, Update: `displayName2`},
4444
"state": acctest.Representation{RepType: acctest.Optional, Create: `AVAILABLE`},
4545
"filter": acctest.RepresentationGroup{RepType: acctest.Required, Group: DatabaseCloudExadataInfrastructureDataSourceFilterRepresentation}}
@@ -58,7 +58,7 @@ var (
5858
"display_name": acctest.Representation{RepType: acctest.Required, Create: `tstExaInfra`, Update: `displayName2`},
5959
"shape": acctest.Representation{RepType: acctest.Required, Create: `Exadata.X8M`},
6060
"compute_count": acctest.Representation{RepType: acctest.Required, Create: `2`}, // required for shape Exadata.X8M
61-
"cluster_placement_group_id": acctest.Representation{RepType: acctest.Optional, Create: `FakeClusterPlacementGroupId`},
61+
"cluster_placement_group_id": acctest.Representation{RepType: acctest.Optional, Create: `${var.cpgId}`},
6262
"customer_contacts": acctest.RepresentationGroup{RepType: acctest.Optional, Group: DatabaseCloudExadataInfrastructureCustomerContactsRepresentation},
6363
"defined_tags": acctest.Representation{RepType: acctest.Optional, Create: `${map("${oci_identity_tag_namespace.tag-namespace1.name}.${oci_identity_tag.tag1.name}", "value")}`, Update: `${map("${oci_identity_tag_namespace.tag-namespace1.name}.${oci_identity_tag.tag1.name}", "updatedValue")}`},
6464
"freeform_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"Department": "Finance"}, Update: map[string]string{"Department": "Accounting"}},
@@ -125,7 +125,8 @@ var (
125125
"name": acctest.Representation{RepType: acctest.Required, Create: `NOVEMBER`, Update: `DECEMBER`},
126126
}
127127

128-
DatabaseCloudExadataInfrastructureResourceDependencies = AvailabilityDomainConfig + DefinedTagsDependencies
128+
DatabaseCloudExadataInfrastructureResourceDependencies = AvailabilityDomainConfig + DefinedTagsDependencies +
129+
`variable "cpgId" { default = "" }`
129130
)
130131

131132
// issue-routing-tag: database/ExaCS
@@ -178,7 +179,7 @@ func TestDatabaseCloudExadataInfrastructureResource_basic(t *testing.T) {
178179
acctest.GenerateResourceFromRepresentationMap("oci_database_cloud_exadata_infrastructure", "test_cloud_exadata_infrastructure", acctest.Optional, acctest.Create, DatabaseCloudExadataInfrastructureRepresentation),
179180
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
180181
resource.TestCheckResourceAttrSet(resourceName, "availability_domain"),
181-
resource.TestCheckResourceAttr(resourceName, "cluster_placement_group_id", "FakeClusterPlacementGroupId"),
182+
resource.TestCheckResourceAttrSet(resourceName, "cluster_placement_group_id"),
182183
resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId),
183184
resource.TestCheckResourceAttr(resourceName, "compute_count", "2"),
184185
resource.TestCheckResourceAttr(resourceName, "customer_contacts.#", "1"),
@@ -225,7 +226,7 @@ func TestDatabaseCloudExadataInfrastructureResource_basic(t *testing.T) {
225226
})),
226227
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
227228
resource.TestCheckResourceAttrSet(resourceName, "availability_domain"),
228-
resource.TestCheckResourceAttr(resourceName, "cluster_placement_group_id", "FakeClusterPlacementGroupId"),
229+
resource.TestCheckResourceAttrSet(resourceName, "cluster_placement_group_id"),
229230
resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentIdU),
230231
resource.TestCheckResourceAttr(resourceName, "compute_count", "2"),
231232
resource.TestCheckResourceAttr(resourceName, "customer_contacts.#", "1"),
@@ -267,7 +268,7 @@ func TestDatabaseCloudExadataInfrastructureResource_basic(t *testing.T) {
267268
acctest.GenerateResourceFromRepresentationMap("oci_database_cloud_exadata_infrastructure", "test_cloud_exadata_infrastructure", acctest.Optional, acctest.Update, DatabaseCloudExadataInfrastructureRepresentation),
268269
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
269270
resource.TestCheckResourceAttrSet(resourceName, "availability_domain"),
270-
resource.TestCheckResourceAttr(resourceName, "cluster_placement_group_id", "FakeClusterPlacementGroupId"),
271+
resource.TestCheckResourceAttrSet(resourceName, "cluster_placement_group_id"),
271272
resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId),
272273
resource.TestCheckResourceAttr(resourceName, "compute_count", "2"),
273274
resource.TestCheckResourceAttr(resourceName, "customer_contacts.#", "1"),
@@ -309,22 +310,23 @@ func TestDatabaseCloudExadataInfrastructureResource_basic(t *testing.T) {
309310
compartmentIdVariableStr + DatabaseCloudExadataInfrastructureResourceDependencies +
310311
acctest.GenerateResourceFromRepresentationMap("oci_database_cloud_exadata_infrastructure", "test_cloud_exadata_infrastructure", acctest.Optional, acctest.Update, DatabaseCloudExadataInfrastructureRepresentation),
311312
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
312-
resource.TestCheckResourceAttr(datasourceName, "cluster_placement_group_id", "FakeClusterPlacementGroupId"),
313+
resource.TestCheckResourceAttrSet(datasourceName, "cluster_placement_group_id"),
313314
resource.TestCheckResourceAttr(datasourceName, "compartment_id", compartmentId),
314315
resource.TestCheckResourceAttr(datasourceName, "display_name", "displayName2"),
315316
resource.TestCheckResourceAttr(datasourceName, "state", "AVAILABLE"),
316317

317318
resource.TestCheckResourceAttr(datasourceName, "cloud_exadata_infrastructures.#", "1"),
318319
resource.TestCheckResourceAttrSet(datasourceName, "cloud_exadata_infrastructures.0.availability_domain"),
319320
resource.TestCheckResourceAttrSet(datasourceName, "cloud_exadata_infrastructures.0.available_storage_size_in_gbs"),
320-
resource.TestCheckResourceAttr(datasourceName, "cloud_exadata_infrastructures.0.cluster_placement_group_id", "FakeClusterPlacementGroupId"),
321+
resource.TestCheckResourceAttrSet(datasourceName, "cloud_exadata_infrastructures.0.cluster_placement_group_id"),
321322
resource.TestCheckResourceAttr(datasourceName, "cloud_exadata_infrastructures.0.compartment_id", compartmentId),
322323
resource.TestCheckResourceAttr(datasourceName, "cloud_exadata_infrastructures.0.compute_count", "2"),
323324
resource.TestCheckResourceAttr(datasourceName, "cloud_exadata_infrastructures.0.customer_contacts.#", "1"),
324-
resource.TestCheckResourceAttr(datasourceName, "cloud_exadata_infrastructures.0.defined_file_system_configurations.#", "0"),
325+
resource.TestCheckResourceAttr(datasourceName, "cloud_exadata_infrastructures.0.defined_file_system_configurations.#", "9"),
325326
//resource.TestCheckResourceAttrSet(datasourceName, "cloud_exadata_infrastructures.0.db_server_version"),
326327
resource.TestCheckResourceAttr(datasourceName, "cloud_exadata_infrastructures.0.customer_contacts.0.email", "[email protected]"),
327328
resource.TestCheckResourceAttr(datasourceName, "cloud_exadata_infrastructures.0.display_name", "displayName2"),
329+
resource.TestCheckResourceAttr(datasourceName, "cloud_exadata_infrastructures.0.exascale_config.#", "0"),
328330
resource.TestCheckResourceAttr(datasourceName, "cloud_exadata_infrastructures.0.freeform_tags.%", "1"),
329331
resource.TestCheckResourceAttr(resourceName, "system_tags.%", "0"),
330332
resource.TestCheckResourceAttrSet(datasourceName, "cloud_exadata_infrastructures.0.id"),
@@ -367,10 +369,11 @@ func TestDatabaseCloudExadataInfrastructureResource_basic(t *testing.T) {
367369
resource.TestCheckResourceAttr(singularDatasourceName, "compartment_id", compartmentId),
368370
resource.TestCheckResourceAttr(singularDatasourceName, "compute_count", "2"),
369371
resource.TestCheckResourceAttr(singularDatasourceName, "customer_contacts.#", "1"),
370-
resource.TestCheckResourceAttr(singularDatasourceName, "defined_file_system_configurations.#", "0"),
372+
resource.TestCheckResourceAttr(singularDatasourceName, "defined_file_system_configurations.#", "9"),
371373
//resource.TestCheckResourceAttrSet(singularDatasourceName, "db_server_version"),
372374
resource.TestCheckResourceAttr(singularDatasourceName, "customer_contacts.0.email", "[email protected]"),
373375
resource.TestCheckResourceAttr(singularDatasourceName, "display_name", "displayName2"),
376+
resource.TestCheckResourceAttr(singularDatasourceName, "exascale_config.#", "0"),
374377
resource.TestCheckResourceAttr(singularDatasourceName, "freeform_tags.%", "1"),
375378
resource.TestCheckResourceAttr(resourceName, "system_tags.%", "0"),
376379
resource.TestCheckResourceAttrSet(singularDatasourceName, "id"),

0 commit comments

Comments
 (0)