Skip to content

Commit d666079

Browse files
Terraform Team AutomationMeharwadeDivya
authored andcommitted
Added - Support for DBM: Database Eco System For External Databases
1 parent 95774d2 commit d666079

File tree

92 files changed

+16581
-1
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

92 files changed

+16581
-1
lines changed

examples/databasemanagement/main.tf

Lines changed: 324 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -468,4 +468,327 @@ data "oci_database_management_managed_database_preferred_credential" "test_manag
468468
#Required
469469
credential_name = var.managed_database_preferred_credential_credential_name
470470
managed_database_id = oci_database_management_managed_database.test_managed_database.id
471-
}
471+
}
472+
473+
####################### External DB System #########################
474+
variable "external_db_system_discovery_display_name" {
475+
default = "EXAMPLE-displayName-Value"
476+
}
477+
478+
variable "agent_id" {
479+
default = "ocid1.test.oc1..<unique_ID>EXAMPLE-agentId-Value"
480+
}
481+
482+
variable "external_db_system_database_management_config_license_model" {
483+
default = "LICENSE_INCLUDED"
484+
}
485+
486+
variable "external_db_system_display_name" {
487+
default = "EXAMPLE-displayName-Value"
488+
}
489+
490+
variable "db_host_name" {
491+
default = "EXAMPLE-hostName-Value"
492+
}
493+
494+
variable "db_port" {
495+
default = "1521"
496+
}
497+
498+
variable "db_service_name" {
499+
default = "EXAMPLE-service-Value"
500+
}
501+
502+
variable "db_user_name" {
503+
default = "EXAMPLE-userName-Value"
504+
}
505+
506+
variable "db_password_secret_id" {
507+
default = "ocid1.test.oc1..<unique_ID>EXAMPLE-passwordSecretId-Value"
508+
}
509+
510+
variable "db_credential_name" {
511+
default = "EXAMPLE-dbCredName-Value"
512+
}
513+
514+
variable "asm_host_name" {
515+
default = "EXAMPLE-hostName-Value"
516+
}
517+
518+
variable "asm_port" {
519+
default = "1521"
520+
}
521+
522+
variable "asm_service_name" {
523+
default = "EXAMPLE-service-Value"
524+
}
525+
526+
variable "asm_user_name" {
527+
default = "EXAMPLE-userName-Value"
528+
}
529+
530+
variable "asm_password_secret_id" {
531+
default = "ocid1.test.oc1..<unique_ID>EXAMPLE-passwordSecretId-Value"
532+
}
533+
534+
variable "asm_credential_name" {
535+
default = "EXAMPLE-asmCredName-Value"
536+
}
537+
538+
variable "external_asm_connector_display_name" {
539+
default = "asmConnectorName"
540+
}
541+
542+
variable "external_listener_connector_display_name" {
543+
default = "listenerConnectorName"
544+
}
545+
546+
variable "connector_agent_id" {
547+
default = "ocid1.test.oc1..<unique_ID>EXAMPLE-agentId-Value"
548+
}
549+
550+
# Create a new ExternalDbSystemDiscovery resource and discover an external DB System and its components.
551+
# Also add a connector to the discovered Oracle Container Database (CDB).
552+
resource "oci_database_management_external_db_system_discovery" "test_external_db_system_discovery" {
553+
#Required
554+
agent_id = var.agent_id
555+
compartment_id = var.compartment_id
556+
557+
#Optional
558+
display_name = var.external_db_system_discovery_display_name
559+
560+
# Patch the Discovery resource and add connector to the database component
561+
patch_operations {
562+
operation = "MERGE"
563+
selection = "discoveredComponents[?componentType == 'DATABASE'] | [0]"
564+
value {
565+
connector {
566+
agent_id = var.agent_id
567+
connection_info {
568+
component_type = "DATABASE"
569+
connection_credentials {
570+
credential_name = var.db_credential_name
571+
credential_type = "DETAILS"
572+
password_secret_id = var.db_password_secret_id
573+
role = "NORMAL"
574+
user_name = var.db_user_name
575+
}
576+
connection_string {
577+
host_name = var.db_host_name
578+
port = var.db_port
579+
protocol = "TCP"
580+
service = var.db_service_name
581+
}
582+
}
583+
connector_type = "MACS"
584+
display_name = "EXAMPLE-displayName-Value"
585+
}
586+
is_selected_for_monitoring = "true"
587+
}
588+
}
589+
590+
# Deselect the PDBs
591+
patch_operations {
592+
operation = "MERGE"
593+
selection = "discoveredComponents[?componentType == 'DATABASE'].pluggableDatabases"
594+
value {
595+
is_selected_for_monitoring = "false"
596+
}
597+
}
598+
}
599+
600+
# List ExternalDbSystemDiscovery resources
601+
data "oci_database_management_external_db_system_discoveries" "test_external_db_system_discoveries" {
602+
#Required
603+
compartment_id = var.compartment_id
604+
605+
#Optional
606+
display_name = var.external_db_system_discovery_display_name
607+
}
608+
609+
# Create a new ExternalDbSystem resource from ExternalDbSystemDiscovery resource
610+
resource "oci_database_management_external_db_system" "test_external_db_system" {
611+
#Required
612+
compartment_id = var.compartment_id
613+
db_system_discovery_id = oci_database_management_external_db_system_discovery.test_external_db_system_discovery.id
614+
615+
#Optional
616+
database_management_config {
617+
#Required
618+
license_model = var.external_db_system_database_management_config_license_model
619+
}
620+
display_name = var.external_db_system_display_name
621+
}
622+
623+
# List ExternalDbSystem resources
624+
data "oci_database_management_external_db_systems" "test_external_db_systems" {
625+
#Required
626+
compartment_id = var.compartment_id
627+
628+
#Optional
629+
display_name = var.external_db_system_display_name
630+
}
631+
632+
# Add connector to an ExternalAsm resource
633+
resource "oci_database_management_external_asm" "test_external_asm" {
634+
external_asm_id = data.oci_database_management_external_asms.test_external_asms.external_asm_collection.0.items.0.id
635+
external_connector_id = oci_database_management_external_db_system_connector.test_external_asm_connector.id
636+
}
637+
638+
# List ExternalAsms in ExternalDbSystem
639+
data "oci_database_management_external_asms" "test_external_asms" {
640+
#Required
641+
external_db_system_id = oci_database_management_external_db_system.test_external_db_system.id
642+
643+
#Optional
644+
compartment_id = var.compartment_id
645+
}
646+
647+
# Get configuration details for ExternalAsm
648+
data "oci_database_management_external_asm_configuration" "test_external_asm_configuration" {
649+
#Required
650+
external_asm_id = oci_database_management_external_asm.test_external_asm.id
651+
}
652+
653+
# List ASM disk groups in ExternalAsm
654+
data "oci_database_management_external_asm_disk_groups" "test_external_asm_disk_groups" {
655+
#Required
656+
external_asm_id = oci_database_management_external_asm.test_external_asm.id
657+
}
658+
659+
# List ASM users in ExternalAsm
660+
data "oci_database_management_external_asm_users" "test_external_asm_users" {
661+
#Required
662+
external_asm_id = oci_database_management_external_asm.test_external_asm.id
663+
}
664+
665+
# List ExternalAsmInstances in ExternalAsm
666+
data "oci_database_management_external_asm_instances" "test_external_asm_instances" {
667+
#Required
668+
external_asm_id = oci_database_management_external_asm.test_external_asm.id
669+
670+
#Optional
671+
compartment_id = var.compartment_id
672+
}
673+
674+
# List ExternalClusters in ExternalDbSystem
675+
data "oci_database_management_external_clusters" "test_external_clusters" {
676+
#Required
677+
external_db_system_id = oci_database_management_external_db_system.test_external_db_system.id
678+
679+
#Optional
680+
compartment_id = var.compartment_id
681+
}
682+
683+
# List ExternalClusterInstances in ExternalCluster
684+
data "oci_database_management_external_cluster_instances" "test_external_cluster_instances" {
685+
#Required
686+
external_cluster_id = data.oci_database_management_external_clusters.test_external_clusters.external_cluster_collection.0.items.0.id
687+
688+
#Optional
689+
compartment_id = var.compartment_id
690+
}
691+
692+
# List ExternalDatabases in ExternalDbSystem
693+
data "oci_database_management_external_databases" "test_external_databases" {
694+
#Required
695+
external_db_system_id = oci_database_management_external_db_system.test_external_db_system.id
696+
697+
#Optional
698+
compartment_id = var.compartment_id
699+
}
700+
701+
# List ExternalDbHomes in ExternalDbSystem
702+
data "oci_database_management_external_db_homes" "test_external_db_homes" {
703+
#Required
704+
external_db_system_id = oci_database_management_external_db_system.test_external_db_system.id
705+
706+
#Optional
707+
compartment_id = var.compartment_id
708+
}
709+
710+
# List ExternalDbNodes in ExternalDbSystem
711+
data "oci_database_management_external_db_nodes" "test_external_db_nodes" {
712+
#Required
713+
external_db_system_id = oci_database_management_external_db_system.test_external_db_system.id
714+
715+
#Optional
716+
compartment_id = var.compartment_id
717+
}
718+
719+
# List ExternalListeners in ExternalDbSystem
720+
data "oci_database_management_external_listeners" "test_external_listeners" {
721+
#Required
722+
external_db_system_id = oci_database_management_external_db_system.test_external_db_system.id
723+
724+
#Optional
725+
compartment_id = var.compartment_id
726+
}
727+
728+
resource "oci_database_management_external_listener" "test_external_listener" {
729+
#Required
730+
external_listener_id = data.oci_database_management_external_listeners.test_external_listeners.external_listener_collection.0.items.0.id
731+
external_connector_id = oci_database_management_external_db_system_connector.test_external_listener_connector.id
732+
}
733+
734+
# List ExternalListenerServices for ExternalListener
735+
data "oci_database_management_external_listener_services" "test_external_listener_services" {
736+
#Required
737+
external_listener_id = oci_database_management_external_listener.test_external_listener.id
738+
managed_database_id = oci_database_management_external_listener.test_external_listener.serviced_databases.0.id
739+
}
740+
741+
# Create a new Management Agent based ExternalDbSystemConnector
742+
resource "oci_database_management_external_db_system_connector" "test_external_asm_connector" {
743+
#Required
744+
connector_type = "MACS"
745+
external_db_system_id = oci_database_management_external_db_system.test_external_db_system.id
746+
agent_id = var.connector_agent_id
747+
748+
#Optional
749+
display_name = var.external_asm_connector_display_name
750+
connection_info {
751+
component_type = "ASM"
752+
connection_credentials {
753+
credential_name = var.asm_credential_name
754+
credential_type = "DETAILS"
755+
password_secret_id = var.asm_password_secret_id
756+
role = "SYSASM"
757+
user_name = var.asm_user_name
758+
}
759+
connection_string {
760+
hosts = [var.asm_host_name]
761+
port = var.asm_port
762+
protocol = "TCP"
763+
service = var.asm_service_name
764+
}
765+
}
766+
}
767+
768+
resource "oci_database_management_external_db_system_connector" "test_external_listener_connector" {
769+
#Required
770+
connector_type = "MACS"
771+
external_db_system_id = oci_database_management_external_db_system.test_external_db_system.id
772+
agent_id = var.connector_agent_id
773+
774+
#Optional
775+
display_name = var.external_listener_connector_display_name
776+
}
777+
778+
# List ExternalDbSystemConnector resources in ExternalDbSystem
779+
data "oci_database_management_external_db_system_connectors" "test_external_db_system_connectors" {
780+
#Required
781+
external_db_system_id = oci_database_management_external_db_system.test_external_db_system.id
782+
783+
#Optional
784+
compartment_id = var.compartment_id
785+
display_name = var.external_asm_connector_display_name
786+
depends_on = [oci_database_management_external_db_system_connector.test_external_asm_connector]
787+
}
788+
789+
## Disable database management for ExternalDbSystem
790+
#resource "oci_database_management_external_db_system_database_managements_management" "test_external_db_system_database_managements_management" {
791+
# #Required
792+
# external_db_system_id = oci_database_management_external_db_system.test_external_db_system.id
793+
# enable_database_management = false
794+
#}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
// Copyright (c) 2017, 2023, 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+
DatabaseManagementDatabaseManagementExternalAsmConfigurationSingularDataSourceRepresentation = map[string]interface{}{
20+
"external_asm_id": acctest.Representation{RepType: acctest.Required, Create: `${data.oci_database_management_external_asms.test_external_asms.external_asm_collection.0.items.0.id}`},
21+
}
22+
23+
DatabaseManagementExternalAsmConfigurationResourceConfig = acctest.GenerateDataSourceFromRepresentationMap("oci_database_management_external_asms", "test_external_asms", acctest.Required, acctest.Create, DatabaseManagementDatabaseManagementExternalAsmDataSourceRepresentation)
24+
)
25+
26+
// issue-routing-tag: database_management/default
27+
func TestDatabaseManagementExternalAsmConfigurationResource_basic(t *testing.T) {
28+
httpreplay.SetScenario("TestDatabaseManagementExternalAsmConfigurationResource_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+
dbSystemId := utils.GetEnvSettingWithBlankDefault("external_dbsystem_id")
37+
dbSystemIdVariableStr := fmt.Sprintf("variable \"external_dbsystem_id\" { default = \"%s\" }\n", dbSystemId)
38+
39+
singularDatasourceName := "data.oci_database_management_external_asm_configuration.test_external_asm_configuration"
40+
41+
acctest.SaveConfigContent("", "", "", t)
42+
43+
acctest.ResourceTest(t, nil, []resource.TestStep{
44+
// verify singular datasource
45+
{
46+
Config: config +
47+
acctest.GenerateDataSourceFromRepresentationMap("oci_database_management_external_asm_configuration", "test_external_asm_configuration", acctest.Required, acctest.Create, DatabaseManagementDatabaseManagementExternalAsmConfigurationSingularDataSourceRepresentation) +
48+
compartmentIdVariableStr + dbSystemIdVariableStr + DatabaseManagementExternalAsmConfigurationResourceConfig,
49+
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
50+
resource.TestCheckResourceAttrSet(singularDatasourceName, "external_asm_id"),
51+
52+
resource.TestCheckResourceAttrSet(singularDatasourceName, "init_parameters.#"),
53+
),
54+
},
55+
})
56+
}

0 commit comments

Comments
 (0)