Skip to content

Commit 8145f87

Browse files
svsatheMaxrovr
authored andcommitted
Added - Support for DBM : Support External MySQL Databases
1 parent 498d362 commit 8145f87

File tree

28 files changed

+3230
-12
lines changed

28 files changed

+3230
-12
lines changed
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
variable "tenancy_ocid" {}
2+
variable "user_ocid" {}
3+
variable "fingerprint" {}
4+
variable "private_key_path" {}
5+
variable "region" {}
6+
7+
provider "oci" {
8+
//version = "5.36.0"
9+
tenancy_ocid = var.tenancy_ocid
10+
user_ocid = var.user_ocid
11+
fingerprint = var.fingerprint
12+
private_key_path = var.private_key_path
13+
region = var.region
14+
}
15+
16+
variable "compartment_id" {
17+
default = "ocid1.test.oc1..<unique_ID>EXAMPLE-compartmentId-Value"
18+
}
19+
20+
/*Creates an external MySQL database resource */
21+
resource "oci_database_management_external_my_sql_database" "test_external_my_sql_database" {
22+
#Required
23+
compartment_id = var.compartment_id
24+
db_name = "ExampleNameTest"
25+
}
26+
27+
data "oci_database_management_external_my_sql_databases" "test_external_my_sql_databases" {
28+
#Required
29+
compartment_id = var.compartment_id
30+
31+
#Optional
32+
name = "ExampleNameTest"
33+
}
34+
35+
/*Creates a database connecotor resource. Connector requires an external MySQL database to associate with. */
36+
resource "oci_database_management_external_my_sql_database_connector" "test_external_my_sql_database_connector" {
37+
#Required
38+
compartment_id = "ocid1.test.oc1..<unique_ID>EXAMPLE-compartmentId-Value"
39+
connector_details {
40+
#Required
41+
credential_type = "MYSQL_EXTERNAL_NON_SSL_CREDENTIALS"
42+
display_name = "EXAMPLE-Name-Test"
43+
external_database_id = "ocid1.test.oc1..<unique_ID>EXAMPLE-externalDatabase-Value"
44+
host_name = "exampleHost"
45+
macs_agent_id = "ocid1.test.oc1..<unique_ID>EXAMPLE-agent-Value"
46+
network_protocol = "TCP"
47+
port = "10"
48+
ssl_secret_id = "ocid1.test.oc1..<unique_ID>EXAMPLE-secret-Value"
49+
}
50+
is_test_connection_param = "false"
51+
}
52+
53+
data "oci_database_management_external_my_sql_database_connectors" "test_external_my_sql_database_connectors" {
54+
#Required
55+
compartment_id = var.compartment_id
56+
57+
#Optional
58+
name = "ExampleTest"
59+
}
60+
61+
/*To enable/disable database management, provide an external MySQL database OCID and connector OCID.
62+
"true" to enable and "false" to disable. In this example database management is being enabled for the external MySQL database
63+
using the given connector.*/
64+
resource "oci_database_management_external_my_sql_database_external_mysql_databases_management" "test_external_my_sql_database_external_mysql_databases_management" {
65+
#Required
66+
67+
external_my_sql_database_id = "ocid1.test.oc1..<unique_ID>EXAMPLE-database-Value"
68+
69+
enable_external_mysql_database = "true"
70+
71+
#Optional
72+
connector_id ="ocid1.test.oc1..<unique_ID>EXAMPLE-connector-Value"
73+
}

examples/databasemanagement/mysql/main.tf

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
// Copyright (c) 2017, 2020, Oracle and/or its affiliates. All rights reserved.
22
// Licensed under the Mozilla Public License v2.0
3-
3+
44
variable "tenancy_ocid" {}
5+
variable "start_time" {}
6+
variable "end_time" {}
57
variable "user_ocid" {}
68
variable "fingerprint" {}
79
variable "private_key_path" {}
810
variable "region" {}
911

