Skip to content

Commit acd92ab

Browse files
Tawen KanMaxrovr
authored andcommitted
Added - Support for Operations Insights : Autonomous Database IAM based connections
1 parent 4e5a119 commit acd92ab

12 files changed

+1122
-53
lines changed
Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
// Copyright (c) 2017, 2024, Oracle and/or its affiliates. All rights reserved.
2+
// Licensed under the Mozilla Public License v2.0
3+
4+
variable "tenancy_ocid" {}
5+
variable "user_ocid" {}
6+
variable "fingerprint" {}
7+
variable "private_key_path" {}
8+
variable "region" {}
9+
variable "compartment_ocid" {}
10+
variable "autonomous_database_id" {}
11+
variable "service_name" {}
12+
variable "adb_host" {}
13+
variable "adb_port" {}
14+
15+
provider "oci" {
16+
tenancy_ocid = var.tenancy_ocid
17+
user_ocid = var.user_ocid
18+
fingerprint = var.fingerprint
19+
private_key_path = var.private_key_path
20+
region = var.region
21+
}
22+
23+
resource "oci_identity_tag_namespace" "tag-namespace1" {
24+
compartment_id = var.tenancy_ocid
25+
description = "example tag namespace"
26+
name = "examples-tag-namespace-all"
27+
is_retired = false
28+
}
29+
30+
31+
resource "oci_identity_tag" "tag1" {
32+
description = "example tag"
33+
name = "example-tag"
34+
tag_namespace_id = oci_identity_tag_namespace.tag-namespace1.id
35+
is_cost_tracking = false
36+
is_retired = false
37+
}
38+
39+
variable "database_insight_database_type" {
40+
default = ["ADW-S"]
41+
}
42+
43+
variable "database_insight_credential_details_credential_type" {
44+
default = "CREDENTIALS_BY_IAM"
45+
}
46+
47+
variable "database_insight_credential_details_role" {
48+
default = "NORMAL"
49+
}
50+
51+
variable "database_insight_database_resource_type" {
52+
default = "autonomousdatabase"
53+
}
54+
55+
variable "database_insight_defined_tags_value" {
56+
default = "value"
57+
}
58+
59+
variable "database_insight_entity_source" {
60+
default = "AUTONOMOUS_DATABASE"
61+
}
62+
63+
variable "database_insight_fields" {
64+
default = ["databaseName", "databaseType", "compartmentId", "databaseDisplayName", "freeformTags", "definedTags"]
65+
}
66+
67+
variable "database_insight_freeform_tags" {
68+
default = { "bar-key" = "value" }
69+
}
70+
71+
variable "resource_status" {
72+
default = "ENABLED"
73+
}
74+
75+
variable "is_advanced_features_enabled" {
76+
default = true
77+
}
78+
79+
// Create Database insight for EM managed External Database
80+
resource "oci_opsi_database_insight" "test_database_insight" {
81+
#Required
82+
compartment_id = var.compartment_ocid
83+
entity_source = var.database_insight_entity_source
84+
is_advanced_features_enabled = var.is_advanced_features_enabled
85+
86+
#Optional
87+
service_name = var.service_name
88+
database_id = var.autonomous_database_id
89+
database_resource_type = var.database_insight_database_resource_type
90+
credential_details {
91+
credential_type = var.database_insight_credential_details_credential_type
92+
}
93+
connection_details {
94+
host_name = var.adb_host
95+
port = var.adb_port
96+
protocol = "TCPS"
97+
service_name = var.service_name
98+
}
99+
//defined_tags = "${map("${oci_identity_tag_namespace.tag-namespace1.name}.${oci_identity_tag.tag1.name}", "${var.database_insight_defined_tags_value}")}"
100+
//freeform_tags = var.database_insight_freeform_tags
101+
status = var.resource_status
102+
}
103+
104+
variable "database_insight_state" {
105+
default = ["ACTIVE"]
106+
}
107+
108+
variable "database_insight_status" {
109+
default = ["ENABLED"]
110+
}
111+
112+
// List opsi autonomous database insights
113+
data "oci_opsi_database_insights" "test_database_insights" {
114+
#Optional
115+
compartment_id = var.compartment_ocid
116+
database_type = var.database_insight_database_type
117+
fields = var.database_insight_fields
118+
state = var.database_insight_state
119+
status = var.database_insight_status
120+
}
121+
122+
// Get an OPSI autonomous database insight
123+
data "oci_opsi_database_insight" "test_database_insight" {
124+
database_insight_id = oci_opsi_database_insight.test_database_insight.id
125+
}
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
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/oracle/terraform-provider-oci/internal/acctest"
11+
"github.com/oracle/terraform-provider-oci/internal/utils"
12+
13+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
14+
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
15+
16+
"github.com/oracle/terraform-provider-oci/httpreplay"
17+
)
18+
19+
var (
20+
autonomousDatabaseInsightRequiredRepresentation = map[string]interface{}{
21+
"compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`},
22+
"database_id": acctest.Representation{RepType: acctest.Required, Create: `${var.autonomous_database_id}`},
23+
"database_resource_type": acctest.Representation{RepType: acctest.Required, Create: `autonomousdatabase`},
24+
"is_advanced_features_enabled": acctest.Representation{RepType: acctest.Required, Create: `true`},
25+
"credential_details": acctest.RepresentationGroup{RepType: acctest.Required, Group: autonomousDatabaseInsightCredentialDetailsRepresentation},
26+
"connection_details": acctest.RepresentationGroup{RepType: acctest.Required, Group: autonomousDatabaseInsightConnectionDetailsRepresentation},
27+
"status": acctest.Representation{RepType: acctest.Required, Create: `DISABLED`},
28+
"entity_source": acctest.Representation{RepType: acctest.Required, Create: `AUTONOMOUS_DATABASE`, Update: `AUTONOMOUS_DATABASE`},
29+
//"defined_tags": acctest.Representation{RepType: acctest.Optional, Create: `${map("${oci_identity_tag_namespace.tag-namespace1.name}.${oci_identity_tag.tag1.name}", "value")}`},
30+
//"freeform_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"bar-key": "value"}},
31+
"lifecycle": acctest.RepresentationGroup{RepType: acctest.Optional, Group: ignoreChangesADIRepresentation},
32+
}
33+
)
34+
35+
// issue-routing-tag: opsi/controlPlane
36+
func TestOpsiAutonomousResourceDatabaseInsight(t *testing.T) {
37+
httpreplay.SetScenario("TestOpsiAutonomousResourceDatabaseInsight")
38+
defer httpreplay.SaveScenario()
39+
40+
config := acctest.ProviderTestConfig()
41+
42+
compartmentId := utils.GetEnvSettingWithBlankDefault("compartment_ocid")
43+
compartmentIdVariableStr := fmt.Sprintf("variable \"compartment_id\" { default = \"%s\" }\n", compartmentId)
44+
45+
autonomousDatabaseId := utils.GetEnvSettingWithBlankDefault("autonomous_database_id")
46+
autonomousDatabaseIdVariableStr := fmt.Sprintf("variable \"autonomous_database_id\" { default = \"%s\" }\n", autonomousDatabaseId)
47+
48+
adbHostName := utils.GetEnvSettingWithBlankDefault("adb_host")
49+
adbHostNameVariableStr := fmt.Sprintf("variable \"adb_host\" { default = \"%s\" }\n", adbHostName)
50+
51+
adbPort := utils.GetEnvSettingWithBlankDefault("adb_port")
52+
adbPortVariableStr := fmt.Sprintf("variable \"adb_port\" { default = \"%s\" }\n", adbPort)
53+
54+
serviceName := utils.GetEnvSettingWithBlankDefault("service_name")
55+
serviceNameVariableStr := fmt.Sprintf("variable \"service_name\" { default = \"%s\" }\n", serviceName)
56+
57+
/*secretId := utils.GetEnvSettingWithBlankDefault("secret_id")
58+
secretIdVariableStr := fmt.Sprintf("variable \"secret_id\" { default = \"%s\" }\n", secretId)
59+
60+
userName := utils.GetEnvSettingWithBlankDefault("user_name")
61+
userNamedVariableStr := fmt.Sprintf("variable \"user_name\" { default = \"%s\" }\n", userName)*/
62+
63+
resourceName := "oci_opsi_database_insight.test_database_insight"
64+
65+
// Save TF content to Create resource with optional properties. This has to be exactly the same as the config part in the "Create with optionals" step in the test.
66+
acctest.SaveConfigContent(config+compartmentIdVariableStr+autonomousDatabaseIdVariableStr+adbHostNameVariableStr+adbPortVariableStr+serviceNameVariableStr+AutonomousDatabaseInsightResourceDependencies+
67+
acctest.GenerateResourceFromRepresentationMap("oci_opsi_database_insight", "test_database_insight", acctest.Required, acctest.Create, autonomousDatabaseInsightRequiredRepresentation), "opsi", "databaseInsight", t)
68+
69+
acctest.ResourceTest(t, testAccCheckOpsiDatabaseInsightDestroy, []resource.TestStep{
70+
// verify Create with Required
71+
{
72+
Config: config + compartmentIdVariableStr + autonomousDatabaseIdVariableStr + adbHostNameVariableStr + adbPortVariableStr + serviceNameVariableStr + AutonomousDatabaseInsightResourceDependencies +
73+
acctest.GenerateResourceFromRepresentationMap("oci_opsi_database_insight", "test_database_insight", acctest.Required, acctest.Create, autonomousDatabaseInsightRequiredRepresentation),
74+
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
75+
resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId),
76+
resource.TestCheckResourceAttr(resourceName, "status", "DISABLED"),
77+
78+
func(s *terraform.State) (err error) {
79+
_, err = acctest.FromInstanceState(s, resourceName, "id")
80+
return err
81+
},
82+
),
83+
},
84+
// verify resource import
85+
{
86+
Config: config + AutonomousDatabaseInsightRequiredOnlyResource,
87+
ImportState: true,
88+
ImportStateVerify: true,
89+
ImportStateVerifyIgnore: []string{
90+
"entity_source",
91+
"is_advanced_features_enable",
92+
},
93+
ResourceName: resourceName,
94+
},
95+
})
96+
}

0 commit comments

Comments
 (0)