1012
provider "oci" {
13+
// version = "5.36.0"
1114
tenancy_ocid = var.tenancy_ocid
1215
user_ocid = var.user_ocid
1316
fingerprint = var.fingerprint
@@ -16,7 +19,8 @@ provider "oci" {
1619
}
1720

1821
variable "compartment_id" {
19-
default = "<compartment.ocid>"
22+
23+
default = "ocid1.test.oc1..<unique_ID>EXAMPLE-compartment-Value"
2024
}
2125

2226
# List managed MySQL database resources in a compartment
@@ -42,6 +46,14 @@ data "oci_database_management_managed_my_sql_database_sql_data" "test_managed_my
4246
#Required
4347
managed_my_sql_database_id = data.oci_database_management_managed_my_sql_databases.test_managed_my_sql_databases.managed_my_sql_database_collection.0.items.0.id
4448
filter_column = "COUNT_STAR"
45-
start_time = replace(timeadd(timestamp(), "-2h"), "/Z/", ".000Z")
46-
end_time = replace(timestamp(), "/Z/", ".000Z")
47-
}
49+
50+
// The start_time and end_time of the time range to retrieve the SQL data of a Managed Database
51+
//in UTC in ISO-8601 format, for example "2024-04-14T17:23:13.000Z".
52+
start_time = var.start_time
53+
end_time = var.end_time
54+
55+
56+
}
57+
58+
59+

internal/integrationtest/database_management_external_my_sql_database_connector_test.go

Lines changed: 315 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
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+
"testing"
9+
10+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
11+
12+
"github.com/oracle/terraform-provider-oci/httpreplay"
13+
"github.com/oracle/terraform-provider-oci/internal/acctest"
14+
15+
"github.com/oracle/terraform-provider-oci/internal/utils"
16+
)
17+
18+
var (
19+
DatabaseManagementExternalMySqlDatabaseExternalMysqlDatabasesManagementRepresentation = map[string]interface{}{
20+
"connector_id": acctest.Representation{RepType: acctest.Required, Create: `${var.external_my_sql_database_connector_id}`},
21+
"external_my_sql_database_id": acctest.Representation{RepType: acctest.Required, Create: `${var.test_managed_database_id}`},
22+
"enable_external_mysql_database": acctest.Representation{RepType: acctest.Required, Create: `true`, Update: `false`},
23+
}
24+
)
25+
26+
// issue-routing-tag: database_management/default
27+
func TestDatabaseManagementExternalMySqlDatabaseExternalMysqlDatabasesManagementResource_basic(t *testing.T) {
28+
httpreplay.SetScenario("TestDatabaseManagementExternalMySqlDatabaseExternalMysqlDatabasesManagementResource_basic")
29+
defer httpreplay.SaveScenario()
30+
31+
config := acctest.ProviderTestConfig()
32+
33+
compartmentId := utils.GetEnvSettingWithBlankDefault("compartment_ocid")
34+
compartmentIdVariableStr := fmt.Sprintf("variable \"compartment_id\" { default = \"%s\" }\n", compartmentId)
35+
36+
external_my_sql_database_connector_id := utils.GetEnvSettingWithBlankDefault("external_my_sql_database_connector_id")
37+
externalMySqlDatabaseconnectorIdVariableStr := fmt.Sprintf("variable \"external_my_sql_database_connector_id\" { default = \"%s\" }\n", external_my_sql_database_connector_id)
38+
39+
test_managed_database_id := utils.GetEnvSettingWithBlankDefault("test_managed_database_id")
40+
testManagedDatabaseIdVariableStr := fmt.Sprintf("variable \"test_managed_database_id\" { default = \"%s\" }\n", test_managed_database_id)
41+
42+
resourceName := "oci_database_management_external_my_sql_database_external_mysql_databases_management.test_external_my_sql_database_external_mysql_databases_management"
43+
parentResourceName := "oci_database_management_external_my_sql_database_external_mysql_databases_management.test_external_my_sql_database_external_mysql_databases_management"
44+
// 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.
45+
acctest.SaveConfigContent(config+compartmentIdVariableStr+testManagedDatabaseIdVariableStr+externalMySqlDatabaseconnectorIdVariableStr+
46+
acctest.GenerateResourceFromRepresentationMap("oci_database_management_external_my_sql_database_external_mysql_databases_management", "test_external_my_sql_database_external_mysql_databases_management", acctest.Required, acctest.Create, DatabaseManagementExternalMySqlDatabaseExternalMysqlDatabasesManagementRepresentation), "databasemanagement", "externalMySqlDatabaseExternalMysqlDatabasesManagement", t)
47+
48+
acctest.ResourceTest(t, nil, []resource.TestStep{
49+
// create with enable
50+
{
51+
Config: config + compartmentIdVariableStr + testManagedDatabaseIdVariableStr + externalMySqlDatabaseconnectorIdVariableStr +
52+
acctest.GenerateResourceFromRepresentationMap("oci_database_management_external_my_sql_database_external_mysql_databases_management", "test_external_my_sql_database_external_mysql_databases_management", acctest.Required, acctest.Create, DatabaseManagementExternalMySqlDatabaseExternalMysqlDatabasesManagementRepresentation),
53+
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
54+
resource.TestCheckResourceAttrSet(resourceName, "connector_id"),
55+
resource.TestCheckResourceAttrSet(resourceName, "external_my_sql_database_id"),
56+
),
57+
},
58+
// verify enable
59+
{
60+
Config: config + compartmentIdVariableStr + testManagedDatabaseIdVariableStr + externalMySqlDatabaseconnectorIdVariableStr +
61+
acctest.GenerateResourceFromRepresentationMap("oci_database_management_external_my_sql_database_external_mysql_databases_management", "test_external_my_sql_database_external_mysql_databases_management", acctest.Required, acctest.Create, DatabaseManagementExternalMySqlDatabaseExternalMysqlDatabasesManagementRepresentation),
62+
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
63+
resource.TestCheckResourceAttr(parentResourceName, "enable_external_mysql_database", "true"),
64+
),
65+
},
66+
// delete before next Create
67+
{
68+
Config: config + compartmentIdVariableStr + testManagedDatabaseIdVariableStr + externalMySqlDatabaseconnectorIdVariableStr,
69+
},
70+
// create with enable and optional fields
71+
{
72+
Config: config + compartmentIdVariableStr + testManagedDatabaseIdVariableStr + externalMySqlDatabaseconnectorIdVariableStr +
73+
acctest.GenerateResourceFromRepresentationMap("oci_database_management_external_my_sql_database_external_mysql_databases_management", "test_external_my_sql_database_external_mysql_databases_management", acctest.Optional, acctest.Create, DatabaseManagementExternalMySqlDatabaseExternalMysqlDatabasesManagementRepresentation),
74+
75+
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
76+
resource.TestCheckResourceAttrSet(resourceName, "connector_id"),
77+
resource.TestCheckResourceAttrSet(resourceName, "external_my_sql_database_id"),
78+
),
79+
},
80+
// update to disable
81+
{
82+
Config: config + compartmentIdVariableStr + testManagedDatabaseIdVariableStr + externalMySqlDatabaseconnectorIdVariableStr +
83+
acctest.GenerateResourceFromRepresentationMap("oci_database_management_external_my_sql_database_external_mysql_databases_management", "test_external_my_sql_database_external_mysql_databases_management", acctest.Optional, acctest.Update, DatabaseManagementExternalMySqlDatabaseExternalMysqlDatabasesManagementRepresentation),
84+
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
85+
resource.TestCheckResourceAttrSet(resourceName, "connector_id"),
86+
resource.TestCheckResourceAttrSet(resourceName, "external_my_sql_database_id"),
87+
),
88+
},
89+
// verify disable
90+
{
91+
Config: config + compartmentIdVariableStr + testManagedDatabaseIdVariableStr + externalMySqlDatabaseconnectorIdVariableStr +
92+
acctest.GenerateResourceFromRepresentationMap("oci_database_management_external_my_sql_database_external_mysql_databases_management", "test_external_my_sql_database_external_mysql_databases_management", acctest.Optional, acctest.Update, DatabaseManagementExternalMySqlDatabaseExternalMysqlDatabasesManagementRepresentation),
93+
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
94+
resource.TestCheckResourceAttr(parentResourceName, "enable_external_mysql_database", "false"),
95+
),
96+
},
97+
})
98+
}

0 commit comments

Comments
 (0)