From 40b7aab5b659b88d21c4a87f878504cb6fa7ba26 Mon Sep 17 00:00:00 2001 From: Vijayganesh Sankaran Date: Tue, 20 Sep 2022 22:56:53 +0000 Subject: [PATCH 01/17] Added - Support for Terraform Extension Request - [UDX-20336] EXACC Elastic Compute --- ...base_autonomous_container_database_test.go | 17 ++++ .../database_autonomous_vm_cluster_test.go | 5 + ...database_cloud_database_management_test.go | 17 ++++ .../database_data_guard_association_test.go | 14 +++ ...abase_pdb_conversion_history_entry_test.go | 14 +++ .../database_database_software_image_test.go | 14 +++ .../integrationtest/database_database_test.go | 18 ++++ .../database_database_upgrade_test.go | 14 +++ .../integrationtest/database_db_home_test.go | 19 ++++ .../database_db_server_test.go | 59 ++++++++++++ ...e_db_systems_upgrade_history_entry_test.go | 17 ++++ .../database_exadata_infrastructure_test.go | 4 + .../database_exadata_iorm_config_test.go | 17 ++++ ...rnal_container_database_management_test.go | 19 ++++ ...tabase_external_database_connector_test.go | 18 ++++ ..._non_container_database_management_test.go | 19 ++++ ...ase_operations_insights_management_test.go | 19 ++++ ...rnal_pluggable_database_management_test.go | 20 ++++ ...ase_operations_insights_management_test.go | 20 ++++ ...ontainerdatabases_stack_monitoring_test.go | 19 ++++ ...ontainerdatabases_stack_monitoring_test.go | 19 ++++ ...luggabledatabases_stack_monitoring_test.go | 20 ++++ .../database_pluggable_database_test.go | 14 +++ ...se_pluggable_databases_local_clone_test.go | 15 +++ ...e_pluggable_databases_remote_clone_test.go | 14 +++ ...ase_vm_cluster_add_virtual_machine_test.go | 7 ++ ...uster_network_download_config_file_test.go | 5 + .../database_vm_cluster_network_test.go | 93 +++++++++++++++++++ ...ase_vm_cluster_patch_history_entry_test.go | 6 ++ .../database_vm_cluster_patch_test.go | 6 ++ ...ase_vm_cluster_recommended_network_test.go | 6 ++ ..._vm_cluster_remove_virtual_machine_test.go | 7 ++ .../database_vm_cluster_test.go | 6 ++ ...se_vm_cluster_update_history_entry_test.go | 6 ++ .../database_vm_cluster_update_test.go | 6 ++ .../database_db_server_data_source.go | 8 ++ .../database_db_servers_data_source.go | 8 ++ ...base_exadata_infrastructure_data_source.go | 6 ++ ...atabase_exadata_infrastructure_resource.go | 23 +++++ ...ase_exadata_infrastructures_data_source.go | 6 ++ internal/service/database/database_export.go | 4 + .../database_vm_cluster_network_resource.go | 71 +++++++++++--- ...cluster_recommended_network_data_source.go | 37 ++++++++ .../docs/d/database_db_server.html.markdown | 1 + .../docs/d/database_db_servers.html.markdown | 1 + .../d/database_db_system_shapes.html.markdown | 4 +- ...abase_exadata_infrastructure.html.markdown | 2 + ...base_exadata_infrastructures.html.markdown | 2 + .../database_vm_cluster_network.html.markdown | 4 +- ...database_vm_cluster_networks.html.markdown | 4 +- ..._cluster_recommended_network.html.markdown | 4 + ...abase_exadata_infrastructure.html.markdown | 2 + .../database_vm_cluster_network.html.markdown | 24 ++++- 53 files changed, 780 insertions(+), 24 deletions(-) diff --git a/internal/integrationtest/database_autonomous_container_database_test.go b/internal/integrationtest/database_autonomous_container_database_test.go index aa63851e45d..e6dae1fb1c4 100644 --- a/internal/integrationtest/database_autonomous_container_database_test.go +++ b/internal/integrationtest/database_autonomous_container_database_test.go @@ -100,6 +100,22 @@ var ( "name": acctest.Representation{RepType: acctest.Required, Create: `OCTOBER`, Update: `NOVEMBER`}, } +<<<<<<< ours + DatabaseAutonomousContainerDatabaseResourceDependencies = AutonomousExadataInfrastructureResourceConfig + + acctest.GenerateResourceFromRepresentationMap("oci_core_subnet", "test_subnet", acctest.Required, acctest.Create, subnetRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_core_vcn", "test_vcn", acctest.Required, acctest.Create, vcnRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_autonomous_vm_cluster", "test_autonomous_vm_cluster", acctest.Required, acctest.Create, autonomousVmClusterRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_cloud_autonomous_vm_cluster", "test_cloud_autonomous_vm_cluster", acctest.Required, acctest.Create, cloudAutonomousVmClusterRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_cloud_exadata_infrastructure", "test_cloud_exadata_infrastructure", acctest.Required, acctest.Create, cloudExadataInfrastructureRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_key_store", "test_key_store", acctest.Required, acctest.Create, keyStoreRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + + AvailabilityDomainConfig + + acctest.GenerateResourceFromRepresentationMap("oci_kms_key_version", "test_key_version", acctest.Required, acctest.Create, keyVersionRepresentation) + + KeyResourceDependencyConfig + + acctest.GenerateResourceFromRepresentationMap("oci_kms_vault", "test_vault", acctest.Required, acctest.Create, vaultRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_vault_secret", "test_secret", acctest.Required, acctest.Create, secretRepresentation) +======= DatabaseAutonomousContainerDatabaseResourceDependencies = DefinedTagsDependencies + acctest.GenerateResourceFromRepresentationMap("oci_database_autonomous_vm_cluster", "test_autonomous_vm_cluster", acctest.Required, acctest.Create, DatabaseAutonomousVmClusterRepresentation) + KeyResourceDependencyConfig + kmsKeyIdCreateVariableStr + kmsKeyIdUpdateVariableStr + @@ -112,6 +128,7 @@ var ( acctest.RepresentationCopyWithNewProperties(DatabaseVmClusterNetworkRepresentation, map[string]interface{}{"validate_vm_cluster_network": acctest.Representation{RepType: acctest.Required, Create: "true"}})) ATPDAutonomousContainerDatabaseResourceDependencies = DatabaseCloudAutonomousVmClusterRequiredOnlyResource + KeyResourceDependencyConfig + kmsKeyIdCreateVariableStr + kmsKeyIdUpdateVariableStr +>>>>>>> theirs ) // issue-routing-tag: database/dbaas-atp-d diff --git a/internal/integrationtest/database_autonomous_vm_cluster_test.go b/internal/integrationtest/database_autonomous_vm_cluster_test.go index 386915f8ffc..d75e1075933 100644 --- a/internal/integrationtest/database_autonomous_vm_cluster_test.go +++ b/internal/integrationtest/database_autonomous_vm_cluster_test.go @@ -78,6 +78,10 @@ var ( "name": acctest.Representation{RepType: acctest.Required, Create: `JANUARY`, Update: `FEBRUARY`}, } +<<<<<<< ours + DatabaseAutonomousVmClusterResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + +======= DatabaseAutonomousVmClusterMaintenanceWindowDetailsMonthsRepresentation2 = map[string]interface{}{ "name": acctest.Representation{RepType: acctest.Required, Create: `APRIL`, Update: `MAY`}, } @@ -94,6 +98,7 @@ var ( acctest.RepresentationCopyWithNewProperties(DatabaseVmClusterNetworkRepresentation, map[string]interface{}{"validate_vm_cluster_network": acctest.Representation{RepType: acctest.Required, Create: "true"}})) + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network2", acctest.Required, acctest.Create, acctest.RepresentationCopyWithNewProperties(vmClusterNetwork2Representation, map[string]interface{}{"validate_vm_cluster_network": acctest.Representation{RepType: acctest.Required, Create: "true"}})) + +>>>>>>> theirs DefinedTagsDependencies ) diff --git a/internal/integrationtest/database_cloud_database_management_test.go b/internal/integrationtest/database_cloud_database_management_test.go index 328a5165caa..a23e257be39 100644 --- a/internal/integrationtest/database_cloud_database_management_test.go +++ b/internal/integrationtest/database_cloud_database_management_test.go @@ -40,6 +40,22 @@ var ( "password_secret_id": acctest.Representation{RepType: acctest.Required, Create: `${var.sslSecretId}`}, } +<<<<<<< ours + DatabaseCloudDatabaseManagementResourceDependencies = acctest.GenerateDataSourceFromRepresentationMap("oci_core_services", "test_services", acctest.Required, acctest.Create, serviceDataSourceRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_backup", "test_backup", acctest.Required, acctest.Create, backupRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Required, acctest.Create, databaseRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_db_home", "test_db_home", acctest.Required, acctest.Create, dbHomeRepresentation) + + BackupResourceDependencies + + GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", Optional, Create, backupDestinationNFSRepresentation) + + GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", Optional, Update, RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": Representation{RepType: Optional, Update: activationFilePath}})) + + GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", Optional, Update, vmClusterNetworkValidateRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_identity_user", "test_user", acctest.Required, acctest.Create, userRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_kms_vault", "test_vault", acctest.Required, acctest.Create, vaultRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_vault_secret", "test_secret", acctest.Required, acctest.Create, secretRepresentation) +======= cloudDatabaseManagementPrivateEndpointConfig = acctest.GenerateResourceFromRepresentationMap("oci_database_management_db_management_private_endpoint", "test_db_management_private_endpoint", acctest.Required, acctest.Create, cloudDatabaseManagementPrivateEndpointRepresentation) CloudDatabaseManagementResourceDependenciesBase = AvailabilityDomainConfig + DefinedTagsDependencies + CoreVcnResourceConfig + @@ -146,6 +162,7 @@ var ( data "oci_database_database" "t" { database_id = "${data.oci_database_databases.t.databases.0.id}" }` +>>>>>>> theirs ) // issue-routing-tag: database/ExaCS diff --git a/internal/integrationtest/database_data_guard_association_test.go b/internal/integrationtest/database_data_guard_association_test.go index 01bd92cf1bf..ccefdd9d32b 100644 --- a/internal/integrationtest/database_data_guard_association_test.go +++ b/internal/integrationtest/database_data_guard_association_test.go @@ -74,6 +74,19 @@ var ( "is_incident_logs_enabled": acctest.Representation{RepType: acctest.Optional, Create: `false`}, } +<<<<<<< ours + DatabaseDataGuardAssociationResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_database_backup", "test_backup", acctest.Required, acctest.Create, backupRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_database_software_image", "test_database_software_image", acctest.Required, acctest.Create, databaseSoftwareImageRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Required, acctest.Create, databaseRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_db_home", "test_db_home", acctest.Required, acctest.Create, dbHomeRepresentation) + + BackupResourceDependencies + + GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", Optional, Create, backupDestinationNFSRepresentation) + + GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", Optional, Update, RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": Representation{RepType: Optional, Update: activationFilePath}})) + + GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", Optional, Update, vmClusterNetworkValidateRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) +======= ignoreDataGuardAssociationRepresentationExistingDbSystem = map[string]interface{}{ "ignore_changes": acctest.Representation{RepType: acctest.Required, Create: []string{`database_defined_tags`, `database_freeform_tags`, `db_system_defined_tags`, `db_system_freeform_tags`, `fault_domains`, `license_model`, `node_count`, `private_ip`, `time_zone`}}, } @@ -316,6 +329,7 @@ resource "oci_database_db_system" "test_db_system" { } } ` +>>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/integrationtest/database_database_pdb_conversion_history_entry_test.go b/internal/integrationtest/database_database_pdb_conversion_history_entry_test.go index 2f75b421b47..df59594d2a1 100644 --- a/internal/integrationtest/database_database_pdb_conversion_history_entry_test.go +++ b/internal/integrationtest/database_database_pdb_conversion_history_entry_test.go @@ -24,6 +24,20 @@ var ( DatabaseDatabaseDatabasePdbConversionHistoryEntryDataSourceRepresentation = map[string]interface{}{ "database_id": acctest.Representation{RepType: acctest.Required, Create: utils.GetEnvSettingWithBlankDefault("converted_to_pdb_db_id")}, } +<<<<<<< ours + + DatabaseDatabasePdbConversionHistoryEntryResourceConfig = acctest.GenerateResourceFromRepresentationMap("oci_database_backup", "test_backup", acctest.Required, acctest.Create, backupRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Required, acctest.Create, databaseRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_db_home", "test_db_home", acctest.Required, acctest.Create, dbHomeRepresentation) + + BackupResourceDependencies + + GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", Optional, Create, backupDestinationNFSRepresentation) + + GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", Optional, Update, RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": Representation{RepType: Optional, Update: activationFilePath}})) + + GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", Optional, Update, vmClusterNetworkValidateRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) +======= +>>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/integrationtest/database_database_software_image_test.go b/internal/integrationtest/database_database_software_image_test.go index 6ce6e6e19bf..02fb84b21d4 100644 --- a/internal/integrationtest/database_database_software_image_test.go +++ b/internal/integrationtest/database_database_software_image_test.go @@ -61,7 +61,21 @@ var ( "ls_inventory": acctest.Representation{RepType: acctest.Optional, Create: `lsInventory`}, } +<<<<<<< ours + DatabaseDatabaseSoftwareImageResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_database_backup", "test_backup", acctest.Required, acctest.Create, backupRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Required, acctest.Create, databaseRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_db_home", "test_db_home", acctest.Required, acctest.Create, dbHomeRepresentation) + + BackupResourceDependencies + + GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", Optional, Create, backupDestinationNFSRepresentation) + + GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", Optional, Update, RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": Representation{RepType: Optional, Update: activationFilePath}})) + + GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", Optional, Update, vmClusterNetworkValidateRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) + + DefinedTagsDependencies +======= DatabaseDatabaseSoftwareImageResourceDependencies = DefinedTagsDependencies +>>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/integrationtest/database_database_test.go b/internal/integrationtest/database_database_test.go index 68c1a5d4bac..33789c22fc1 100644 --- a/internal/integrationtest/database_database_test.go +++ b/internal/integrationtest/database_database_test.go @@ -178,8 +178,26 @@ var ( "id": acctest.Representation{RepType: acctest.Optional, Create: `${oci_database_backup_destination.test_backup_destination.id}`}, } +<<<<<<< ours + DatabaseDatabaseResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_database_backup", "test_backup", acctest.Required, acctest.Create, backupRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_database_software_image", "test_database_software_image", acctest.Required, acctest.Create, databaseSoftwareImageRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Required, acctest.Create, databaseRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_db_home", "test_db_home", acctest.Required, acctest.Create, dbHomeRepresentation) + + BackupResourceDependencies + + GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", Optional, Create, backupDestinationNFSRepresentation) + + GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", Optional, Update, RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": Representation{RepType: Optional, Update: activationFilePath}})) + + GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", Optional, Update, vmClusterNetworkValidateRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) + + DefinedTagsDependencies + + acctest.GenerateResourceFromRepresentationMap("oci_kms_key_version", "test_key_version", acctest.Required, acctest.Create, keyVersionRepresentation) + + KeyResourceDependencyConfig + + acctest.GenerateResourceFromRepresentationMap("oci_kms_vault", "test_vault", acctest.Required, acctest.Create, vaultRepresentation) +======= DatabaseDatabaseResourceDependencies = ExaBaseDependencies + DefinedTagsDependencies + AvailabilityDomainConfig + KeyResourceDependencyConfig + acctest.GenerateResourceFromRepresentationMap("oci_database_db_home", "test_db_home", acctest.Required, acctest.Create, dbHomeRepresentationSourceNone) +>>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/integrationtest/database_database_upgrade_test.go b/internal/integrationtest/database_database_upgrade_test.go index 2004381995a..911f88b2f7b 100644 --- a/internal/integrationtest/database_database_upgrade_test.go +++ b/internal/integrationtest/database_database_upgrade_test.go @@ -43,6 +43,19 @@ var ( "source": acctest.Representation{RepType: acctest.Optional, Create: `DB_VERSION`}, } +<<<<<<< ours + DatabaseDatabaseUpgradeResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_database_backup", "test_backup", acctest.Required, acctest.Create, backupRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_database_software_image", "test_database_software_image", acctest.Required, acctest.Create, databaseSoftwareImageRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Required, acctest.Create, databaseRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_db_home", "test_db_home", acctest.Required, acctest.Create, dbHomeRepresentation) + + BackupResourceDependencies + + GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", Optional, Create, backupDestinationNFSRepresentation) + + GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", Optional, Update, RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": Representation{RepType: Optional, Update: activationFilePath}})) + + GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", Optional, Update, vmClusterNetworkValidateRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) +======= DatabaseSystemForDbUpgradeRepresentation = ` resource "oci_database_db_system" "t" { availability_domain = "${data.oci_identity_availability_domains.ADs.availability_domains.0.name}" @@ -116,6 +129,7 @@ var ( data "oci_database_database" "t" { database_id = "${data.oci_database_databases.t.databases.0.id}" }` +>>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/integrationtest/database_db_home_test.go b/internal/integrationtest/database_db_home_test.go index 9ee51618695..e356776e96c 100644 --- a/internal/integrationtest/database_db_home_test.go +++ b/internal/integrationtest/database_db_home_test.go @@ -183,11 +183,30 @@ var ( "display_name": acctest.Representation{RepType: acctest.Required, Create: `TFTestDbHome1`}, } +<<<<<<< ours + DatabaseDbHomeResourceDependencies = BackupResourceDependencies + + GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", Optional, Create, backupDestinationNFSRepresentation) + + GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", Optional, Update, RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": Representation{RepType: Optional, Update: activationFilePath}})) + + GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", Optional, Update, vmClusterNetworkValidateRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_backup", "test_backup", acctest.Required, acctest.Create, backupRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_database_software_image", "test_database_software_image", acctest.Required, acctest.Create, databaseSoftwareImageRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Required, acctest.Create, databaseRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_db_home", "test_db_home", acctest.Required, acctest.Create, dbHomeRepresentation) + + BackupResourceDependencies + + GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", Optional, Create, backupDestinationNFSRepresentation) + + GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", Optional, Update, RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": Representation{RepType: Optional, Update: activationFilePath}})) + + GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", Optional, Update, vmClusterNetworkValidateRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_kms_key_version", "test_key_version", acctest.Required, acctest.Create, keyVersionRepresentation) + +======= DatabaseDbHomeResourceDependencies = DatabaseBackupResourceDependencies + acctest.GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", acctest.Optional, acctest.Create, backupDestinationNFSRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Optional, acctest.Update, acctest.RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": acctest.Representation{RepType: acctest.Optional, Update: activationFilePath}})) + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Optional, acctest.Update, vmClusterNetworkValidateRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_backup", "test_backup", acctest.Required, acctest.Create, DatabaseBackupRepresentation) + +>>>>>>> theirs KeyResourceDependencyConfig + acctest.GenerateDataSourceFromRepresentationMap("oci_database_db_servers", "test_db_servers", acctest.Required, acctest.Create, DatabaseDatabaseDbServerDataSourceRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, DatabaseCloudAutonomousVmClusterRepresentation) diff --git a/internal/integrationtest/database_db_server_test.go b/internal/integrationtest/database_db_server_test.go index 35b84f755a4..f1201f08566 100644 --- a/internal/integrationtest/database_db_server_test.go +++ b/internal/integrationtest/database_db_server_test.go @@ -48,6 +48,64 @@ func TestDatabaseDbServerResource_basic(t *testing.T) { acctest.SaveConfigContent("", "", "", t) +<<<<<<< ours + acctest.ResourceTest(t, nil, []resource.TestStep{ + // verify datasource + { + Config: config + + acctest.GenerateDataSourceFromRepresentationMap("oci_database_db_servers", "test_db_servers", acctest.Required, acctest.Create, DatabasedbServerDataSourceRepresentation) + + compartmentIdVariableStr + DatabaseDbServerResourceConfig, + Check: acctest.ComposeAggregateTestCheckFuncWrapper( + resource.TestCheckResourceAttr(datasourceName, "compartment_id", compartmentId), + resource.TestCheckResourceAttr(datasourceName, "display_name", "displayName"), + resource.TestCheckResourceAttrSet(datasourceName, "exadata_infrastructure_id"), + resource.TestCheckResourceAttr(datasourceName, "state", "AVAILABLE"), + + resource.TestCheckResourceAttrSet(datasourceName, "db_servers.#"), + resource.TestCheckResourceAttrSet(datasourceName, "db_servers.0.compartment_id"), + resource.TestCheckResourceAttrSet(datasourceName, "db_servers.0.cpu_core_count"), + resource.TestCheckResourceAttr(datasourceName, "db_servers.0.db_node_ids.#", "1"), + resource.TestCheckResourceAttrSet(datasourceName, "db_servers.0.db_node_storage_size_in_gbs"), + resource.TestCheckResourceAttr(datasourceName, "db_servers.0.db_server_patching_details.#", "1"), + resource.TestCheckResourceAttrSet(datasourceName, "db_servers.0.display_name"), + resource.TestCheckResourceAttrSet(datasourceName, "db_servers.0.exadata_infrastructure_id"), + resource.TestCheckResourceAttrSet(datasourceName, "db_servers.0.id"), + resource.TestCheckResourceAttrSet(datasourceName, "db_servers.0.max_cpu_count"), + resource.TestCheckResourceAttrSet(datasourceName, "db_servers.0.max_db_node_storage_in_gbs"), + resource.TestCheckResourceAttrSet(datasourceName, "db_servers.0.max_memory_in_gbs"), + resource.TestCheckResourceAttrSet(datasourceName, "db_servers.0.memory_size_in_gbs"), + resource.TestCheckResourceAttrSet(datasourceName, "db_servers.0.shape"), + resource.TestCheckResourceAttrSet(datasourceName, "db_servers.0.state"), + resource.TestCheckResourceAttrSet(datasourceName, "db_servers.0.time_created"), + resource.TestCheckResourceAttr(datasourceName, "db_servers.0.vm_cluster_ids.#", "1"), + ), + }, + // verify singular datasource + { + Config: config + + acctest.GenerateDataSourceFromRepresentationMap("oci_database_db_server", "test_db_server", acctest.Required, acctest.Create, DatabasedbServerSingularDataSourceRepresentation) + + compartmentIdVariableStr + DatabaseDbServerResourceConfig, + Check: acctest.ComposeAggregateTestCheckFuncWrapper( + resource.TestCheckResourceAttrSet(singularDatasourceName, "db_server_id"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "exadata_infrastructure_id"), + + resource.TestCheckResourceAttrSet(singularDatasourceName, "compartment_id"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "cpu_core_count"), + resource.TestCheckResourceAttr(singularDatasourceName, "db_node_ids.#", "1"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "db_node_storage_size_in_gbs"), + resource.TestCheckResourceAttr(singularDatasourceName, "db_server_patching_details.#", "1"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "display_name"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "id"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "max_cpu_count"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "max_db_node_storage_in_gbs"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "max_memory_in_gbs"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "memory_size_in_gbs"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "shape"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "state"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "time_created"), + resource.TestCheckResourceAttr(singularDatasourceName, "vm_cluster_ids.#", "1"), + ), +======= resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, Providers: map[string]*schema.Provider{ @@ -103,6 +161,7 @@ func TestDatabaseDbServerResource_basic(t *testing.T) { resource.TestCheckResourceAttr(singularDatasourceName, "vm_cluster_ids.#", "0"), ), }, +>>>>>>> theirs }, }) } diff --git a/internal/integrationtest/database_db_systems_upgrade_history_entry_test.go b/internal/integrationtest/database_db_systems_upgrade_history_entry_test.go index 850115d9f08..1e658c57af2 100644 --- a/internal/integrationtest/database_db_systems_upgrade_history_entry_test.go +++ b/internal/integrationtest/database_db_systems_upgrade_history_entry_test.go @@ -27,6 +27,22 @@ var ( "upgrade_action": acctest.Representation{RepType: acctest.Optional, Create: `PRECHECK`}, } +<<<<<<< ours + DatabaseDbSystemsUpgradeHistoryEntryResourceConfig = acctest.GenerateResourceFromRepresentationMap("oci_core_subnet", "test_subnet", acctest.Required, acctest.Create, subnetRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_core_vcn", "test_vcn", acctest.Required, acctest.Create, vcnRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_backup", "test_backup", acctest.Required, acctest.Create, backupRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Required, acctest.Create, databaseRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_db_home", "test_db_home", acctest.Required, acctest.Create, dbHomeRepresentation) + + BackupResourceDependencies + + GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", Optional, Create, backupDestinationNFSRepresentation) + + GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", Optional, Update, RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": Representation{RepType: Optional, Update: activationFilePath}})) + + GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", Optional, Update, vmClusterNetworkValidateRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_db_system", "test_db_system", acctest.Required, acctest.Create, dbSystemRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) + + AvailabilityDomainConfig +======= DatabaseDbSystemsUpgradeHistoryEntryResourceConfig = acctest.GenerateResourceFromRepresentationMap("oci_core_subnet", "test_subnet", acctest.Required, acctest.Create, CoreSubnetRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_core_vcn", "test_vcn", acctest.Required, acctest.Create, CoreVcnRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_core_vlan", "test_vlan", acctest.Required, acctest.Create, CoreVlanRepresentation) + @@ -43,6 +59,7 @@ var ( acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, DatabaseCloudAutonomousVmClusterRepresentation) + AvailabilityDomainConfig + acctest.GenerateResourceFromRepresentationMap("oci_identity_domain", "test_domain", acctest.Required, acctest.Create, IdentityDomainRepresentation) +>>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/integrationtest/database_exadata_infrastructure_test.go b/internal/integrationtest/database_exadata_infrastructure_test.go index 0a52c32f1bb..9e01a06e01e 100644 --- a/internal/integrationtest/database_exadata_infrastructure_test.go +++ b/internal/integrationtest/database_exadata_infrastructure_test.go @@ -350,6 +350,8 @@ func TestDatabaseExadataInfrastructureResource_basic(t *testing.T) { resource.TestCheckResourceAttr(datasourceName, "exadata_infrastructures.#", "1"), resource.TestCheckResourceAttrSet(datasourceName, "exadata_infrastructures.0.activated_storage_count"), + resource.TestCheckResourceAttrSet(datasourceName, "exadata_infrastructures.0.additional_compute_count"), + resource.TestCheckResourceAttrSet(datasourceName, "exadata_infrastructures.0.additional_compute_system_model"), resource.TestCheckResourceAttrSet(datasourceName, "exadata_infrastructures.0.additional_storage_count"), resource.TestCheckResourceAttr(datasourceName, "exadata_infrastructures.0.admin_network_cidr", "192.168.0.0/20"), resource.TestCheckResourceAttr(datasourceName, "exadata_infrastructures.0.cloud_control_plane_server1", "10.32.88.2"), @@ -416,6 +418,8 @@ func TestDatabaseExadataInfrastructureResource_basic(t *testing.T) { resource.TestCheckResourceAttrSet(singularDatasourceName, "exadata_infrastructure_id"), resource.TestCheckResourceAttrSet(singularDatasourceName, "activated_storage_count"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "additional_compute_count"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "additional_compute_system_model"), resource.TestCheckResourceAttrSet(singularDatasourceName, "additional_storage_count"), resource.TestCheckResourceAttr(singularDatasourceName, "admin_network_cidr", "192.168.0.0/20"), resource.TestCheckResourceAttr(singularDatasourceName, "cloud_control_plane_server1", "10.32.88.2"), diff --git a/internal/integrationtest/database_exadata_iorm_config_test.go b/internal/integrationtest/database_exadata_iorm_config_test.go index 2ac267c4b78..e9385f73548 100644 --- a/internal/integrationtest/database_exadata_iorm_config_test.go +++ b/internal/integrationtest/database_exadata_iorm_config_test.go @@ -75,6 +75,22 @@ var ( dns_label = "subnetexadata2" } +<<<<<<< ours + DatabaseExadataIormConfigResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_core_subnet", "test_subnet", acctest.Required, acctest.Create, subnetRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_core_vcn", "test_vcn", acctest.Required, acctest.Create, vcnRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_backup", "test_backup", acctest.Required, acctest.Create, backupRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Required, acctest.Create, databaseRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_db_home", "test_db_home", acctest.Required, acctest.Create, dbHomeRepresentation) + + BackupResourceDependencies + + GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", Optional, Create, backupDestinationNFSRepresentation) + + GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", Optional, Update, RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": Representation{RepType: Optional, Update: activationFilePath}})) + + GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", Optional, Update, vmClusterNetworkValidateRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_db_system", "test_db_system", acctest.Required, acctest.Create, dbSystemRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) + + AvailabilityDomainConfig +======= resource "oci_core_security_list" "exadata_shapes_security_list" { compartment_id = "${var.compartment_id}" vcn_id = "${oci_core_virtual_network.t.id}" @@ -126,6 +142,7 @@ var ( } } ` +>>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/integrationtest/database_external_container_database_management_test.go b/internal/integrationtest/database_external_container_database_management_test.go index ca5a8c80f33..db28d215223 100644 --- a/internal/integrationtest/database_external_container_database_management_test.go +++ b/internal/integrationtest/database_external_container_database_management_test.go @@ -30,8 +30,27 @@ var ( "connector_type": acctest.Representation{RepType: acctest.Optional, Create: `MACS`}, } +<<<<<<< ours + DatabaseExternalContainerDatabaseManagementResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_cloud_bridge_agent", "test_agent", acctest.Required, acctest.Create, agentRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_cloud_bridge_environment", "test_environment", acctest.Required, acctest.Create, environmentRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_backup", "test_backup", acctest.Required, acctest.Create, backupRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Required, acctest.Create, databaseRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_db_home", "test_db_home", acctest.Required, acctest.Create, dbHomeRepresentation) + + BackupResourceDependencies + + GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", Optional, Create, backupDestinationNFSRepresentation) + + GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", Optional, Update, RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": Representation{RepType: Optional, Update: activationFilePath}})) + + GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", Optional, Update, vmClusterNetworkValidateRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_external_container_database", "test_external_container_database", acctest.Required, acctest.Create, externalContainerDatabaseRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_external_database_connector", "test_external_database_connector", acctest.Required, acctest.Create, externalDatabaseConnectorRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_kms_vault", "test_vault", acctest.Required, acctest.Create, vaultRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_vault_secret", "test_secret", acctest.Required, acctest.Create, secretRepresentation) +======= DatabaseExternalContainerDatabaseManagementResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_database_external_container_database", "test_external_container_database", acctest.Required, acctest.Create, DatabaseExternalContainerDatabaseRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_external_database_connector", "test_external_database_connector", acctest.Required, acctest.Create, DatabaseExternalContainerDatabaseConnectorRepresentation) +>>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/integrationtest/database_external_database_connector_test.go b/internal/integrationtest/database_external_database_connector_test.go index 742b7f710ba..b2cdfbeb174 100644 --- a/internal/integrationtest/database_external_database_connector_test.go +++ b/internal/integrationtest/database_external_database_connector_test.go @@ -72,8 +72,26 @@ var ( "service": acctest.Representation{RepType: acctest.Required, Create: `testService`, Update: `service2`}, } +<<<<<<< ours + DatabaseExternalDatabaseConnectorResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_cloud_bridge_agent", "test_agent", acctest.Required, acctest.Create, agentRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_cloud_bridge_environment", "test_environment", acctest.Required, acctest.Create, environmentRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_backup", "test_backup", acctest.Required, acctest.Create, backupRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Required, acctest.Create, databaseRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_db_home", "test_db_home", acctest.Required, acctest.Create, dbHomeRepresentation) + + BackupResourceDependencies + + GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", Optional, Create, backupDestinationNFSRepresentation) + + GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", Optional, Update, RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": Representation{RepType: Optional, Update: activationFilePath}})) + + GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", Optional, Update, vmClusterNetworkValidateRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) + + DefinedTagsDependencies + + acctest.GenerateResourceFromRepresentationMap("oci_kms_vault", "test_vault", acctest.Required, acctest.Create, vaultRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_vault_secret", "test_secret", acctest.Required, acctest.Create, secretRepresentation) +======= DatabaseExternalDatabaseConnectorResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_database_external_non_container_database", "test_external_non_container_database", acctest.Required, acctest.Create, DatabaseExternalNonContainerDatabaseRepresentation) + DefinedTagsDependencies +>>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/integrationtest/database_external_non_container_database_management_test.go b/internal/integrationtest/database_external_non_container_database_management_test.go index f5e414341bc..5f6e4ed957c 100644 --- a/internal/integrationtest/database_external_non_container_database_management_test.go +++ b/internal/integrationtest/database_external_non_container_database_management_test.go @@ -22,8 +22,27 @@ var ( "enable_management": acctest.Representation{RepType: acctest.Required, Create: `true`, Update: `false`}, } +<<<<<<< ours + DatabaseExternalNonContainerDatabaseManagementResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_cloud_bridge_agent", "test_agent", acctest.Required, acctest.Create, agentRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_cloud_bridge_environment", "test_environment", acctest.Required, acctest.Create, environmentRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_backup", "test_backup", acctest.Required, acctest.Create, backupRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Required, acctest.Create, databaseRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_db_home", "test_db_home", acctest.Required, acctest.Create, dbHomeRepresentation) + + BackupResourceDependencies + + GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", Optional, Create, backupDestinationNFSRepresentation) + + GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", Optional, Update, RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": Representation{RepType: Optional, Update: activationFilePath}})) + + GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", Optional, Update, vmClusterNetworkValidateRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_external_database_connector", "test_external_database_connector", acctest.Required, acctest.Create, externalDatabaseConnectorRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_external_non_container_database", "test_external_non_container_database", acctest.Required, acctest.Create, externalNonContainerDatabaseRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_kms_vault", "test_vault", acctest.Required, acctest.Create, vaultRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_vault_secret", "test_secret", acctest.Required, acctest.Create, secretRepresentation) +======= DatabaseExternalNonContainerDatabaseManagementResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_database_external_non_container_database", "test_external_non_container_database", acctest.Required, acctest.Create, DatabaseExternalNonContainerDatabaseRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_external_database_connector", "test_external_database_connector", acctest.Required, acctest.Create, DatabaseExternalDatabaseConnectorRepresentation) +>>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/integrationtest/database_external_non_container_database_operations_insights_management_test.go b/internal/integrationtest/database_external_non_container_database_operations_insights_management_test.go index 79f302df3ae..8cc68331f94 100644 --- a/internal/integrationtest/database_external_non_container_database_operations_insights_management_test.go +++ b/internal/integrationtest/database_external_non_container_database_operations_insights_management_test.go @@ -21,8 +21,27 @@ var ( "enable_operations_insights": acctest.Representation{RepType: acctest.Required, Create: `true`, Update: `false`}, } +<<<<<<< ours + DatabaseExternalNonContainerDatabaseOperationsInsightsManagementResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_cloud_bridge_agent", "test_agent", acctest.Required, acctest.Create, agentRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_cloud_bridge_environment", "test_environment", acctest.Required, acctest.Create, environmentRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_backup", "test_backup", acctest.Required, acctest.Create, backupRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Required, acctest.Create, databaseRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_db_home", "test_db_home", acctest.Required, acctest.Create, dbHomeRepresentation) + + BackupResourceDependencies + + GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", Optional, Create, backupDestinationNFSRepresentation) + + GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", Optional, Update, RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": Representation{RepType: Optional, Update: activationFilePath}})) + + GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", Optional, Update, vmClusterNetworkValidateRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_external_database_connector", "test_external_database_connector", acctest.Required, acctest.Create, externalDatabaseConnectorRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_external_non_container_database", "test_external_non_container_database", acctest.Required, acctest.Create, externalNonContainerDatabaseRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_kms_vault", "test_vault", acctest.Required, acctest.Create, vaultRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_vault_secret", "test_secret", acctest.Required, acctest.Create, secretRepresentation) +======= DatabaseExternalNonContainerDatabaseOperationsInsightsManagementResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_database_external_database_connector", "test_external_database_connector", acctest.Required, acctest.Create, DatabaseExternalDatabaseConnectorRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_external_non_container_database", "test_external_non_container_database", acctest.Required, acctest.Create, DatabaseExternalNonContainerDatabaseRepresentation) +>>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/integrationtest/database_external_pluggable_database_management_test.go b/internal/integrationtest/database_external_pluggable_database_management_test.go index c4fd9546f60..93676eada91 100644 --- a/internal/integrationtest/database_external_pluggable_database_management_test.go +++ b/internal/integrationtest/database_external_pluggable_database_management_test.go @@ -29,6 +29,25 @@ var ( "connector_type": acctest.Representation{RepType: acctest.Optional, Create: `MACS`}, } +<<<<<<< ours + DatabaseExternalPluggableDatabaseManagementResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_cloud_bridge_agent", "test_agent", acctest.Required, acctest.Create, agentRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_cloud_bridge_environment", "test_environment", acctest.Required, acctest.Create, environmentRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_backup", "test_backup", acctest.Required, acctest.Create, backupRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Required, acctest.Create, databaseRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_db_home", "test_db_home", acctest.Required, acctest.Create, dbHomeRepresentation) + + BackupResourceDependencies + + GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", Optional, Create, backupDestinationNFSRepresentation) + + GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", Optional, Update, RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": Representation{RepType: Optional, Update: activationFilePath}})) + + GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", Optional, Update, vmClusterNetworkValidateRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_external_container_database", "test_external_container_database", acctest.Required, acctest.Create, externalContainerDatabaseRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_external_database_connector", "test_external_database_connector", acctest.Required, acctest.Create, externalDatabaseConnectorRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_external_pluggable_database", "test_external_pluggable_database", acctest.Required, acctest.Create, externalPluggableDatabaseRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_kms_vault", "test_vault", acctest.Required, acctest.Create, vaultRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_vault_secret", "test_secret", acctest.Required, acctest.Create, secretRepresentation) +======= DatabaseExternalPluggable1DatabaseRepresentation = map[string]interface{}{ "compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`}, "display_name": acctest.Representation{RepType: acctest.Required, Create: `myTestExternalPdb`}, @@ -41,6 +60,7 @@ var ( acctest.GenerateResourceFromRepresentationMap("oci_database_external_pluggable_database", "test_external_pluggable_database", acctest.Required, acctest.Create, DatabaseExternalPluggable1DatabaseRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_external_database_connector", "test_external_pluggable_database_connector", acctest.Required, acctest.Create, DatabaseExternalPluggableDatabaseConnectorRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_external_database_connector", "test_external_database_connector", acctest.Required, acctest.Create, DatabaseExternalContainerDatabaseConnectorRepresentation) +>>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/integrationtest/database_external_pluggable_database_operations_insights_management_test.go b/internal/integrationtest/database_external_pluggable_database_operations_insights_management_test.go index c0503f73732..26a0c680bb5 100644 --- a/internal/integrationtest/database_external_pluggable_database_operations_insights_management_test.go +++ b/internal/integrationtest/database_external_pluggable_database_operations_insights_management_test.go @@ -21,10 +21,30 @@ var ( "enable_operations_insights": acctest.Representation{RepType: acctest.Required, Create: `true`, Update: `false`}, } +<<<<<<< ours + DatabaseExternalPluggableDatabaseOperationsInsightsManagementResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_cloud_bridge_agent", "test_agent", acctest.Required, acctest.Create, agentRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_cloud_bridge_environment", "test_environment", acctest.Required, acctest.Create, environmentRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_backup", "test_backup", acctest.Required, acctest.Create, backupRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Required, acctest.Create, databaseRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_db_home", "test_db_home", acctest.Required, acctest.Create, dbHomeRepresentation) + + BackupResourceDependencies + + GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", Optional, Create, backupDestinationNFSRepresentation) + + GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", Optional, Update, RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": Representation{RepType: Optional, Update: activationFilePath}})) + + GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", Optional, Update, vmClusterNetworkValidateRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_external_container_database", "test_external_container_database", acctest.Required, acctest.Create, externalContainerDatabaseRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_external_database_connector", "test_external_database_connector", acctest.Required, acctest.Create, externalDatabaseConnectorRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_external_pluggable_database", "test_external_pluggable_database", acctest.Required, acctest.Create, externalPluggableDatabaseRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_kms_vault", "test_vault", acctest.Required, acctest.Create, vaultRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_vault_secret", "test_secret", acctest.Required, acctest.Create, secretRepresentation) +======= DatabaseExternalPluggableDatabaseOperationsInsightsManagementResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_database_external_container_database", "test_external_container_database", acctest.Required, acctest.Create, DatabaseExternalContainerDatabaseRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_external_pluggable_database", "test_external_pluggable_database", acctest.Required, acctest.Create, DatabaseExternalPluggable1DatabaseRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_external_database_connector", "test_external_pluggable_database_connector", acctest.Required, acctest.Create, DatabaseExternalPluggableDatabaseConnectorRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_external_database_connector", "test_external_database_connector", acctest.Required, acctest.Create, DatabaseExternalContainerDatabaseConnectorRepresentation) +>>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/integrationtest/database_externalcontainerdatabases_stack_monitoring_test.go b/internal/integrationtest/database_externalcontainerdatabases_stack_monitoring_test.go index c43cfbdab5b..248aec77dc3 100644 --- a/internal/integrationtest/database_externalcontainerdatabases_stack_monitoring_test.go +++ b/internal/integrationtest/database_externalcontainerdatabases_stack_monitoring_test.go @@ -21,8 +21,27 @@ var ( "enable_stack_monitoring": acctest.Representation{RepType: acctest.Required, Create: `true`, Update: `false`}, } +<<<<<<< ours + DatabaseExternalcontainerdatabasesStackMonitoringResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_cloud_bridge_agent", "test_agent", acctest.Required, acctest.Create, agentRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_cloud_bridge_environment", "test_environment", acctest.Required, acctest.Create, environmentRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_backup", "test_backup", acctest.Required, acctest.Create, backupRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Required, acctest.Create, databaseRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_db_home", "test_db_home", acctest.Required, acctest.Create, dbHomeRepresentation) + + BackupResourceDependencies + + GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", Optional, Create, backupDestinationNFSRepresentation) + + GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", Optional, Update, RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": Representation{RepType: Optional, Update: activationFilePath}})) + + GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", Optional, Update, vmClusterNetworkValidateRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_external_container_database", "test_external_container_database", acctest.Required, acctest.Create, externalContainerDatabaseRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_external_database_connector", "test_external_database_connector", acctest.Required, acctest.Create, externalDatabaseConnectorRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_kms_vault", "test_vault", acctest.Required, acctest.Create, vaultRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_vault_secret", "test_secret", acctest.Required, acctest.Create, secretRepresentation) +======= DatabaseExternalcontainerdatabasesStackMonitoringResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_database_external_database_connector", "test_external_database_connector", acctest.Required, acctest.Create, DatabaseExternalContainerDatabaseConnectorRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_external_container_database", "test_external_container_database", acctest.Required, acctest.Create, DatabaseExternalContainerDatabaseRepresentation) +>>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/integrationtest/database_externalnoncontainerdatabases_stack_monitoring_test.go b/internal/integrationtest/database_externalnoncontainerdatabases_stack_monitoring_test.go index 0250a6db44b..6cf8a80b3b0 100644 --- a/internal/integrationtest/database_externalnoncontainerdatabases_stack_monitoring_test.go +++ b/internal/integrationtest/database_externalnoncontainerdatabases_stack_monitoring_test.go @@ -21,8 +21,27 @@ var ( "enable_stack_monitoring": acctest.Representation{RepType: acctest.Required, Create: `true`, Update: `false`}, } +<<<<<<< ours + DatabaseExternalnoncontainerdatabasesStackMonitoringResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_cloud_bridge_agent", "test_agent", acctest.Required, acctest.Create, agentRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_cloud_bridge_environment", "test_environment", acctest.Required, acctest.Create, environmentRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_backup", "test_backup", acctest.Required, acctest.Create, backupRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Required, acctest.Create, databaseRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_db_home", "test_db_home", acctest.Required, acctest.Create, dbHomeRepresentation) + + BackupResourceDependencies + + GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", Optional, Create, backupDestinationNFSRepresentation) + + GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", Optional, Update, RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": Representation{RepType: Optional, Update: activationFilePath}})) + + GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", Optional, Update, vmClusterNetworkValidateRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_external_database_connector", "test_external_database_connector", acctest.Required, acctest.Create, externalDatabaseConnectorRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_external_non_container_database", "test_external_non_container_database", acctest.Required, acctest.Create, externalNonContainerDatabaseRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_kms_vault", "test_vault", acctest.Required, acctest.Create, vaultRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_vault_secret", "test_secret", acctest.Required, acctest.Create, secretRepresentation) +======= DatabaseExternalnoncontainerdatabasesStackMonitoringResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_database_external_database_connector", "test_external_database_connector", acctest.Required, acctest.Create, DatabaseExternalDatabaseConnectorRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_external_non_container_database", "test_external_non_container_database", acctest.Required, acctest.Create, DatabaseExternalNonContainerDatabaseRepresentation) +>>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/integrationtest/database_externalpluggabledatabases_stack_monitoring_test.go b/internal/integrationtest/database_externalpluggabledatabases_stack_monitoring_test.go index ed7913ceef1..de43b027419 100644 --- a/internal/integrationtest/database_externalpluggabledatabases_stack_monitoring_test.go +++ b/internal/integrationtest/database_externalpluggabledatabases_stack_monitoring_test.go @@ -21,10 +21,30 @@ var ( "enable_stack_monitoring": acctest.Representation{RepType: acctest.Required, Create: `true`, Update: `false`}, } +<<<<<<< ours + DatabaseExternalpluggabledatabasesStackMonitoringResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_cloud_bridge_agent", "test_agent", acctest.Required, acctest.Create, agentRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_cloud_bridge_environment", "test_environment", acctest.Required, acctest.Create, environmentRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_backup", "test_backup", acctest.Required, acctest.Create, backupRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Required, acctest.Create, databaseRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_db_home", "test_db_home", acctest.Required, acctest.Create, dbHomeRepresentation) + + BackupResourceDependencies + + GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", Optional, Create, backupDestinationNFSRepresentation) + + GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", Optional, Update, RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": Representation{RepType: Optional, Update: activationFilePath}})) + + GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", Optional, Update, vmClusterNetworkValidateRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_external_container_database", "test_external_container_database", acctest.Required, acctest.Create, externalContainerDatabaseRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_external_database_connector", "test_external_database_connector", acctest.Required, acctest.Create, externalDatabaseConnectorRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_external_pluggable_database", "test_external_pluggable_database", acctest.Required, acctest.Create, externalPluggableDatabaseRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_kms_vault", "test_vault", acctest.Required, acctest.Create, vaultRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_vault_secret", "test_secret", acctest.Required, acctest.Create, secretRepresentation) +======= DatabaseExternalpluggabledatabasesStackMonitoringResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_database_external_container_database", "test_external_container_database", acctest.Required, acctest.Create, DatabaseExternalContainerDatabaseRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_external_pluggable_database", "test_external_pluggable_database", acctest.Required, acctest.Create, DatabaseExternalPluggable1DatabaseRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_external_database_connector", "test_external_pluggable_database_connector", acctest.Required, acctest.Create, DatabaseExternalPluggableDatabaseConnectorRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_external_database_connector", "test_external_database_connector", acctest.Required, acctest.Create, DatabaseExternalContainerDatabaseConnectorRepresentation) +>>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/integrationtest/database_pluggable_database_test.go b/internal/integrationtest/database_pluggable_database_test.go index 571595f22c1..090c636baa0 100644 --- a/internal/integrationtest/database_pluggable_database_test.go +++ b/internal/integrationtest/database_pluggable_database_test.go @@ -193,8 +193,22 @@ var ( database_id = "${data.oci_database_databases.t.databases.0.id}" }` +<<<<<<< ours + DatabasePluggableDatabaseResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_database_backup", "test_backup", acctest.Required, acctest.Create, backupRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Required, acctest.Create, databaseRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_db_home", "test_db_home", acctest.Required, acctest.Create, dbHomeRepresentation) + + BackupResourceDependencies + + GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", Optional, Create, backupDestinationNFSRepresentation) + + GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", Optional, Update, RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": Representation{RepType: Optional, Update: activationFilePath}})) + + GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", Optional, Update, vmClusterNetworkValidateRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) + + DefinedTagsDependencies +======= DatabasePluggableDatabaseResourceDependencies = AvailabilityDomainConfig + ResourcePluggableDatabaseBaseConfig + DefinedTagsDependencies + dbSystemForPluggableDbRepresentation +>>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/integrationtest/database_pluggable_databases_local_clone_test.go b/internal/integrationtest/database_pluggable_databases_local_clone_test.go index cd6bde6ed2d..59c63736d22 100644 --- a/internal/integrationtest/database_pluggable_databases_local_clone_test.go +++ b/internal/integrationtest/database_pluggable_databases_local_clone_test.go @@ -23,6 +23,21 @@ var ( "should_pdb_admin_account_be_locked": acctest.Representation{RepType: acctest.Optional, Create: `false`}, "lifecycle": acctest.RepresentationGroup{RepType: acctest.Required, Group: ignoreChangesLBRepresentation}, } +<<<<<<< ours + + DatabasePluggableDatabasesLocalCloneResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_database_backup", "test_backup", acctest.Required, acctest.Create, backupRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Required, acctest.Create, databaseRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_db_home", "test_db_home", acctest.Required, acctest.Create, dbHomeRepresentation) + + BackupResourceDependencies + + GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", Optional, Create, backupDestinationNFSRepresentation) + + GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", Optional, Update, RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": Representation{RepType: Optional, Update: activationFilePath}})) + + GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", Optional, Update, vmClusterNetworkValidateRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_pluggable_database", "test_pluggable_database", acctest.Required, acctest.Create, pluggableDatabaseRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) +======= +>>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/integrationtest/database_pluggable_databases_remote_clone_test.go b/internal/integrationtest/database_pluggable_databases_remote_clone_test.go index 0a05cbec711..fe61038907a 100644 --- a/internal/integrationtest/database_pluggable_databases_remote_clone_test.go +++ b/internal/integrationtest/database_pluggable_databases_remote_clone_test.go @@ -53,6 +53,19 @@ var ( display_name = "-tf-internet-gateway-clone" } +<<<<<<< ours + DatabasePluggableDatabasesRemoteCloneResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_database_backup", "test_backup", acctest.Required, acctest.Create, backupRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Required, acctest.Create, databaseRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_db_home", "test_db_home", acctest.Required, acctest.Create, dbHomeRepresentation) + + BackupResourceDependencies + + GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", Optional, Create, backupDestinationNFSRepresentation) + + GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", Optional, Update, RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": Representation{RepType: Optional, Update: activationFilePath}})) + + GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", Optional, Update, vmClusterNetworkValidateRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_pluggable_database", "test_pluggable_database", acctest.Required, acctest.Create, pluggableDatabaseRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) +======= resource "oci_core_subnet" "tClone" { availability_domain = "${data.oci_identity_availability_domains.ADsClone.availability_domains.0.name}" cidr_block = "10.1.20.0/24" @@ -161,6 +174,7 @@ var ( }` DatabasePluggableDatabasesRemoteCloneResourceDependencies = ResourcePluggableDatabaseBaseCloneConfig + dbSystemForPluggableDbCloneRepresentation +>>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/integrationtest/database_vm_cluster_add_virtual_machine_test.go b/internal/integrationtest/database_vm_cluster_add_virtual_machine_test.go index 1fed776b6c2..8ecae34adf5 100644 --- a/internal/integrationtest/database_vm_cluster_add_virtual_machine_test.go +++ b/internal/integrationtest/database_vm_cluster_add_virtual_machine_test.go @@ -61,6 +61,12 @@ var ( "ignore_changes": acctest.Representation{RepType: acctest.Required, Create: []string{`validate_vm_cluster_network`}}, } +<<<<<<< ours + DatabaseVmClusterAddVirtualMachineResourceDependencies = acctest.GenerateDataSourceFromRepresentationMap("oci_database_db_servers", "test_db_servers", acctest.Required, acctest.Create, dbServerDataSourceRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) +======= vmClusterNetworkScansHalfRackRepresentation = map[string]interface{}{ "hostname": acctest.Representation{RepType: acctest.Required, Create: `myprefix1-ivmmj-scan`, Update: `myprefix2-ivmmj-scan`}, "ips": acctest.Representation{RepType: acctest.Required, Create: []string{`192.168.19.7`, `192.168.19.6`, `192.168.19.8`}, Update: []string{`192.168.19.7`, `192.168.19.8`, `192.168.19.9`}}, @@ -156,6 +162,7 @@ var ( })) + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Optional, acctest.Update, vmClusterNetworkValidateHalfRackRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterDbServerRepresentation) +>>>>>>> theirs ) // issue-routing-tag: database/ExaCC diff --git a/internal/integrationtest/database_vm_cluster_network_download_config_file_test.go b/internal/integrationtest/database_vm_cluster_network_download_config_file_test.go index 355aaeeb7f3..416aea21b86 100644 --- a/internal/integrationtest/database_vm_cluster_network_download_config_file_test.go +++ b/internal/integrationtest/database_vm_cluster_network_download_config_file_test.go @@ -21,7 +21,12 @@ var ( "base64_encode_content": acctest.Representation{RepType: acctest.Optional, Create: `true`}, } +<<<<<<< ours + DatabaseVmClusterNetworkDownloadConfigFileResourceConfig = acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) +======= DatabaseVmClusterNetworkDownloadConfigFileResourceConfig = VmClusterNetworkValidatedResourceConfig +>>>>>>> theirs ) // issue-routing-tag: database/ExaCC diff --git a/internal/integrationtest/database_vm_cluster_network_test.go b/internal/integrationtest/database_vm_cluster_network_test.go index e8181169657..a5991c23a08 100644 --- a/internal/integrationtest/database_vm_cluster_network_test.go +++ b/internal/integrationtest/database_vm_cluster_network_test.go @@ -79,6 +79,31 @@ var ( "scan_listener_port_tcp": acctest.Representation{RepType: acctest.Optional, Create: `1521`, Update: `1522`}, "scan_listener_port_tcp_ssl": acctest.Representation{RepType: acctest.Optional, Create: `2484`, Update: `2484`}, } +<<<<<<< ours + DatabaseVmClusterNetworkVmNetworksRepresentation = map[string]interface{}{ + "network_type": acctest.Representation{RepType: acctest.Required, Create: `CLIENT`, Update: `BACKUP`}, + "nodes": acctest.RepresentationGroup{RepType: acctest.Required, Group: vmClusterNetworkVmNetworksNodesRepresentation}, + "domain_name": acctest.Representation{RepType: acctest.Optional, Create: `${oci_identity_domain.test_domain.name}`}, + "gateway": acctest.Representation{RepType: acctest.Optional, Create: `192.169.20.1`, Update: `192.169.20.2`}, + "netmask": acctest.Representation{RepType: acctest.Optional, Create: `255.255.0.0`, Update: `255.255.192.0`}, + "vlan_id": acctest.Representation{RepType: acctest.Optional, Create: `100`}, + } + DatabaseVmClusterNetworkVmNetworksNodesRepresentation = map[string]interface{}{ + "hostname": acctest.Representation{RepType: acctest.Required, Create: `sea2410c4-scan`, Update: `hostname2`}, + "ip": acctest.Representation{RepType: acctest.Required, Create: `10.0.20.14`, Update: `10.0.20.16`}, + "db_server_id": acctest.Representation{RepType: acctest.Optional, Create: `${oci_database_db_server.test_db_server.id}`}, + "state": acctest.Representation{RepType: acctest.Optional, Create: `AVAILABLE`, Update: `REQUIRES_VALIDATION`}, + "vip": acctest.Representation{RepType: acctest.Optional, Create: `10.0.20.15`, Update: `10.0.20.17`}, + "vip_hostname": acctest.Representation{RepType: acctest.Optional, Create: `sea2410c4n7-vip`, Update: `vipHostname2`}, + } + + DatabaseVmClusterNetworkResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_core_vcn", "test_vcn", acctest.Required, acctest.Create, vcnRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_core_vlan", "test_vlan", acctest.Required, acctest.Create, vlanRepresentation) + + acctest.GenerateDataSourceFromRepresentationMap("oci_database_db_servers", "test_db_servers", acctest.Required, acctest.Create, dbServerDataSourceRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + + DefinedTagsDependencies + + acctest.GenerateResourceFromRepresentationMap("oci_identity_domain", "test_domain", acctest.Required, acctest.Create, domainRepresentation) +======= DatabaseVmClusterNetwork2ScansRepresentation = map[string]interface{}{ "hostname": acctest.Representation{RepType: acctest.Required, Create: `myprefix4-ivmmj-scan`, Update: `myprefix3-ivmmj-scan`}, @@ -179,6 +204,7 @@ var ( "activation_file": acctest.Representation{RepType: acctest.Optional, Update: activationFilePath}, "maintenance_window": acctest.RepresentationGroup{RepType: acctest.Optional, Group: exadataInfrastructureMaintenanceWindowRepresentationComplete}, })) +>>>>>>> theirs ) // issue-routing-tag: database/ExaCC @@ -217,17 +243,26 @@ func TestDatabaseVmClusterNetworkResource_basic(t *testing.T) { "port": "1521", }, []string{}), +<<<<<<< ours + resource.TestCheckResourceAttr(resourceName, "vm_networks.#", "1"), + CheckResourceSetContainsElementWithProperties(resourceName, "vm_networks", map[string]string{ +======= resource.TestCheckResourceAttr(resourceName, "vm_networks.#", "2"), acctest.CheckResourceSetContainsElementWithProperties(resourceName, "vm_networks", map[string]string{ "domain_name": "oracle.com", "gateway": "192.168.20.1", "netmask": "255.255.0.0", +>>>>>>> theirs "network_type": "CLIENT", "nodes.#": "2", }, +<<<<<<< ours + []string{}), +======= []string{ "vlan_id", }), +>>>>>>> theirs func(s *terraform.State) (err error) { resId, err = acctest.FromInstanceState(s, resourceName, "id") @@ -266,7 +301,21 @@ func TestDatabaseVmClusterNetworkResource_basic(t *testing.T) { "gateway": "192.168.20.1", "netmask": "255.255.0.0", "network_type": "CLIENT", +<<<<<<< ours + "nodes.#": "1", + CheckResourceSetContainsElementWithProperties(resourceName, "nodes", map[string]string{ + "hostname": "sea2410c4-scan", + "ip": "10.0.20.14", + "state": "AVAILABLE", + "vip": "10.0.20.15", + "vip_hostname": "sea2410c4n7-vip", + }, + []string{ + "db_server_id", + }), +======= "nodes.#": "2", +>>>>>>> theirs }, []string{ "vlan_id", @@ -312,7 +361,21 @@ func TestDatabaseVmClusterNetworkResource_basic(t *testing.T) { "gateway": "192.169.20.2", "netmask": "255.255.192.0", "network_type": "BACKUP", +<<<<<<< ours + "nodes.#": "1", + CheckResourceSetContainsElementWithProperties(resourceName, "nodes", map[string]string{ + "hostname": "hostname2", + "ip": "10.0.20.16", + "state": "REQUIRES_VALIDATION", + "vip": "10.0.20.17", + "vip_hostname": "vipHostname2", + }, + []string{ + "db_server_id", + }), +======= "nodes.#": "2", +>>>>>>> theirs }, []string{ "vlan_id", @@ -364,7 +427,21 @@ func TestDatabaseVmClusterNetworkResource_basic(t *testing.T) { "gateway": "192.169.20.2", "netmask": "255.255.192.0", "network_type": "BACKUP", +<<<<<<< ours + "nodes.#": "1", + CheckResourceSetContainsElementWithProperties(datasourceName, "nodes", map[string]string{ + "hostname": "hostname2", + "ip": "10.0.20.16", + "state": "REQUIRES_VALIDATION", + "vip": "10.0.20.17", + "vip_hostname": "vipHostname2", + }, + []string{ + "db_server_id", + }), +======= "nodes.#": "2", +>>>>>>> theirs }, []string{ "vlan_id", @@ -403,7 +480,19 @@ func TestDatabaseVmClusterNetworkResource_basic(t *testing.T) { "gateway": "192.169.20.2", "netmask": "255.255.192.0", "network_type": "BACKUP", +<<<<<<< ours + "nodes.#": "1", + CheckResourceSetContainsElementWithProperties(singularDatasourceName, "nodes", map[string]string{ + "hostname": "hostname2", + "ip": "10.0.20.16", + "state": "REQUIRES_VALIDATION", + "vip": "10.0.20.17", + "vip_hostname": "vipHostname2", + }, + []string{}), +======= "nodes.#": "2", +>>>>>>> theirs }, []string{}), ), @@ -523,7 +612,11 @@ func getDatabaseVmClusterNetworkIds(compartment string) ([]string, error) { for _, exadataInfrastructureId := range exadataInfrastructureIds { listVmClusterNetworksRequest.ExadataInfrastructureId = &exadataInfrastructureId +<<<<<<< ours + listVmClusterNetworksRequest.LifecycleState = oci_database.VmClusterNetworkSummaryLifecycleStateRequiresValidationValidatedNeedsAttention +======= listVmClusterNetworksRequest.LifecycleState = oci_database.VmClusterNetworkSummaryLifecycleStateRequiresValidation +>>>>>>> theirs listVmClusterNetworksResponse, err := databaseClient.ListVmClusterNetworks(context.Background(), listVmClusterNetworksRequest) if err != nil { diff --git a/internal/integrationtest/database_vm_cluster_patch_history_entry_test.go b/internal/integrationtest/database_vm_cluster_patch_history_entry_test.go index 09fc170be5f..1b191fe2ca5 100644 --- a/internal/integrationtest/database_vm_cluster_patch_history_entry_test.go +++ b/internal/integrationtest/database_vm_cluster_patch_history_entry_test.go @@ -25,9 +25,15 @@ var ( "vm_cluster_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_database_vm_cluster.test_vm_cluster.id}`}, } +<<<<<<< ours + DatabaseVmClusterPatchHistoryEntryResourceConfig = acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) +======= DatabaseVmClusterPatchHistoryEntryResourceConfig = acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, DatabaseAutonomousExadataInfrastructureRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, DatabaseVmClusterNetworkRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, DatabaseCloudAutonomousVmClusterRepresentation) +>>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/integrationtest/database_vm_cluster_patch_test.go b/internal/integrationtest/database_vm_cluster_patch_test.go index 26c7f18e7f4..2cccde9c89d 100644 --- a/internal/integrationtest/database_vm_cluster_patch_test.go +++ b/internal/integrationtest/database_vm_cluster_patch_test.go @@ -25,8 +25,14 @@ var ( "vm_cluster_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_database_vm_cluster.test_vm_cluster.id}`}, } +<<<<<<< ours + DatabaseVmClusterPatchResourceConfig = acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) +======= DatabaseVmClusterPatchResourceConfig = VmClusterNetworkValidatedResourceConfig + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, DatabaseCloudAutonomousVmClusterRepresentation) +>>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/integrationtest/database_vm_cluster_recommended_network_test.go b/internal/integrationtest/database_vm_cluster_recommended_network_test.go index 0255ce5bf93..2d3773bc7d0 100644 --- a/internal/integrationtest/database_vm_cluster_recommended_network_test.go +++ b/internal/integrationtest/database_vm_cluster_recommended_network_test.go @@ -19,7 +19,12 @@ var ( "compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`}, "display_name": acctest.Representation{RepType: acctest.Required, Create: `testVmClusterNw`}, "exadata_infrastructure_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_database_exadata_infrastructure.test_exadata_infrastructure.id}`}, +<<<<<<< ours + "networks": acctest.RepresentationGroup{RepType: acctest.Required, Group: vmClusterRecommendedNetworkNetworksRepresentation}, + "db_servers": acctest.Representation{RepType: acctest.Optional, Create: []string{`dbServers`}}, +======= "networks": []acctest.RepresentationGroup{{RepType: acctest.Required, Group: DatabaseVmClusterRecommendedNetworkNetworksSingularDataSourceRepresentation}, {RepType: acctest.Required, Group: DatabaseVmClusterRecommendedNetworkbackupNetworksRepresentation}}, +>>>>>>> theirs "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")}`}, "dns": acctest.Representation{RepType: acctest.Optional, Create: []string{`192.168.10.10`}}, "freeform_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"Department": "Finance"}, Update: map[string]string{"Department": "Accounting"}}, @@ -74,6 +79,7 @@ func TestDatabaseVmClusterRecommendedNetworkResource_basic(t *testing.T) { compartmentIdVariableStr, Check: acctest.ComposeAggregateTestCheckFuncWrapper( resource.TestCheckResourceAttr(singularDatasourceName, "compartment_id", compartmentId), + resource.TestCheckResourceAttr(singularDatasourceName, "db_servers.#", "1"), resource.TestCheckResourceAttr(singularDatasourceName, "display_name", "testVmClusterNw"), resource.TestCheckResourceAttrSet(singularDatasourceName, "exadata_infrastructure_id"), resource.TestCheckResourceAttr(singularDatasourceName, "freeform_tags.%", "1"), diff --git a/internal/integrationtest/database_vm_cluster_remove_virtual_machine_test.go b/internal/integrationtest/database_vm_cluster_remove_virtual_machine_test.go index e1a1d94b3b6..5038d8e50c5 100644 --- a/internal/integrationtest/database_vm_cluster_remove_virtual_machine_test.go +++ b/internal/integrationtest/database_vm_cluster_remove_virtual_machine_test.go @@ -24,6 +24,12 @@ var ( "db_server_id": acctest.Representation{RepType: acctest.Required, Create: `${data.oci_database_db_servers.test_db_servers.db_servers.2.id}`}, } +<<<<<<< ours + DatabaseVmClusterRemoveVirtualMachineResourceDependencies = acctest.GenerateDataSourceFromRepresentationMap("oci_database_db_servers", "test_db_servers", acctest.Required, acctest.Create, dbServerDataSourceRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) +======= vmClusterRemoveDbServerRepresentation = map[string]interface{}{ "compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`}, "cpu_core_count": acctest.Representation{RepType: acctest.Required, Create: `6`, Update: `6`}, @@ -53,6 +59,7 @@ var ( })) + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Optional, acctest.Update, vmClusterNetworkValidateHalfRackRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRemoveDbServerRepresentation) +>>>>>>> theirs ) // issue-routing-tag: database/ExaCC diff --git a/internal/integrationtest/database_vm_cluster_test.go b/internal/integrationtest/database_vm_cluster_test.go index 8d6c4d16883..f0b91e54e5d 100644 --- a/internal/integrationtest/database_vm_cluster_test.go +++ b/internal/integrationtest/database_vm_cluster_test.go @@ -73,7 +73,13 @@ var ( "is_incident_logs_enabled": acctest.Representation{RepType: acctest.Optional, Create: `false`, Update: `true`}, } +<<<<<<< ours + DatabaseVmClusterResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + + DefinedTagsDependencies +======= DatabaseVmClusterResourceDependencies = VmClusterNetworkValidatedResourceConfig +>>>>>>> theirs ) // issue-routing-tag: database/ExaCC diff --git a/internal/integrationtest/database_vm_cluster_update_history_entry_test.go b/internal/integrationtest/database_vm_cluster_update_history_entry_test.go index ed5a2766132..3aff66dcbaa 100644 --- a/internal/integrationtest/database_vm_cluster_update_history_entry_test.go +++ b/internal/integrationtest/database_vm_cluster_update_history_entry_test.go @@ -28,8 +28,14 @@ var ( "update_type": acctest.Representation{RepType: acctest.Optional, Create: `GI_UPGRADE`}, } +<<<<<<< ours + DatabaseVmClusterUpdateHistoryEntryResourceConfig = acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) +======= DatabaseVmClusterUpdateHistoryEntryResourceConfig = VmClusterNetworkValidatedResourceConfig + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, DatabaseCloudAutonomousVmClusterRepresentation) +>>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/integrationtest/database_vm_cluster_update_test.go b/internal/integrationtest/database_vm_cluster_update_test.go index acfc7f46d2d..b73f0a97ebb 100644 --- a/internal/integrationtest/database_vm_cluster_update_test.go +++ b/internal/integrationtest/database_vm_cluster_update_test.go @@ -28,8 +28,14 @@ var ( "update_type": acctest.Representation{RepType: acctest.Optional, Create: `GI_UPGRADE`}, } +<<<<<<< ours + DatabaseVmClusterUpdateResourceConfig = acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) +======= DatabaseVmClusterUpdateResourceConfig = VmClusterNetworkValidatedResourceConfig + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, DatabaseCloudAutonomousVmClusterRepresentation) +>>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/service/database/database_db_server_data_source.go b/internal/service/database/database_db_server_data_source.go index d61b70597e6..58341903c3b 100644 --- a/internal/service/database/database_db_server_data_source.go +++ b/internal/service/database/database_db_server_data_source.go @@ -108,6 +108,10 @@ func DatabaseDbServerDataSource() *schema.Resource { Type: schema.TypeInt, Computed: true, }, + "shape": { + Type: schema.TypeString, + Computed: true, + }, "state": { Type: schema.TypeString, Computed: true, @@ -226,6 +230,10 @@ func (s *DatabaseDbServerDataSourceCrud) SetData() error { s.D.Set("memory_size_in_gbs", *s.Res.MemorySizeInGBs) } + if s.Res.Shape != nil { + s.D.Set("shape", *s.Res.Shape) + } + s.D.Set("state", s.Res.LifecycleState) if s.Res.TimeCreated != nil { diff --git a/internal/service/database/database_db_servers_data_source.go b/internal/service/database/database_db_servers_data_source.go index 9df536912e0..a131ebc253d 100644 --- a/internal/service/database/database_db_servers_data_source.go +++ b/internal/service/database/database_db_servers_data_source.go @@ -134,6 +134,10 @@ func DatabaseDbServersDataSource() *schema.Resource { Type: schema.TypeInt, Computed: true, }, + "shape": { + Type: schema.TypeString, + Computed: true, + }, "state": { Type: schema.TypeString, Computed: true, @@ -283,6 +287,10 @@ func (s *DatabaseDbServersDataSourceCrud) SetData() error { dbServer["memory_size_in_gbs"] = *r.MemorySizeInGBs } + if r.Shape != nil { + dbServer["shape"] = *r.Shape + } + dbServer["state"] = r.LifecycleState if r.TimeCreated != nil { diff --git a/internal/service/database/database_exadata_infrastructure_data_source.go b/internal/service/database/database_exadata_infrastructure_data_source.go index eebaef030ce..b24c9594d37 100644 --- a/internal/service/database/database_exadata_infrastructure_data_source.go +++ b/internal/service/database/database_exadata_infrastructure_data_source.go @@ -70,6 +70,12 @@ func (s *DatabaseExadataInfrastructureDataSourceCrud) SetData() error { s.D.Set("activated_storage_count", *s.Res.ActivatedStorageCount) } + if s.Res.AdditionalComputeCount != nil { + s.D.Set("additional_compute_count", *s.Res.AdditionalComputeCount) + } + + s.D.Set("additional_compute_system_model", s.Res.AdditionalComputeSystemModel) + if s.Res.AdditionalStorageCount != nil { s.D.Set("additional_storage_count", *s.Res.AdditionalStorageCount) } diff --git a/internal/service/database/database_exadata_infrastructure_resource.go b/internal/service/database/database_exadata_infrastructure_resource.go index b5c487bff54..3648b445578 100644 --- a/internal/service/database/database_exadata_infrastructure_resource.go +++ b/internal/service/database/database_exadata_infrastructure_resource.go @@ -273,6 +273,14 @@ func DatabaseExadataInfrastructureResource() *schema.Resource { Type: schema.TypeInt, Computed: true, }, + "additional_compute_count": { + Type: schema.TypeInt, + Computed: true, + }, + "additional_compute_system_model": { + Type: schema.TypeString, + Computed: true, + }, "additional_storage_count": { Type: schema.TypeInt, Optional: true, @@ -647,6 +655,15 @@ func (s *DatabaseExadataInfrastructureResourceCrud) Update() error { request := oci_database.UpdateExadataInfrastructureRequest{} + if additionalComputeCount, ok := s.D.GetOkExists("additional_compute_count"); ok { + tmp := additionalComputeCount.(int) + request.AdditionalComputeCount = &tmp + } + + if additionalComputeSystemModel, ok := s.D.GetOkExists("additional_compute_system_model"); ok { + request.AdditionalComputeSystemModel = oci_database.UpdateExadataInfrastructureDetailsAdditionalComputeSystemModelEnum(additionalComputeSystemModel.(string)) + } + if additionalStorageCount, ok := s.D.GetOkExists("additional_storage_count"); ok { tmp := additionalStorageCount.(int) request.AdditionalStorageCount = &tmp @@ -815,6 +832,12 @@ func (s *DatabaseExadataInfrastructureResourceCrud) SetData() error { s.D.Set("activated_storage_count", *s.Res.ActivatedStorageCount) } + if s.Res.AdditionalComputeCount != nil { + s.D.Set("additional_compute_count", *s.Res.AdditionalComputeCount) + } + + s.D.Set("additional_compute_system_model", s.Res.AdditionalComputeSystemModel) + if s.Res.AdditionalStorageCount != nil { s.D.Set("additional_storage_count", *s.Res.AdditionalStorageCount) } diff --git a/internal/service/database/database_exadata_infrastructures_data_source.go b/internal/service/database/database_exadata_infrastructures_data_source.go index 8414e42d8ad..a8aa6d879b5 100644 --- a/internal/service/database/database_exadata_infrastructures_data_source.go +++ b/internal/service/database/database_exadata_infrastructures_data_source.go @@ -114,6 +114,12 @@ func (s *DatabaseExadataInfrastructuresDataSourceCrud) SetData() error { exadataInfrastructure["activated_storage_count"] = *r.ActivatedStorageCount } + if r.AdditionalComputeCount != nil { + exadataInfrastructure["additional_compute_count"] = *r.AdditionalComputeCount + } + + exadataInfrastructure["additional_compute_system_model"] = r.AdditionalComputeSystemModel + if r.AdditionalStorageCount != nil { exadataInfrastructure["additional_storage_count"] = *r.AdditionalStorageCount } diff --git a/internal/service/database/database_export.go b/internal/service/database/database_export.go index bef44b16459..05554978d0b 100644 --- a/internal/service/database/database_export.go +++ b/internal/service/database/database_export.go @@ -286,7 +286,11 @@ var exportDatabaseVmClusterNetworkHints = &tf_export.TerraformResourceHints{ DiscoverableLifecycleStates: []string{ string(oci_database.VmClusterNetworkLifecycleStateRequiresValidation), string(oci_database.VmClusterNetworkLifecycleStateValidated), +<<<<<<< ours + string(oci_database.VmClusterNetworkLifecycleStateNeedsAttention), +======= string(oci_database.VmClusterNetworkLifecycleStateAllocated), +>>>>>>> theirs }, } diff --git a/internal/service/database/database_vm_cluster_network_resource.go b/internal/service/database/database_vm_cluster_network_resource.go index 201236cb00e..ee2e923e04f 100644 --- a/internal/service/database/database_vm_cluster_network_resource.go +++ b/internal/service/database/database_vm_cluster_network_resource.go @@ -94,18 +94,6 @@ func DatabaseVmClusterNetworkResource() *schema.Resource { Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ // Required - "domain_name": { - Type: schema.TypeString, - Required: true, - }, - "gateway": { - Type: schema.TypeString, - Required: true, - }, - "netmask": { - Type: schema.TypeString, - Required: true, - }, "network_type": { Type: schema.TypeString, Required: true, @@ -127,6 +115,16 @@ func DatabaseVmClusterNetworkResource() *schema.Resource { }, // Optional + "db_server_id": { + Type: schema.TypeString, + Optional: true, + Computed: true, + }, + "state": { + Type: schema.TypeString, + Optional: true, + Computed: true, + }, "vip": { Type: schema.TypeString, Optional: true, @@ -142,13 +140,29 @@ func DatabaseVmClusterNetworkResource() *schema.Resource { }, }, }, + + // Optional + "domain_name": { + Type: schema.TypeString, + Optional: true, + Computed: true, + }, + "gateway": { + Type: schema.TypeString, + Optional: true, + Computed: true, + }, + "netmask": { + Type: schema.TypeString, + Optional: true, + Computed: true, + }, "vlan_id": { Type: schema.TypeString, - Required: true, + Optional: true, + Computed: true, }, - // Optional - // Computed }, }, @@ -266,6 +280,7 @@ func (s *DatabaseVmClusterNetworkResourceCrud) CreatedTarget() []string { return []string{ string(oci_database.VmClusterNetworkLifecycleStateRequiresValidation), string(oci_database.VmClusterNetworkLifecycleStateValidated), + string(oci_database.VmClusterNetworkLifecycleStateNeedsAttention), } } @@ -294,6 +309,7 @@ func (s *DatabaseVmClusterNetworkResourceCrud) UpdatedTarget() []string { string(oci_database.VmClusterNetworkLifecycleStateValidated), string(oci_database.VmClusterNetworkLifecycleStateValidationFailed), string(oci_database.VmClusterNetworkLifecycleStateAllocated), + string(oci_database.VmClusterNetworkLifecycleStateNeedsAttention), } } @@ -677,6 +693,11 @@ func parseVmClusterNetworkCompositeId(compositeId string) (exadataInfrastructure func (s *DatabaseVmClusterNetworkResourceCrud) mapToNodeDetails(fieldKeyFormat string) (oci_database.NodeDetails, error) { result := oci_database.NodeDetails{} + if dbServerId, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "db_server_id")); ok { + tmp := dbServerId.(string) + result.DbServerId = &tmp + } + if hostname, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "hostname")); ok { tmp := hostname.(string) result.Hostname = &tmp @@ -687,7 +708,15 @@ func (s *DatabaseVmClusterNetworkResourceCrud) mapToNodeDetails(fieldKeyFormat s result.Ip = &tmp } +<<<<<<< ours + if state, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "state")); ok { + result.LifecycleState = oci_database.NodeDetailsLifecycleStateEnum(state.(string)) + } + + if vip, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "vip")); ok { +======= if vip, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "vip")); ok && vip != "" { +>>>>>>> theirs tmp := vip.(string) result.Vip = &tmp } @@ -703,6 +732,10 @@ func (s *DatabaseVmClusterNetworkResourceCrud) mapToNodeDetails(fieldKeyFormat s func NodeDetailsToMap(obj oci_database.NodeDetails) map[string]interface{} { result := map[string]interface{}{} + if obj.DbServerId != nil { + result["db_server_id"] = string(*obj.DbServerId) + } + if obj.Hostname != nil { result["hostname"] = string(*obj.Hostname) } @@ -711,6 +744,8 @@ func NodeDetailsToMap(obj oci_database.NodeDetails) map[string]interface{} { result["ip"] = string(*obj.Ip) } + result["state"] = string(obj.LifecycleState) + if obj.Vip != nil { result["vip"] = string(*obj.Vip) } @@ -870,12 +905,18 @@ func VmNetworkDetailsToMap(obj oci_database.VmNetworkDetails, datasource bool) m func nodesHashCodeForSets(v interface{}) int { var buf bytes.Buffer m := v.(map[string]interface{}) + if dbServerId, ok := m["db_server_id"]; ok && dbServerId != "" { + buf.WriteString(fmt.Sprintf("%v-", dbServerId)) + } if hostname, ok := m["hostname"]; ok && hostname != "" { buf.WriteString(fmt.Sprintf("%v-", hostname)) } if ip, ok := m["ip"]; ok && ip != "" { buf.WriteString(fmt.Sprintf("%v-", ip)) } + if state, ok := m["state"]; ok && state != "" { + buf.WriteString(fmt.Sprintf("%v-", state)) + } if vip, ok := m["vip"]; ok && vip != "" { buf.WriteString(fmt.Sprintf("%v-", vip)) } diff --git a/internal/service/database/database_vm_cluster_recommended_network_data_source.go b/internal/service/database/database_vm_cluster_recommended_network_data_source.go index ef81208e6a8..7357d5358da 100644 --- a/internal/service/database/database_vm_cluster_recommended_network_data_source.go +++ b/internal/service/database/database_vm_cluster_recommended_network_data_source.go @@ -22,7 +22,23 @@ func DatabaseVmClusterRecommendedNetworkDataSource() *schema.Resource { // Required "compartment_id": { Type: schema.TypeString, +<<<<<<< ours + Computed: true, + }, + "db_servers": { + Type: schema.TypeList, + Optional: true, + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + }, + "defined_tags": { + Type: schema.TypeMap, + Computed: true, + Elem: schema.TypeString, +======= Required: true, +>>>>>>> theirs }, "display_name": { Type: schema.TypeString, @@ -185,6 +201,10 @@ func DatabaseVmClusterRecommendedNetworkDataSource() *schema.Resource { // Optional // Computed + "db_server_id": { + Type: schema.TypeString, + Computed: true, + }, "hostname": { Type: schema.TypeString, Computed: true, @@ -193,6 +213,10 @@ func DatabaseVmClusterRecommendedNetworkDataSource() *schema.Resource { Type: schema.TypeString, Computed: true, }, + "state": { + Type: schema.TypeString, + Computed: true, + }, "vip": { Type: schema.TypeString, Computed: true, @@ -241,6 +265,19 @@ func (s *DatabaseVmClusterRecommendedNetworkDataSourceCrud) Get() error { request.CompartmentId = &tmp } + if dbServers, ok := s.D.GetOkExists("db_servers"); ok { + interfaces := dbServers.([]interface{}) + tmp := make([]string, len(interfaces)) + for i := range interfaces { + if interfaces[i] != nil { + tmp[i] = interfaces[i].(string) + } + } + if len(tmp) != 0 || s.D.HasChange("db_servers") { + request.DbServers = tmp + } + } + if definedTags, ok := s.D.GetOkExists("defined_tags"); ok { convertedDefinedTags, err := tfresource.MapToDefinedTags(definedTags.(map[string]interface{})) if err != nil { diff --git a/website/docs/d/database_db_server.html.markdown b/website/docs/d/database_db_server.html.markdown index b17173d68e9..163283b1d29 100644 --- a/website/docs/d/database_db_server.html.markdown +++ b/website/docs/d/database_db_server.html.markdown @@ -54,6 +54,7 @@ The following attributes are exported: * `max_db_node_storage_in_gbs` - The total local node storage available in GBs. * `max_memory_in_gbs` - The total memory available in GBs. * `memory_size_in_gbs` - The allocated memory in GBs on the Db server. +* `shape` - The shape of the Db server. The shape determines the amount of CPU, storage, and memory resources available. * `state` - The current state of the Db server. * `time_created` - The date and time that the Db Server was created. * `vm_cluster_ids` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VM Clusters associated with the Db server. diff --git a/website/docs/d/database_db_servers.html.markdown b/website/docs/d/database_db_servers.html.markdown index b674d585428..b1871df2078 100644 --- a/website/docs/d/database_db_servers.html.markdown +++ b/website/docs/d/database_db_servers.html.markdown @@ -66,6 +66,7 @@ The following attributes are exported: * `max_db_node_storage_in_gbs` - The total local node storage available in GBs. * `max_memory_in_gbs` - The total memory available in GBs. * `memory_size_in_gbs` - The allocated memory in GBs on the Db server. +* `shape` - The shape of the Db server. The shape determines the amount of CPU, storage, and memory resources available. * `state` - The current state of the Db server. * `time_created` - The date and time that the Db Server was created. * `vm_cluster_ids` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VM Clusters associated with the Db server. diff --git a/website/docs/d/database_db_system_shapes.html.markdown b/website/docs/d/database_db_system_shapes.html.markdown index beb2f22bf06..a87ae708285 100644 --- a/website/docs/d/database_db_system_shapes.html.markdown +++ b/website/docs/d/database_db_system_shapes.html.markdown @@ -52,14 +52,14 @@ The following attributes are exported: * `available_memory_per_node_in_gbs` - The maximum memory available per database node for this shape. Only applicable to ExaCC Elastic shapes. * `core_count_increment` - The discrete number by which the CPU core count for this shape can be increased or decreased. * `max_storage_count` - The maximum number of Exadata storage servers available for the Exadata infrastructure. -* `maximum_node_count` - The maximum number of database nodes available for this shape. +* `maximum_node_count` - The maximum number of compute servers available for this shape. * `min_core_count_per_node` - The minimum number of CPU cores that can be enabled per node for this shape. * `min_data_storage_in_tbs` - The minimum data storage that need be allocated for this shape. * `min_db_node_storage_per_node_in_gbs` - The minimum Db Node storage that need be allocated per node for this shape. * `min_memory_per_node_in_gbs` - The minimum memory that need be allocated per node for this shape. * `min_storage_count` - The minimum number of Exadata storage servers available for the Exadata infrastructure. * `minimum_core_count` - The minimum number of CPU cores that can be enabled on the DB system for this shape. -* `minimum_node_count` - The minimum number of database nodes available for this shape. +* `minimum_node_count` - The minimum number of compute servers available for this shape. * `name` - The name of the shape used for the DB system. * `shape` - Deprecated. Use `name` instead of `shape`. * `shape_family` - The family of the shape used for the DB system. diff --git a/website/docs/d/database_exadata_infrastructure.html.markdown b/website/docs/d/database_exadata_infrastructure.html.markdown index e09f7b6ef2a..92ed584e406 100644 --- a/website/docs/d/database_exadata_infrastructure.html.markdown +++ b/website/docs/d/database_exadata_infrastructure.html.markdown @@ -35,6 +35,8 @@ The following arguments are supported: The following attributes are exported: * `activated_storage_count` - The requested number of additional storage servers activated for the Exadata infrastructure. +* `additional_compute_count` - The requested number of additional compute servers for the Exadata infrastructure. +* `additional_compute_system_model` - Oracle Exadata System Model specification. The system model determines the amount of compute or storage server resources available for use. For more information, please see [System and Shape Configuration Options] (https://docs.oracle.com/en/engineered-systems/exadata-cloud-at-customer/ecccm/ecc-system-config-options.html#GUID-9E090174-5C57-4EB1-9243-B470F9F10D6B) * `additional_storage_count` - The requested number of additional storage servers for the Exadata infrastructure. * `admin_network_cidr` - The CIDR block for the Exadata administration network. * `cloud_control_plane_server1` - The IP address for the first control plane server. diff --git a/website/docs/d/database_exadata_infrastructures.html.markdown b/website/docs/d/database_exadata_infrastructures.html.markdown index 0993ef3db15..3f0a39eaf3e 100644 --- a/website/docs/d/database_exadata_infrastructures.html.markdown +++ b/website/docs/d/database_exadata_infrastructures.html.markdown @@ -47,6 +47,8 @@ The following attributes are exported: The following attributes are exported: * `activated_storage_count` - The requested number of additional storage servers activated for the Exadata infrastructure. +* `additional_compute_count` - The requested number of additional compute servers for the Exadata infrastructure. +* `additional_compute_system_model` - Oracle Exadata System Model specification. The system model determines the amount of compute or storage server resources available for use. For more information, please see [System and Shape Configuration Options] (https://docs.oracle.com/en/engineered-systems/exadata-cloud-at-customer/ecccm/ecc-system-config-options.html#GUID-9E090174-5C57-4EB1-9243-B470F9F10D6B) * `additional_storage_count` - The requested number of additional storage servers for the Exadata infrastructure. * `admin_network_cidr` - The CIDR block for the Exadata administration network. * `cloud_control_plane_server1` - The IP address for the first control plane server. diff --git a/website/docs/d/database_vm_cluster_network.html.markdown b/website/docs/d/database_vm_cluster_network.html.markdown index afd13c94aad..07c47d80afe 100644 --- a/website/docs/d/database_vm_cluster_network.html.markdown +++ b/website/docs/d/database_vm_cluster_network.html.markdown @@ -51,7 +51,7 @@ The following attributes are exported: * `port` - The SCAN TCPIP port. Default is 1521. * `scan_listener_port_tcp` - The SCAN TCPIP port. Default is 1521. * `scan_listener_port_tcp_ssl` - The SCAN TCPIP SSL port. Default is 2484. -* `state` - The current state of the VM cluster network. +* `state` - The current state of the VM cluster network. CREATING - The resource is being created REQUIRES_VALIDATION - The resource is created and may not be usable until it is validated. VALIDATING - The resource is being validated and not available to use. VALIDATED - The resource is validated and is available for consumption by VM cluster. VALIDATION_FAILED - The resource validation has failed and might require user input to be corrected. UPDATING - The resource is being updated and not available to use. ALLOCATED - The resource is is currently being used by VM cluster. TERMINATING - The resource is being deleted and not available to use. TERMINATED - The resource is deleted and unavailable. FAILED - The resource is in a failed state due to validation or other errors. NEEDS_ATTENTION - The resource is in needs attention state as some of it's child nodes are not validated and unusable by VM cluster. * `time_created` - The date and time when the VM cluster network was created. * `vm_cluster_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the associated VM Cluster. * `vm_networks` - Details of the client and backup networks. @@ -60,8 +60,10 @@ The following attributes are exported: * `netmask` - The network netmask. * `network_type` - The network type. * `nodes` - The list of node details. + * `db_server_id` - The Db server associated with the node. * `hostname` - The node host name. * `ip` - The node IP address. + * `state` - The current state of the VM cluster network nodes. CREATING - The resource is being created REQUIRES_VALIDATION - The resource is created and may not be usable until it is validated. VALIDATING - The resource is being validated and not available to use. VALIDATED - The resource is validated and is available for consumption by VM cluster. VALIDATION_FAILED - The resource validation has failed and might require user input to be corrected. UPDATING - The resource is being updated and not available to use. ALLOCATED - The resource is currently being used by VM cluster. TERMINATING - The resource is being deleted and not available to use. TERMINATED - The resource is deleted and unavailable. FAILED - The resource is in a failed state due to validation or other errors. * `vip` - The node virtual IP (VIP) address. * `vip_hostname` - The node virtual IP (VIP) host name. * `vlan_id` - The network VLAN ID. diff --git a/website/docs/d/database_vm_cluster_networks.html.markdown b/website/docs/d/database_vm_cluster_networks.html.markdown index d8eb1b8a6b4..7ab5a02dfe1 100644 --- a/website/docs/d/database_vm_cluster_networks.html.markdown +++ b/website/docs/d/database_vm_cluster_networks.html.markdown @@ -62,7 +62,7 @@ The following attributes are exported: * `port` - The SCAN TCPIP port. Default is 1521. * `scan_listener_port_tcp` - The SCAN TCPIP port. Default is 1521. * `scan_listener_port_tcp_ssl` - The SCAN TCPIP SSL port. Default is 2484. -* `state` - The current state of the VM cluster network. +* `state` - The current state of the VM cluster network. CREATING - The resource is being created REQUIRES_VALIDATION - The resource is created and may not be usable until it is validated. VALIDATING - The resource is being validated and not available to use. VALIDATED - The resource is validated and is available for consumption by VM cluster. VALIDATION_FAILED - The resource validation has failed and might require user input to be corrected. UPDATING - The resource is being updated and not available to use. ALLOCATED - The resource is is currently being used by VM cluster. TERMINATING - The resource is being deleted and not available to use. TERMINATED - The resource is deleted and unavailable. FAILED - The resource is in a failed state due to validation or other errors. NEEDS_ATTENTION - The resource is in needs attention state as some of it's child nodes are not validated and unusable by VM cluster. * `time_created` - The date and time when the VM cluster network was created. * `vm_cluster_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the associated VM Cluster. * `vm_networks` - Details of the client and backup networks. @@ -71,8 +71,10 @@ The following attributes are exported: * `netmask` - The network netmask. * `network_type` - The network type. * `nodes` - The list of node details. + * `db_server_id` - The Db server associated with the node. * `hostname` - The node host name. * `ip` - The node IP address. + * `state` - The current state of the VM cluster network nodes. CREATING - The resource is being created REQUIRES_VALIDATION - The resource is created and may not be usable until it is validated. VALIDATING - The resource is being validated and not available to use. VALIDATED - The resource is validated and is available for consumption by VM cluster. VALIDATION_FAILED - The resource validation has failed and might require user input to be corrected. UPDATING - The resource is being updated and not available to use. ALLOCATED - The resource is currently being used by VM cluster. TERMINATING - The resource is being deleted and not available to use. TERMINATED - The resource is deleted and unavailable. FAILED - The resource is in a failed state due to validation or other errors. * `vip` - The node virtual IP (VIP) address. * `vip_hostname` - The node virtual IP (VIP) host name. * `vlan_id` - The network VLAN ID. diff --git a/website/docs/d/database_vm_cluster_recommended_network.html.markdown b/website/docs/d/database_vm_cluster_recommended_network.html.markdown index 45ed3a48d90..64676d51d3c 100644 --- a/website/docs/d/database_vm_cluster_recommended_network.html.markdown +++ b/website/docs/d/database_vm_cluster_recommended_network.html.markdown @@ -33,6 +33,7 @@ data "oci_database_vm_cluster_recommended_network" "test_vm_cluster_recommended_ } #Optional + db_servers = var.vm_cluster_recommended_network_db_servers defined_tags = map(oci_identity_tag_namespace.tag-namespace1.name.oci_identity_tag.tag1.name, var.vm_cluster_recommended_network_defined_tags_value) dns = var.vm_cluster_recommended_network_dns freeform_tags = var.vm_cluster_recommended_network_freeform_tags @@ -47,6 +48,7 @@ data "oci_database_vm_cluster_recommended_network" "test_vm_cluster_recommended_ The following arguments are supported: * `compartment_id` - (Required) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment. +* `db_servers` - (Optional) The list of Db server Ids to configure network. * `defined_tags` - (Optional) Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). * `display_name` - (Required) The user-friendly name for the VM cluster network. The name does not need to be unique. * `dns` - (Optional) The list of DNS server IP addresses. Maximum of 3 allowed. @@ -87,8 +89,10 @@ The following attributes are exported: * `netmask` - The network netmask. * `network_type` - The network type. * `nodes` - The list of node details. + * `db_server_id` - The Db server associated with the node. * `hostname` - The node host name. * `ip` - The node IP address. + * `state` - The current state of the VM cluster network nodes. CREATING - The resource is being created REQUIRES_VALIDATION - The resource is created and may not be usable until it is validated. VALIDATING - The resource is being validated and not available to use. VALIDATED - The resource is validated and is available for consumption by VM cluster. VALIDATION_FAILED - The resource validation has failed and might require user input to be corrected. UPDATING - The resource is being updated and not available to use. ALLOCATED - The resource is currently being used by VM cluster. TERMINATING - The resource is being deleted and not available to use. TERMINATED - The resource is deleted and unavailable. FAILED - The resource is in a failed state due to validation or other errors. * `vip` - The node virtual IP (VIP) address. * `vip_hostname` - The node virtual IP (VIP) host name. * `vlan_id` - The network VLAN ID. diff --git a/website/docs/r/database_exadata_infrastructure.html.markdown b/website/docs/r/database_exadata_infrastructure.html.markdown index 02fae66187f..58e5a1324ec 100644 --- a/website/docs/r/database_exadata_infrastructure.html.markdown +++ b/website/docs/r/database_exadata_infrastructure.html.markdown @@ -129,6 +129,8 @@ Any change to a property that does not support update will force the destruction The following attributes are exported: * `activated_storage_count` - The requested number of additional storage servers activated for the Exadata infrastructure. +* `additional_compute_count` - The requested number of additional compute servers for the Exadata infrastructure. +* `additional_compute_system_model` - Oracle Exadata System Model specification. The system model determines the amount of compute or storage server resources available for use. For more information, please see [System and Shape Configuration Options] (https://docs.oracle.com/en/engineered-systems/exadata-cloud-at-customer/ecccm/ecc-system-config-options.html#GUID-9E090174-5C57-4EB1-9243-B470F9F10D6B) * `additional_storage_count` - The requested number of additional storage servers for the Exadata infrastructure. * `admin_network_cidr` - The CIDR block for the Exadata administration network. * `cloud_control_plane_server1` - The IP address for the first control plane server. diff --git a/website/docs/r/database_vm_cluster_network.html.markdown b/website/docs/r/database_vm_cluster_network.html.markdown index 5ae1647f9be..3e7fd0341d3 100644 --- a/website/docs/r/database_vm_cluster_network.html.markdown +++ b/website/docs/r/database_vm_cluster_network.html.markdown @@ -34,9 +34,12 @@ resource "oci_database_vm_cluster_network" "test_vm_cluster_network" { } vm_networks { #Required +<<<<<<< ours +======= domain_name = var.vm_cluster_network_vm_networks_domain_name gateway = var.vm_cluster_network_vm_networks_gateway netmask = var.vm_cluster_network_vm_networks_netmask +>>>>>>> theirs network_type = var.vm_cluster_network_vm_networks_network_type nodes { #Required @@ -44,9 +47,16 @@ resource "oci_database_vm_cluster_network" "test_vm_cluster_network" { ip = var.vm_cluster_network_vm_networks_nodes_ip #Optional + db_server_id = oci_database_db_server.test_db_server.id + state = var.vm_cluster_network_vm_networks_nodes_state vip = var.vm_cluster_network_vm_networks_nodes_vip vip_hostname = var.vm_cluster_network_vm_networks_nodes_vip_hostname } + + #Optional + domain_name = oci_identity_domain.test_domain.name + gateway = var.vm_cluster_network_vm_networks_gateway + netmask = var.vm_cluster_network_vm_networks_netmask vlan_id = var.vm_cluster_network_vm_networks_vlan_id } @@ -78,16 +88,18 @@ The following arguments are supported: * `scan_listener_port_tcp_ssl` - (Optional) (Updatable) The SCAN TCPIP SSL port. Default is 2484. * `validate_vm_cluster_network` - (Optional) (Updatable) A boolean flag indicating whether or not to validate VM cluster network after creation. Updates are not allowed on validated exadata VM cluster network. Note: Deleting a [VM Cluster](https://registry.terraform.io/providers/hashicorp/oci/latest/docs/resources/database_vm_cluster) resource puts a VM Cluster Network in `REQUIRES_VALIDATION` state. This results in `After applying this step and refreshing, the plan was not empty` error and users should apply the terraform configuration again to validate the VM Cluster Network. * `vm_networks` - (Required) (Updatable) Details of the client and backup networks. - * `domain_name` - (Required) (Updatable) The network domain name. - * `gateway` - (Required) (Updatable) The network gateway. - * `netmask` - (Required) (Updatable) The network netmask. + * `domain_name` - (Optional) (Updatable) The network domain name. + * `gateway` - (Optional) (Updatable) The network gateway. + * `netmask` - (Optional) (Updatable) The network netmask. * `network_type` - (Required) (Updatable) The network type. * `nodes` - (Required) (Updatable) The list of node details. + * `db_server_id` - (Optional) (Updatable) The Db server associated with the node. * `hostname` - (Required) (Updatable) The node host name. * `ip` - (Required) (Updatable) The node IP address. + * `state` - (Optional) (Updatable) The current state of the VM cluster network nodes. CREATING - The resource is being created REQUIRES_VALIDATION - The resource is created and may not be usable until it is validated. VALIDATING - The resource is being validated and not available to use. VALIDATED - The resource is validated and is available for consumption by VM cluster. VALIDATION_FAILED - The resource validation has failed and might require user input to be corrected. UPDATING - The resource is being updated and not available to use. ALLOCATED - The resource is currently being used by VM cluster. TERMINATING - The resource is being deleted and not available to use. TERMINATED - The resource is deleted and unavailable. FAILED - The resource is in a failed state due to validation or other errors. * `vip` - (Optional) (Updatable) The node virtual IP (VIP) address. * `vip_hostname` - (Optional) (Updatable) The node virtual IP (VIP) host name. - * `vlan_id` - (Required) (Updatable) The network VLAN ID. + * `vlan_id` - (Optional) (Updatable) The network VLAN ID. ** IMPORTANT ** @@ -112,7 +124,7 @@ The following attributes are exported: * `port` - The SCAN TCPIP port. Default is 1521. * `scan_listener_port_tcp` - The SCAN TCPIP port. Default is 1521. * `scan_listener_port_tcp_ssl` - The SCAN TCPIP SSL port. Default is 2484. -* `state` - The current state of the VM cluster network. +* `state` - The current state of the VM cluster network. CREATING - The resource is being created REQUIRES_VALIDATION - The resource is created and may not be usable until it is validated. VALIDATING - The resource is being validated and not available to use. VALIDATED - The resource is validated and is available for consumption by VM cluster. VALIDATION_FAILED - The resource validation has failed and might require user input to be corrected. UPDATING - The resource is being updated and not available to use. ALLOCATED - The resource is is currently being used by VM cluster. TERMINATING - The resource is being deleted and not available to use. TERMINATED - The resource is deleted and unavailable. FAILED - The resource is in a failed state due to validation or other errors. NEEDS_ATTENTION - The resource is in needs attention state as some of it's child nodes are not validated and unusable by VM cluster. * `time_created` - The date and time when the VM cluster network was created. * `vm_cluster_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the associated VM Cluster. * `vm_networks` - Details of the client and backup networks. @@ -121,8 +133,10 @@ The following attributes are exported: * `netmask` - The network netmask. * `network_type` - The network type. * `nodes` - The list of node details. + * `db_server_id` - The Db server associated with the node. * `hostname` - The node host name. * `ip` - The node IP address. + * `state` - The current state of the VM cluster network nodes. CREATING - The resource is being created REQUIRES_VALIDATION - The resource is created and may not be usable until it is validated. VALIDATING - The resource is being validated and not available to use. VALIDATED - The resource is validated and is available for consumption by VM cluster. VALIDATION_FAILED - The resource validation has failed and might require user input to be corrected. UPDATING - The resource is being updated and not available to use. ALLOCATED - The resource is currently being used by VM cluster. TERMINATING - The resource is being deleted and not available to use. TERMINATED - The resource is deleted and unavailable. FAILED - The resource is in a failed state due to validation or other errors. * `vip` - The node virtual IP (VIP) address. * `vip_hostname` - The node virtual IP (VIP) host name. * `vlan_id` - The network VLAN ID. From 324fd2b33082cdbfa17645589c74cd8df3cdc714 Mon Sep 17 00:00:00 2001 From: Vijayganesh Sankaran Date: Thu, 26 May 2022 16:53:34 -0700 Subject: [PATCH 02/17] changes for TERSI-1091 --- .../exadata_cc/exadata-infrastructure.tf | 2 +- examples/database/exadata_cc/vm_cluster.tf | 12 + ...base_autonomous_container_database_test.go | 17 - .../database_autonomous_vm_cluster_test.go | 32 +- ...database_cloud_database_management_test.go | 17 - .../database_data_guard_association_test.go | 14 - ...abase_pdb_conversion_history_entry_test.go | 14 - .../database_database_software_image_test.go | 14 - .../integrationtest/database_database_test.go | 18 - .../database_database_upgrade_test.go | 14 - .../integrationtest/database_db_home_test.go | 19 - .../database_db_server_test.go | 61 +- ...e_db_systems_upgrade_history_entry_test.go | 17 - ...ase_exadata_infrastructure_compute_test.go | 194 +++++ ...se_exadata_infrastructure_resource_test.go | 24 +- .../database_exadata_infrastructure_test.go | 68 +- .../database_exadata_iorm_config_test.go | 17 - ...rnal_container_database_management_test.go | 19 - ...tabase_external_database_connector_test.go | 18 - ..._non_container_database_management_test.go | 19 - ...ase_operations_insights_management_test.go | 19 - ...rnal_pluggable_database_management_test.go | 20 - ...ase_operations_insights_management_test.go | 20 - ...ontainerdatabases_stack_monitoring_test.go | 19 - ...ontainerdatabases_stack_monitoring_test.go | 19 - ...luggabledatabases_stack_monitoring_test.go | 20 - .../database_pluggable_database_test.go | 14 - ...se_pluggable_databases_local_clone_test.go | 15 - ...e_pluggable_databases_remote_clone_test.go | 14 - ...ase_vm_cluster_add_virtual_machine_test.go | 34 +- ...uster_network_download_config_file_test.go | 5 - ...tabase_vm_cluster_network_resource_test.go | 18 +- .../database_vm_cluster_network_test.go | 145 +--- ...ase_vm_cluster_patch_history_entry_test.go | 6 - .../database_vm_cluster_patch_test.go | 6 - ...ase_vm_cluster_recommended_network_test.go | 11 +- ..._vm_cluster_remove_virtual_machine_test.go | 7 - .../database_vm_cluster_test.go | 13 - ...se_vm_cluster_update_history_entry_test.go | 6 - .../database_vm_cluster_update_test.go | 6 - ...infrastructure_compute_managed_resource.go | 794 ++++++++++++++++++ ...atabase_exadata_infrastructure_resource.go | 13 +- internal/service/database/database_export.go | 3 - .../database_vm_cluster_network_resource.go | 66 +- ...cluster_recommended_network_data_source.go | 11 +- .../service/database/register_resource.go | 1 + .../v65/datascience/datascience_client.go | 2 +- ...adata_infrastructure_compute.html.markdown | 101 +++ 48 files changed, 1284 insertions(+), 734 deletions(-) create mode 100644 internal/integrationtest/database_exadata_infrastructure_compute_test.go create mode 100644 internal/service/database/database_exadata_infrastructure_compute_managed_resource.go create mode 100644 website/docs/r/database_exadata_infrastructure_compute.html.markdown diff --git a/examples/database/exadata_cc/exadata-infrastructure.tf b/examples/database/exadata_cc/exadata-infrastructure.tf index cd41d4cf3cf..8aa12f9c4b8 100644 --- a/examples/database/exadata_cc/exadata-infrastructure.tf +++ b/examples/database/exadata_cc/exadata-infrastructure.tf @@ -42,7 +42,7 @@ resource "oci_database_exadata_infrastructure" "test_exadata_infrastructure" { infini_band_network_cidr = "10.31.8.0/21" netmask = "255.255.255.0" ntp_server = ["10.231.225.76"] - shape = "ExadataCC.Quarter3.100" + shape = "ExadataCC.X7" time_zone = "US/Pacific" activation_file = "activation.zip" storage_count = 3 diff --git a/examples/database/exadata_cc/vm_cluster.tf b/examples/database/exadata_cc/vm_cluster.tf index 6a8164b4e61..f7c2bb7d1ac 100644 --- a/examples/database/exadata_cc/vm_cluster.tf +++ b/examples/database/exadata_cc/vm_cluster.tf @@ -31,11 +31,13 @@ resource "oci_database_vm_cluster_network" "test_vm_cluster_network" { nodes { hostname = "myprefix2-cghdm1" ip = "192.169.19.18" + db_server_id = data.oci_database_db_servers.test_db_servers.db_servers.0.id } nodes { hostname = "myprefix2-cghdm2" ip = "192.169.19.20" + db_server_id = data.oci_database_db_servers.test_db_servers.db_servers.1.id } vlan_id = "11" @@ -52,6 +54,7 @@ resource "oci_database_vm_cluster_network" "test_vm_cluster_network" { ip = "192.168.19.10" vip = "192.168.19.11" vip_hostname = "myprefix1-r64zc1-vip" + db_server_id = data.oci_database_db_servers.test_db_servers.db_servers.0.id } nodes { @@ -59,6 +62,7 @@ resource "oci_database_vm_cluster_network" "test_vm_cluster_network" { ip = "192.168.19.14" vip = "192.168.19.15" vip_hostname = "myprefix1-r64zc2-vip" + db_server_id = data.oci_database_db_servers.test_db_servers.db_servers.1.id } vlan_id = "10" @@ -74,6 +78,14 @@ resource "oci_database_vm_cluster_network" "test_vm_cluster_network" { } validate_vm_cluster_network = true + + action = "ADD_DBSERVER_NETWORK" + + lifecycle { + ignore_changes = [ + vm_networks, + ] + } } data "oci_database_gi_versions" "gi_version" { diff --git a/internal/integrationtest/database_autonomous_container_database_test.go b/internal/integrationtest/database_autonomous_container_database_test.go index e6dae1fb1c4..aa63851e45d 100644 --- a/internal/integrationtest/database_autonomous_container_database_test.go +++ b/internal/integrationtest/database_autonomous_container_database_test.go @@ -100,22 +100,6 @@ var ( "name": acctest.Representation{RepType: acctest.Required, Create: `OCTOBER`, Update: `NOVEMBER`}, } -<<<<<<< ours - DatabaseAutonomousContainerDatabaseResourceDependencies = AutonomousExadataInfrastructureResourceConfig + - acctest.GenerateResourceFromRepresentationMap("oci_core_subnet", "test_subnet", acctest.Required, acctest.Create, subnetRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_core_vcn", "test_vcn", acctest.Required, acctest.Create, vcnRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_autonomous_vm_cluster", "test_autonomous_vm_cluster", acctest.Required, acctest.Create, autonomousVmClusterRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_cloud_autonomous_vm_cluster", "test_cloud_autonomous_vm_cluster", acctest.Required, acctest.Create, cloudAutonomousVmClusterRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_cloud_exadata_infrastructure", "test_cloud_exadata_infrastructure", acctest.Required, acctest.Create, cloudExadataInfrastructureRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_key_store", "test_key_store", acctest.Required, acctest.Create, keyStoreRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + - AvailabilityDomainConfig + - acctest.GenerateResourceFromRepresentationMap("oci_kms_key_version", "test_key_version", acctest.Required, acctest.Create, keyVersionRepresentation) + - KeyResourceDependencyConfig + - acctest.GenerateResourceFromRepresentationMap("oci_kms_vault", "test_vault", acctest.Required, acctest.Create, vaultRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_vault_secret", "test_secret", acctest.Required, acctest.Create, secretRepresentation) -======= DatabaseAutonomousContainerDatabaseResourceDependencies = DefinedTagsDependencies + acctest.GenerateResourceFromRepresentationMap("oci_database_autonomous_vm_cluster", "test_autonomous_vm_cluster", acctest.Required, acctest.Create, DatabaseAutonomousVmClusterRepresentation) + KeyResourceDependencyConfig + kmsKeyIdCreateVariableStr + kmsKeyIdUpdateVariableStr + @@ -128,7 +112,6 @@ var ( acctest.RepresentationCopyWithNewProperties(DatabaseVmClusterNetworkRepresentation, map[string]interface{}{"validate_vm_cluster_network": acctest.Representation{RepType: acctest.Required, Create: "true"}})) ATPDAutonomousContainerDatabaseResourceDependencies = DatabaseCloudAutonomousVmClusterRequiredOnlyResource + KeyResourceDependencyConfig + kmsKeyIdCreateVariableStr + kmsKeyIdUpdateVariableStr ->>>>>>> theirs ) // issue-routing-tag: database/dbaas-atp-d diff --git a/internal/integrationtest/database_autonomous_vm_cluster_test.go b/internal/integrationtest/database_autonomous_vm_cluster_test.go index d75e1075933..e788d32b1c1 100644 --- a/internal/integrationtest/database_autonomous_vm_cluster_test.go +++ b/internal/integrationtest/database_autonomous_vm_cluster_test.go @@ -53,15 +53,15 @@ var ( "exadata_infrastructure_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_database_exadata_infrastructure.test_exadata_infrastructure.id}`}, "vm_cluster_network_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_database_vm_cluster_network.test_vm_cluster_network.id}`}, "autonomous_data_storage_size_in_tbs": acctest.Representation{RepType: acctest.Required, Create: `2.0`}, - "cpu_core_count_per_node": acctest.Representation{RepType: acctest.Required, Create: `6`}, + "cpu_core_count_per_node": acctest.Representation{RepType: acctest.Required, Create: `10`}, "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")}`}, "freeform_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"Department": "Finance"}, Update: map[string]string{"Department": "Accounting"}}, "is_local_backup_enabled": acctest.Representation{RepType: acctest.Optional, Create: `false`}, "license_model": acctest.Representation{RepType: acctest.Optional, Create: `LICENSE_INCLUDED`}, "maintenance_window_details": acctest.RepresentationGroup{RepType: acctest.Optional, Group: DatabaseAutonomousVmClusterMaintenanceWindowDetailsRepresentation}, - "memory_per_oracle_compute_unit_in_gbs": acctest.Representation{RepType: acctest.Required, Create: `12`}, + "memory_per_oracle_compute_unit_in_gbs": acctest.Representation{RepType: acctest.Required, Create: `20`}, "time_zone": acctest.Representation{RepType: acctest.Optional, Create: `US/Pacific`}, - "total_container_databases": acctest.Representation{RepType: acctest.Required, Create: `2`}, + "total_container_databases": acctest.Representation{RepType: acctest.Required, Create: `1`}, } DatabaseAutonomousVmClusterMaintenanceWindowDetailsRepresentation = map[string]interface{}{ "preference": acctest.Representation{RepType: acctest.Required, Create: `CUSTOM_PREFERENCE`, Update: `CUSTOM_PREFERENCE`}, @@ -78,10 +78,6 @@ var ( "name": acctest.Representation{RepType: acctest.Required, Create: `JANUARY`, Update: `FEBRUARY`}, } -<<<<<<< ours - DatabaseAutonomousVmClusterResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + -======= DatabaseAutonomousVmClusterMaintenanceWindowDetailsMonthsRepresentation2 = map[string]interface{}{ "name": acctest.Representation{RepType: acctest.Required, Create: `APRIL`, Update: `MAY`}, } @@ -98,7 +94,7 @@ var ( acctest.RepresentationCopyWithNewProperties(DatabaseVmClusterNetworkRepresentation, map[string]interface{}{"validate_vm_cluster_network": acctest.Representation{RepType: acctest.Required, Create: "true"}})) + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network2", acctest.Required, acctest.Create, acctest.RepresentationCopyWithNewProperties(vmClusterNetwork2Representation, map[string]interface{}{"validate_vm_cluster_network": acctest.Representation{RepType: acctest.Required, Create: "true"}})) + ->>>>>>> theirs + acctest.GenerateDataSourceFromRepresentationMap("oci_database_db_servers", "test_db_servers", acctest.Required, acctest.Create, DatabaseDatabaseDbServerDataSourceRepresentation) + DefinedTagsDependencies ) @@ -175,7 +171,7 @@ func TestDatabaseAutonomousVmClusterResource_basic(t *testing.T) { Check: acctest.ComposeAggregateTestCheckFuncWrapper( resource.TestCheckResourceAttr(resourceName, "autonomous_data_storage_size_in_tbs", "2"), resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId), - resource.TestCheckResourceAttr(resourceName, "cpu_core_count_per_node", "6"), + resource.TestCheckResourceAttr(resourceName, "cpu_core_count_per_node", "10"), resource.TestCheckResourceAttr(resourceName, "display_name", "autonomousVmCluster"), resource.TestCheckResourceAttrSet(resourceName, "exadata_infrastructure_id"), resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "1"), @@ -191,7 +187,7 @@ func TestDatabaseAutonomousVmClusterResource_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "maintenance_window_details.0.months.0.name", "JANUARY"), resource.TestCheckResourceAttr(resourceName, "maintenance_window_details.0.preference", "CUSTOM_PREFERENCE"), resource.TestCheckResourceAttr(resourceName, "maintenance_window_details.0.weeks_of_month.#", "1"), - resource.TestCheckResourceAttr(resourceName, "memory_per_oracle_compute_unit_in_gbs", "12"), + resource.TestCheckResourceAttr(resourceName, "memory_per_oracle_compute_unit_in_gbs", "20"), resource.TestCheckResourceAttrSet(resourceName, "state"), resource.TestCheckResourceAttr(resourceName, "time_zone", "US/Pacific"), resource.TestCheckResourceAttr(resourceName, "total_container_databases", "2"), @@ -219,7 +215,7 @@ func TestDatabaseAutonomousVmClusterResource_basic(t *testing.T) { Check: acctest.ComposeAggregateTestCheckFuncWrapper( resource.TestCheckResourceAttr(resourceName, "autonomous_data_storage_size_in_tbs", "2"), resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentIdU), - resource.TestCheckResourceAttr(resourceName, "cpu_core_count_per_node", "6"), + resource.TestCheckResourceAttr(resourceName, "cpu_core_count_per_node", "10"), resource.TestCheckResourceAttr(resourceName, "display_name", "autonomousVmCluster"), resource.TestCheckResourceAttrSet(resourceName, "exadata_infrastructure_id"), resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "1"), @@ -235,7 +231,7 @@ func TestDatabaseAutonomousVmClusterResource_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "maintenance_window_details.0.months.0.name", "JANUARY"), resource.TestCheckResourceAttr(resourceName, "maintenance_window_details.0.preference", "CUSTOM_PREFERENCE"), resource.TestCheckResourceAttr(resourceName, "maintenance_window_details.0.weeks_of_month.#", "1"), - resource.TestCheckResourceAttr(resourceName, "memory_per_oracle_compute_unit_in_gbs", "12"), + resource.TestCheckResourceAttr(resourceName, "memory_per_oracle_compute_unit_in_gbs", "20"), resource.TestCheckResourceAttrSet(resourceName, "state"), resource.TestCheckResourceAttr(resourceName, "time_zone", "US/Pacific"), resource.TestCheckResourceAttr(resourceName, "total_container_databases", "2"), @@ -258,7 +254,7 @@ func TestDatabaseAutonomousVmClusterResource_basic(t *testing.T) { Check: acctest.ComposeAggregateTestCheckFuncWrapper( resource.TestCheckResourceAttr(resourceName, "autonomous_data_storage_size_in_tbs", "2"), resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId), - resource.TestCheckResourceAttr(resourceName, "cpu_core_count_per_node", "6"), + resource.TestCheckResourceAttr(resourceName, "cpu_core_count_per_node", "10"), resource.TestCheckResourceAttr(resourceName, "display_name", "autonomousVmCluster"), resource.TestCheckResourceAttrSet(resourceName, "exadata_infrastructure_id"), resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "1"), @@ -274,7 +270,7 @@ func TestDatabaseAutonomousVmClusterResource_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "maintenance_window_details.0.months.0.name", "FEBRUARY"), resource.TestCheckResourceAttr(resourceName, "maintenance_window_details.0.preference", "CUSTOM_PREFERENCE"), resource.TestCheckResourceAttr(resourceName, "maintenance_window_details.0.weeks_of_month.#", "1"), - resource.TestCheckResourceAttr(resourceName, "memory_per_oracle_compute_unit_in_gbs", "12"), + resource.TestCheckResourceAttr(resourceName, "memory_per_oracle_compute_unit_in_gbs", "20"), resource.TestCheckResourceAttrSet(resourceName, "state"), resource.TestCheckResourceAttr(resourceName, "time_zone", "US/Pacific"), resource.TestCheckResourceAttr(resourceName, "total_container_databases", "2"), @@ -309,7 +305,7 @@ func TestDatabaseAutonomousVmClusterResource_basic(t *testing.T) { resource.TestCheckResourceAttrSet(datasourceName, "autonomous_vm_clusters.0.available_cpus"), resource.TestCheckResourceAttrSet(datasourceName, "autonomous_vm_clusters.0.available_data_storage_size_in_tbs"), resource.TestCheckResourceAttr(datasourceName, "autonomous_vm_clusters.0.compartment_id", compartmentId), - resource.TestCheckResourceAttr(datasourceName, "autonomous_vm_clusters.0.cpu_core_count_per_node", "6"), + resource.TestCheckResourceAttr(datasourceName, "autonomous_vm_clusters.0.cpu_core_count_per_node", "10"), resource.TestCheckResourceAttrSet(datasourceName, "autonomous_vm_clusters.0.cpus_enabled"), resource.TestCheckResourceAttrSet(datasourceName, "autonomous_vm_clusters.0.data_storage_size_in_tbs"), resource.TestCheckResourceAttrSet(datasourceName, "autonomous_vm_clusters.0.db_node_storage_size_in_gbs"), @@ -321,7 +317,7 @@ func TestDatabaseAutonomousVmClusterResource_basic(t *testing.T) { //resource.TestCheckResourceAttrSet(datasourceName, "autonomous_vm_clusters.0.last_maintenance_run_id"), resource.TestCheckResourceAttr(datasourceName, "autonomous_vm_clusters.0.license_model", "LICENSE_INCLUDED"), resource.TestCheckResourceAttr(datasourceName, "autonomous_vm_clusters.0.maintenance_window.#", "1"), - resource.TestCheckResourceAttr(datasourceName, "autonomous_vm_clusters.0.memory_per_oracle_compute_unit_in_gbs", "12"), + resource.TestCheckResourceAttr(datasourceName, "autonomous_vm_clusters.0.memory_per_oracle_compute_unit_in_gbs", "20"), resource.TestCheckResourceAttrSet(datasourceName, "autonomous_vm_clusters.0.memory_size_in_gbs"), resource.TestCheckResourceAttrSet(datasourceName, "autonomous_vm_clusters.0.reclaimable_cpus"), //resource.TestCheckResourceAttrSet(datasourceName, "autonomous_vm_clusters.0.next_maintenance_run_id"), @@ -348,7 +344,7 @@ func TestDatabaseAutonomousVmClusterResource_basic(t *testing.T) { resource.TestCheckResourceAttrSet(singularDatasourceName, "available_cpus"), resource.TestCheckResourceAttrSet(singularDatasourceName, "available_data_storage_size_in_tbs"), resource.TestCheckResourceAttr(singularDatasourceName, "compartment_id", compartmentId), - resource.TestCheckResourceAttr(singularDatasourceName, "cpu_core_count_per_node", "6"), + resource.TestCheckResourceAttr(singularDatasourceName, "cpu_core_count_per_node", "10"), resource.TestCheckResourceAttrSet(singularDatasourceName, "cpus_enabled"), resource.TestCheckResourceAttrSet(singularDatasourceName, "data_storage_size_in_tbs"), resource.TestCheckResourceAttrSet(singularDatasourceName, "db_node_storage_size_in_gbs"), @@ -359,7 +355,7 @@ func TestDatabaseAutonomousVmClusterResource_basic(t *testing.T) { //resource.TestCheckResourceAttrSet(singularDatasourceName, "last_maintenance_run_id"), resource.TestCheckResourceAttr(singularDatasourceName, "license_model", "LICENSE_INCLUDED"), resource.TestCheckResourceAttr(singularDatasourceName, "maintenance_window.#", "1"), - resource.TestCheckResourceAttr(singularDatasourceName, "memory_per_oracle_compute_unit_in_gbs", "12"), + resource.TestCheckResourceAttr(singularDatasourceName, "memory_per_oracle_compute_unit_in_gbs", "20"), resource.TestCheckResourceAttrSet(singularDatasourceName, "memory_size_in_gbs"), resource.TestCheckResourceAttrSet(singularDatasourceName, "reclaimable_cpus"), diff --git a/internal/integrationtest/database_cloud_database_management_test.go b/internal/integrationtest/database_cloud_database_management_test.go index a23e257be39..328a5165caa 100644 --- a/internal/integrationtest/database_cloud_database_management_test.go +++ b/internal/integrationtest/database_cloud_database_management_test.go @@ -40,22 +40,6 @@ var ( "password_secret_id": acctest.Representation{RepType: acctest.Required, Create: `${var.sslSecretId}`}, } -<<<<<<< ours - DatabaseCloudDatabaseManagementResourceDependencies = acctest.GenerateDataSourceFromRepresentationMap("oci_core_services", "test_services", acctest.Required, acctest.Create, serviceDataSourceRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_backup", "test_backup", acctest.Required, acctest.Create, backupRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Required, acctest.Create, databaseRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_db_home", "test_db_home", acctest.Required, acctest.Create, dbHomeRepresentation) + - BackupResourceDependencies + - GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", Optional, Create, backupDestinationNFSRepresentation) + - GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", Optional, Update, RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": Representation{RepType: Optional, Update: activationFilePath}})) + - GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", Optional, Update, vmClusterNetworkValidateRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_identity_user", "test_user", acctest.Required, acctest.Create, userRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_kms_vault", "test_vault", acctest.Required, acctest.Create, vaultRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_vault_secret", "test_secret", acctest.Required, acctest.Create, secretRepresentation) -======= cloudDatabaseManagementPrivateEndpointConfig = acctest.GenerateResourceFromRepresentationMap("oci_database_management_db_management_private_endpoint", "test_db_management_private_endpoint", acctest.Required, acctest.Create, cloudDatabaseManagementPrivateEndpointRepresentation) CloudDatabaseManagementResourceDependenciesBase = AvailabilityDomainConfig + DefinedTagsDependencies + CoreVcnResourceConfig + @@ -162,7 +146,6 @@ var ( data "oci_database_database" "t" { database_id = "${data.oci_database_databases.t.databases.0.id}" }` ->>>>>>> theirs ) // issue-routing-tag: database/ExaCS diff --git a/internal/integrationtest/database_data_guard_association_test.go b/internal/integrationtest/database_data_guard_association_test.go index ccefdd9d32b..01bd92cf1bf 100644 --- a/internal/integrationtest/database_data_guard_association_test.go +++ b/internal/integrationtest/database_data_guard_association_test.go @@ -74,19 +74,6 @@ var ( "is_incident_logs_enabled": acctest.Representation{RepType: acctest.Optional, Create: `false`}, } -<<<<<<< ours - DatabaseDataGuardAssociationResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_database_backup", "test_backup", acctest.Required, acctest.Create, backupRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_database_software_image", "test_database_software_image", acctest.Required, acctest.Create, databaseSoftwareImageRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Required, acctest.Create, databaseRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_db_home", "test_db_home", acctest.Required, acctest.Create, dbHomeRepresentation) + - BackupResourceDependencies + - GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", Optional, Create, backupDestinationNFSRepresentation) + - GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", Optional, Update, RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": Representation{RepType: Optional, Update: activationFilePath}})) + - GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", Optional, Update, vmClusterNetworkValidateRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) -======= ignoreDataGuardAssociationRepresentationExistingDbSystem = map[string]interface{}{ "ignore_changes": acctest.Representation{RepType: acctest.Required, Create: []string{`database_defined_tags`, `database_freeform_tags`, `db_system_defined_tags`, `db_system_freeform_tags`, `fault_domains`, `license_model`, `node_count`, `private_ip`, `time_zone`}}, } @@ -329,7 +316,6 @@ resource "oci_database_db_system" "test_db_system" { } } ` ->>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/integrationtest/database_database_pdb_conversion_history_entry_test.go b/internal/integrationtest/database_database_pdb_conversion_history_entry_test.go index df59594d2a1..2f75b421b47 100644 --- a/internal/integrationtest/database_database_pdb_conversion_history_entry_test.go +++ b/internal/integrationtest/database_database_pdb_conversion_history_entry_test.go @@ -24,20 +24,6 @@ var ( DatabaseDatabaseDatabasePdbConversionHistoryEntryDataSourceRepresentation = map[string]interface{}{ "database_id": acctest.Representation{RepType: acctest.Required, Create: utils.GetEnvSettingWithBlankDefault("converted_to_pdb_db_id")}, } -<<<<<<< ours - - DatabaseDatabasePdbConversionHistoryEntryResourceConfig = acctest.GenerateResourceFromRepresentationMap("oci_database_backup", "test_backup", acctest.Required, acctest.Create, backupRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Required, acctest.Create, databaseRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_db_home", "test_db_home", acctest.Required, acctest.Create, dbHomeRepresentation) + - BackupResourceDependencies + - GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", Optional, Create, backupDestinationNFSRepresentation) + - GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", Optional, Update, RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": Representation{RepType: Optional, Update: activationFilePath}})) + - GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", Optional, Update, vmClusterNetworkValidateRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) -======= ->>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/integrationtest/database_database_software_image_test.go b/internal/integrationtest/database_database_software_image_test.go index 02fb84b21d4..6ce6e6e19bf 100644 --- a/internal/integrationtest/database_database_software_image_test.go +++ b/internal/integrationtest/database_database_software_image_test.go @@ -61,21 +61,7 @@ var ( "ls_inventory": acctest.Representation{RepType: acctest.Optional, Create: `lsInventory`}, } -<<<<<<< ours - DatabaseDatabaseSoftwareImageResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_database_backup", "test_backup", acctest.Required, acctest.Create, backupRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Required, acctest.Create, databaseRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_db_home", "test_db_home", acctest.Required, acctest.Create, dbHomeRepresentation) + - BackupResourceDependencies + - GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", Optional, Create, backupDestinationNFSRepresentation) + - GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", Optional, Update, RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": Representation{RepType: Optional, Update: activationFilePath}})) + - GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", Optional, Update, vmClusterNetworkValidateRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) + - DefinedTagsDependencies -======= DatabaseDatabaseSoftwareImageResourceDependencies = DefinedTagsDependencies ->>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/integrationtest/database_database_test.go b/internal/integrationtest/database_database_test.go index 33789c22fc1..68c1a5d4bac 100644 --- a/internal/integrationtest/database_database_test.go +++ b/internal/integrationtest/database_database_test.go @@ -178,26 +178,8 @@ var ( "id": acctest.Representation{RepType: acctest.Optional, Create: `${oci_database_backup_destination.test_backup_destination.id}`}, } -<<<<<<< ours - DatabaseDatabaseResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_database_backup", "test_backup", acctest.Required, acctest.Create, backupRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_database_software_image", "test_database_software_image", acctest.Required, acctest.Create, databaseSoftwareImageRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Required, acctest.Create, databaseRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_db_home", "test_db_home", acctest.Required, acctest.Create, dbHomeRepresentation) + - BackupResourceDependencies + - GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", Optional, Create, backupDestinationNFSRepresentation) + - GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", Optional, Update, RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": Representation{RepType: Optional, Update: activationFilePath}})) + - GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", Optional, Update, vmClusterNetworkValidateRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) + - DefinedTagsDependencies + - acctest.GenerateResourceFromRepresentationMap("oci_kms_key_version", "test_key_version", acctest.Required, acctest.Create, keyVersionRepresentation) + - KeyResourceDependencyConfig + - acctest.GenerateResourceFromRepresentationMap("oci_kms_vault", "test_vault", acctest.Required, acctest.Create, vaultRepresentation) -======= DatabaseDatabaseResourceDependencies = ExaBaseDependencies + DefinedTagsDependencies + AvailabilityDomainConfig + KeyResourceDependencyConfig + acctest.GenerateResourceFromRepresentationMap("oci_database_db_home", "test_db_home", acctest.Required, acctest.Create, dbHomeRepresentationSourceNone) ->>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/integrationtest/database_database_upgrade_test.go b/internal/integrationtest/database_database_upgrade_test.go index 911f88b2f7b..2004381995a 100644 --- a/internal/integrationtest/database_database_upgrade_test.go +++ b/internal/integrationtest/database_database_upgrade_test.go @@ -43,19 +43,6 @@ var ( "source": acctest.Representation{RepType: acctest.Optional, Create: `DB_VERSION`}, } -<<<<<<< ours - DatabaseDatabaseUpgradeResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_database_backup", "test_backup", acctest.Required, acctest.Create, backupRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_database_software_image", "test_database_software_image", acctest.Required, acctest.Create, databaseSoftwareImageRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Required, acctest.Create, databaseRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_db_home", "test_db_home", acctest.Required, acctest.Create, dbHomeRepresentation) + - BackupResourceDependencies + - GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", Optional, Create, backupDestinationNFSRepresentation) + - GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", Optional, Update, RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": Representation{RepType: Optional, Update: activationFilePath}})) + - GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", Optional, Update, vmClusterNetworkValidateRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) -======= DatabaseSystemForDbUpgradeRepresentation = ` resource "oci_database_db_system" "t" { availability_domain = "${data.oci_identity_availability_domains.ADs.availability_domains.0.name}" @@ -129,7 +116,6 @@ var ( data "oci_database_database" "t" { database_id = "${data.oci_database_databases.t.databases.0.id}" }` ->>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/integrationtest/database_db_home_test.go b/internal/integrationtest/database_db_home_test.go index e356776e96c..9ee51618695 100644 --- a/internal/integrationtest/database_db_home_test.go +++ b/internal/integrationtest/database_db_home_test.go @@ -183,30 +183,11 @@ var ( "display_name": acctest.Representation{RepType: acctest.Required, Create: `TFTestDbHome1`}, } -<<<<<<< ours - DatabaseDbHomeResourceDependencies = BackupResourceDependencies + - GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", Optional, Create, backupDestinationNFSRepresentation) + - GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", Optional, Update, RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": Representation{RepType: Optional, Update: activationFilePath}})) + - GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", Optional, Update, vmClusterNetworkValidateRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_backup", "test_backup", acctest.Required, acctest.Create, backupRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_database_software_image", "test_database_software_image", acctest.Required, acctest.Create, databaseSoftwareImageRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Required, acctest.Create, databaseRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_db_home", "test_db_home", acctest.Required, acctest.Create, dbHomeRepresentation) + - BackupResourceDependencies + - GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", Optional, Create, backupDestinationNFSRepresentation) + - GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", Optional, Update, RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": Representation{RepType: Optional, Update: activationFilePath}})) + - GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", Optional, Update, vmClusterNetworkValidateRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_kms_key_version", "test_key_version", acctest.Required, acctest.Create, keyVersionRepresentation) + -======= DatabaseDbHomeResourceDependencies = DatabaseBackupResourceDependencies + acctest.GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", acctest.Optional, acctest.Create, backupDestinationNFSRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Optional, acctest.Update, acctest.RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": acctest.Representation{RepType: acctest.Optional, Update: activationFilePath}})) + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Optional, acctest.Update, vmClusterNetworkValidateRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_backup", "test_backup", acctest.Required, acctest.Create, DatabaseBackupRepresentation) + ->>>>>>> theirs KeyResourceDependencyConfig + acctest.GenerateDataSourceFromRepresentationMap("oci_database_db_servers", "test_db_servers", acctest.Required, acctest.Create, DatabaseDatabaseDbServerDataSourceRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, DatabaseCloudAutonomousVmClusterRepresentation) diff --git a/internal/integrationtest/database_db_server_test.go b/internal/integrationtest/database_db_server_test.go index f1201f08566..6bf49d1a5c9 100644 --- a/internal/integrationtest/database_db_server_test.go +++ b/internal/integrationtest/database_db_server_test.go @@ -29,7 +29,7 @@ var ( "state": acctest.Representation{RepType: acctest.Optional, Create: `AVAILABLE`}, } - DatabaseDbServerResourceConfig = acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, DatabaseAutonomousExadataInfrastructureRepresentation) + DatabaseDbServerResourceConfig = acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, DatabaseExadataInfrastructureRepresentation) ) // issue-routing-tag: database/default @@ -48,64 +48,6 @@ func TestDatabaseDbServerResource_basic(t *testing.T) { acctest.SaveConfigContent("", "", "", t) -<<<<<<< ours - acctest.ResourceTest(t, nil, []resource.TestStep{ - // verify datasource - { - Config: config + - acctest.GenerateDataSourceFromRepresentationMap("oci_database_db_servers", "test_db_servers", acctest.Required, acctest.Create, DatabasedbServerDataSourceRepresentation) + - compartmentIdVariableStr + DatabaseDbServerResourceConfig, - Check: acctest.ComposeAggregateTestCheckFuncWrapper( - resource.TestCheckResourceAttr(datasourceName, "compartment_id", compartmentId), - resource.TestCheckResourceAttr(datasourceName, "display_name", "displayName"), - resource.TestCheckResourceAttrSet(datasourceName, "exadata_infrastructure_id"), - resource.TestCheckResourceAttr(datasourceName, "state", "AVAILABLE"), - - resource.TestCheckResourceAttrSet(datasourceName, "db_servers.#"), - resource.TestCheckResourceAttrSet(datasourceName, "db_servers.0.compartment_id"), - resource.TestCheckResourceAttrSet(datasourceName, "db_servers.0.cpu_core_count"), - resource.TestCheckResourceAttr(datasourceName, "db_servers.0.db_node_ids.#", "1"), - resource.TestCheckResourceAttrSet(datasourceName, "db_servers.0.db_node_storage_size_in_gbs"), - resource.TestCheckResourceAttr(datasourceName, "db_servers.0.db_server_patching_details.#", "1"), - resource.TestCheckResourceAttrSet(datasourceName, "db_servers.0.display_name"), - resource.TestCheckResourceAttrSet(datasourceName, "db_servers.0.exadata_infrastructure_id"), - resource.TestCheckResourceAttrSet(datasourceName, "db_servers.0.id"), - resource.TestCheckResourceAttrSet(datasourceName, "db_servers.0.max_cpu_count"), - resource.TestCheckResourceAttrSet(datasourceName, "db_servers.0.max_db_node_storage_in_gbs"), - resource.TestCheckResourceAttrSet(datasourceName, "db_servers.0.max_memory_in_gbs"), - resource.TestCheckResourceAttrSet(datasourceName, "db_servers.0.memory_size_in_gbs"), - resource.TestCheckResourceAttrSet(datasourceName, "db_servers.0.shape"), - resource.TestCheckResourceAttrSet(datasourceName, "db_servers.0.state"), - resource.TestCheckResourceAttrSet(datasourceName, "db_servers.0.time_created"), - resource.TestCheckResourceAttr(datasourceName, "db_servers.0.vm_cluster_ids.#", "1"), - ), - }, - // verify singular datasource - { - Config: config + - acctest.GenerateDataSourceFromRepresentationMap("oci_database_db_server", "test_db_server", acctest.Required, acctest.Create, DatabasedbServerSingularDataSourceRepresentation) + - compartmentIdVariableStr + DatabaseDbServerResourceConfig, - Check: acctest.ComposeAggregateTestCheckFuncWrapper( - resource.TestCheckResourceAttrSet(singularDatasourceName, "db_server_id"), - resource.TestCheckResourceAttrSet(singularDatasourceName, "exadata_infrastructure_id"), - - resource.TestCheckResourceAttrSet(singularDatasourceName, "compartment_id"), - resource.TestCheckResourceAttrSet(singularDatasourceName, "cpu_core_count"), - resource.TestCheckResourceAttr(singularDatasourceName, "db_node_ids.#", "1"), - resource.TestCheckResourceAttrSet(singularDatasourceName, "db_node_storage_size_in_gbs"), - resource.TestCheckResourceAttr(singularDatasourceName, "db_server_patching_details.#", "1"), - resource.TestCheckResourceAttrSet(singularDatasourceName, "display_name"), - resource.TestCheckResourceAttrSet(singularDatasourceName, "id"), - resource.TestCheckResourceAttrSet(singularDatasourceName, "max_cpu_count"), - resource.TestCheckResourceAttrSet(singularDatasourceName, "max_db_node_storage_in_gbs"), - resource.TestCheckResourceAttrSet(singularDatasourceName, "max_memory_in_gbs"), - resource.TestCheckResourceAttrSet(singularDatasourceName, "memory_size_in_gbs"), - resource.TestCheckResourceAttrSet(singularDatasourceName, "shape"), - resource.TestCheckResourceAttrSet(singularDatasourceName, "state"), - resource.TestCheckResourceAttrSet(singularDatasourceName, "time_created"), - resource.TestCheckResourceAttr(singularDatasourceName, "vm_cluster_ids.#", "1"), - ), -======= resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, Providers: map[string]*schema.Provider{ @@ -161,7 +103,6 @@ func TestDatabaseDbServerResource_basic(t *testing.T) { resource.TestCheckResourceAttr(singularDatasourceName, "vm_cluster_ids.#", "0"), ), }, ->>>>>>> theirs }, }) } diff --git a/internal/integrationtest/database_db_systems_upgrade_history_entry_test.go b/internal/integrationtest/database_db_systems_upgrade_history_entry_test.go index 1e658c57af2..850115d9f08 100644 --- a/internal/integrationtest/database_db_systems_upgrade_history_entry_test.go +++ b/internal/integrationtest/database_db_systems_upgrade_history_entry_test.go @@ -27,22 +27,6 @@ var ( "upgrade_action": acctest.Representation{RepType: acctest.Optional, Create: `PRECHECK`}, } -<<<<<<< ours - DatabaseDbSystemsUpgradeHistoryEntryResourceConfig = acctest.GenerateResourceFromRepresentationMap("oci_core_subnet", "test_subnet", acctest.Required, acctest.Create, subnetRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_core_vcn", "test_vcn", acctest.Required, acctest.Create, vcnRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_backup", "test_backup", acctest.Required, acctest.Create, backupRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Required, acctest.Create, databaseRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_db_home", "test_db_home", acctest.Required, acctest.Create, dbHomeRepresentation) + - BackupResourceDependencies + - GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", Optional, Create, backupDestinationNFSRepresentation) + - GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", Optional, Update, RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": Representation{RepType: Optional, Update: activationFilePath}})) + - GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", Optional, Update, vmClusterNetworkValidateRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_db_system", "test_db_system", acctest.Required, acctest.Create, dbSystemRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) + - AvailabilityDomainConfig -======= DatabaseDbSystemsUpgradeHistoryEntryResourceConfig = acctest.GenerateResourceFromRepresentationMap("oci_core_subnet", "test_subnet", acctest.Required, acctest.Create, CoreSubnetRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_core_vcn", "test_vcn", acctest.Required, acctest.Create, CoreVcnRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_core_vlan", "test_vlan", acctest.Required, acctest.Create, CoreVlanRepresentation) + @@ -59,7 +43,6 @@ var ( acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, DatabaseCloudAutonomousVmClusterRepresentation) + AvailabilityDomainConfig + acctest.GenerateResourceFromRepresentationMap("oci_identity_domain", "test_domain", acctest.Required, acctest.Create, IdentityDomainRepresentation) ->>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/integrationtest/database_exadata_infrastructure_compute_test.go b/internal/integrationtest/database_exadata_infrastructure_compute_test.go new file mode 100644 index 00000000000..0a4d9282d33 --- /dev/null +++ b/internal/integrationtest/database_exadata_infrastructure_compute_test.go @@ -0,0 +1,194 @@ +// Copyright (c) 2017, 2021, Oracle and/or its affiliates. All rights reserved. +// Licensed under the Mozilla Public License v2.0 + +package integrationtest + +import ( + "fmt" + "testing" + + "github.com/oracle/terraform-provider-oci/internal/acctest" + "github.com/oracle/terraform-provider-oci/internal/utils" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + + "github.com/oracle/terraform-provider-oci/httpreplay" +) + +var ( + exadataInfrastructureComputeSingularDataSourceRepresentation = map[string]interface{}{ + "exadata_infrastructure_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_database_exadata_infrastructure.test_exadata_infrastructure.id}`}, + } + + exadataInfrastructureComputeDataSourceRepresentation = map[string]interface{}{ + "compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`}, + "display_name": acctest.Representation{RepType: acctest.Optional, Create: `tstExaInfra`}, + "state": acctest.Representation{RepType: acctest.Optional, Create: `REQUIRES_ACTIVATION`}, + "filter": acctest.RepresentationGroup{RepType: acctest.Required, Group: exadataInfrastructureComputeDataSourceFilterRepresentation}} + exadataInfrastructureComputeDataSourceFilterRepresentation = map[string]interface{}{ + "name": acctest.Representation{RepType: acctest.Required, Create: `id`}, + "values": acctest.Representation{RepType: acctest.Required, Create: []string{`${oci_database_exadata_infrastructure.test_exadata_infrastructure.id}`}}, + } + + ExadataInfrastructureRepresentationCompute = map[string]interface{}{ + "exadata_infrastructure_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_database_exadata_infrastructure.test_exadata_infrastructure.id}`, Update: `${oci_database_exadata_infrastructure.test_exadata_infrastructure.id}`}, + "additional_compute_count_compute_managed_resource": acctest.Representation{RepType: acctest.Optional, Create: `2`, Update: `3`}, + "additional_compute_system_model_compute_managed_resource": acctest.Representation{RepType: acctest.Optional, Create: `X8M`, Update: `X9M`}, + } + + ExadataInfrastructureComputeManagedResourceDependencies = DefinedTagsDependencies +) + +// issue-routing-tag: database/ExaCC +func TestDatabaseExadataInfrastructureComputeManagedResource_basic(t *testing.T) { + httpreplay.SetScenario("TestDatabaseExadataInfrastructureComputeManagedResource_basic") + defer httpreplay.SaveScenario() + + config := acctest.ProviderTestConfig() + + compartmentId := utils.GetEnvSettingWithBlankDefault("compartment_ocid") + compartmentIdVariableStr := fmt.Sprintf("variable \"compartment_id\" { default = \"%s\" }\n", compartmentId) + + resourceName := "oci_database_exadata_infrastructure_compute.test_database_exadata_infrastructure_compute" + + acctest.ResourceTest(t, nil, []resource.TestStep{ + + //verify Create + { + Config: config + compartmentIdVariableStr + ExadataInfrastructureComputeManagedResourceDependencies + + acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, DatabaseExadataInfrastructureRepresentation), + }, + + //verify Update/scale up with optionals + { + Config: config + compartmentIdVariableStr + ExadataInfrastructureComputeManagedResourceDependencies + + acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Optional, acctest.Update, acctest.RepresentationCopyWithNewProperties(DatabaseExadataInfrastructureRepresentation, map[string]interface{}{ + "maintenance_window": acctest.RepresentationGroup{RepType: acctest.Optional, Group: exadataInfrastructureMaintenanceWindowRepresentationComplete}, + })) + + acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure_compute", "test_database_exadata_infrastructure_compute", acctest.Optional, acctest.Create, + ExadataInfrastructureRepresentationCompute), + Check: acctest.ComposeAggregateTestCheckFuncWrapper( + resource.TestCheckResourceAttr(resourceName, "storage_count", "3"), + resource.TestCheckResourceAttr(resourceName, "compute_count", "4"), + resource.TestCheckResourceAttr(resourceName, "state", "REQUIRES_ACTIVATION"), + resource.TestCheckResourceAttr(resourceName, "shape", "ExadataCC.X7"), + resource.TestCheckResourceAttr(resourceName, "additional_compute_count", "0"), + resource.TestCheckResourceAttr(resourceName, "additional_compute_system_model", ""), + + resource.TestCheckResourceAttr("oci_database_exadata_infrastructure_compute.test_database_exadata_infrastructure_compute", "storage_count", "3"), + resource.TestCheckResourceAttr("oci_database_exadata_infrastructure_compute.test_database_exadata_infrastructure_compute", "compute_count", "4"), + resource.TestCheckResourceAttr("oci_database_exadata_infrastructure_compute.test_database_exadata_infrastructure_compute", "additional_compute_count", "0"), + resource.TestCheckResourceAttr("oci_database_exadata_infrastructure_compute.test_database_exadata_infrastructure_compute", "additional_compute_system_model", ""), + + func(s *terraform.State) (err error) { + _, err = acctest.FromInstanceState(s, resourceName, "id") + return err + }, + ), + }, + + //verify activation + { + Config: config + compartmentIdVariableStr + ExadataInfrastructureComputeManagedResourceDependencies + + acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Optional, acctest.Update, acctest.RepresentationCopyWithNewProperties(DatabaseExadataInfrastructureRepresentation, map[string]interface{}{ + "maintenance_window": acctest.RepresentationGroup{RepType: acctest.Optional, Group: exadataInfrastructureMaintenanceWindowRepresentationComplete}, + })) + + acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure_compute", "test_database_exadata_infrastructure_compute", acctest.Optional, acctest.Create, + acctest.RepresentationCopyWithNewProperties(ExadataInfrastructureRepresentationCompute, map[string]interface{}{ + "activation_file": acctest.Representation{RepType: acctest.Optional, Create: activationFilePath}, + })), + Check: acctest.ComposeAggregateTestCheckFuncWrapper( + resource.TestCheckResourceAttr(resourceName, "storage_count", "3"), + resource.TestCheckResourceAttr(resourceName, "compute_count", "4"), + resource.TestCheckResourceAttr(resourceName, "state", "ACTIVE"), + resource.TestCheckResourceAttr(resourceName, "shape", "ExadataCC.X7"), + resource.TestCheckResourceAttr(resourceName, "additional_compute_count", "0"), + resource.TestCheckResourceAttr(resourceName, "additional_compute_system_model", ""), + + resource.TestCheckResourceAttr("oci_database_exadata_infrastructure_compute.test_database_exadata_infrastructure_compute", "state", "ACTIVE"), + resource.TestCheckResourceAttr("oci_database_exadata_infrastructure_compute.test_database_exadata_infrastructure_compute", "storage_count", "3"), + resource.TestCheckResourceAttr("oci_database_exadata_infrastructure_compute.test_database_exadata_infrastructure_compute", "compute_count", "4"), + resource.TestCheckResourceAttr("oci_database_exadata_infrastructure_compute.test_database_exadata_infrastructure_compute", "additional_compute_count", "0"), + resource.TestCheckResourceAttr("oci_database_exadata_infrastructure_compute.test_database_exadata_infrastructure_compute", "additional_compute_system_model", ""), + + func(s *terraform.State) (err error) { + _, err = acctest.FromInstanceState(s, resourceName, "id") + return err + }, + ), + }, + + //verify update/scale up after activation + { + Config: config + compartmentIdVariableStr + ExadataInfrastructureComputeManagedResourceDependencies + + acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Optional, acctest.Update, acctest.RepresentationCopyWithNewProperties(DatabaseExadataInfrastructureRepresentation, map[string]interface{}{ + "maintenance_window": acctest.RepresentationGroup{RepType: acctest.Optional, Group: exadataInfrastructureMaintenanceWindowRepresentationComplete}, + })) + + acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure_compute", "test_database_exadata_infrastructure_compute", acctest.Optional, acctest.Update, ExadataInfrastructureRepresentationCompute), + Check: acctest.ComposeAggregateTestCheckFuncWrapper( + resource.TestCheckResourceAttr(resourceName, "storage_count", "3"), + resource.TestCheckResourceAttr(resourceName, "compute_count", "4"), + resource.TestCheckResourceAttr(resourceName, "state", "ACTIVE"), + resource.TestCheckResourceAttr(resourceName, "shape", "ExadataCC.X7"), + resource.TestCheckResourceAttr(resourceName, "additional_compute_count", "3"), + resource.TestCheckResourceAttr(resourceName, "additional_compute_system_model", "X9M"), + + resource.TestCheckResourceAttr("oci_database_exadata_infrastructure_compute.test_database_exadata_infrastructure_compute", "state", "ACTIVE"), + resource.TestCheckResourceAttr("oci_database_exadata_infrastructure_compute.test_database_exadata_infrastructure_compute", "storage_count", "3"), + resource.TestCheckResourceAttr("oci_database_exadata_infrastructure_compute.test_database_exadata_infrastructure_compute", "compute_count", "4"), + resource.TestCheckResourceAttr("oci_database_exadata_infrastructure_compute.test_database_exadata_infrastructure_compute", "additional_compute_count", "3"), + resource.TestCheckResourceAttr("oci_database_exadata_infrastructure_compute.test_database_exadata_infrastructure_compute", "additional_compute_system_model", "X9M"), + + func(s *terraform.State) (err error) { + _, err = acctest.FromInstanceState(s, resourceName, "id") + return err + }, + ), + }, + + //verify compute count after activate + { + Config: config + compartmentIdVariableStr + ExadataInfrastructureComputeManagedResourceDependencies + + acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Optional, acctest.Update, acctest.RepresentationCopyWithNewProperties(DatabaseExadataInfrastructureRepresentation, map[string]interface{}{ + "maintenance_window": acctest.RepresentationGroup{RepType: acctest.Optional, Group: exadataInfrastructureMaintenanceWindowRepresentationComplete}, + })) + + acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure_compute", "test_database_exadata_infrastructure_compute", acctest.Optional, acctest.Update, + acctest.RepresentationCopyWithNewProperties(ExadataInfrastructureRepresentationCompute, map[string]interface{}{ + "activation_file": acctest.Representation{RepType: acctest.Optional, Update: activationFilePath}, + })), + Check: acctest.ComposeAggregateTestCheckFuncWrapper( + resource.TestCheckResourceAttr(resourceName, "storage_count", "3"), + resource.TestCheckResourceAttr(resourceName, "compute_count", "7"), + resource.TestCheckResourceAttr(resourceName, "state", "ACTIVE"), + resource.TestCheckResourceAttr(resourceName, "shape", "ExadataCC.X7"), + resource.TestCheckResourceAttr(resourceName, "additional_compute_count", "0"), + resource.TestCheckResourceAttr(resourceName, "additional_compute_system_model", ""), + + resource.TestCheckResourceAttr("oci_database_exadata_infrastructure_compute.test_database_exadata_infrastructure_compute", "state", "ACTIVE"), + resource.TestCheckResourceAttr("oci_database_exadata_infrastructure_compute.test_database_exadata_infrastructure_compute", "storage_count", "3"), + resource.TestCheckResourceAttr("oci_database_exadata_infrastructure_compute.test_database_exadata_infrastructure_compute", "compute_count", "7"), + resource.TestCheckResourceAttr("oci_database_exadata_infrastructure_compute.test_database_exadata_infrastructure_compute", "additional_compute_count", "0"), + resource.TestCheckResourceAttr("oci_database_exadata_infrastructure_compute.test_database_exadata_infrastructure_compute", "additional_compute_system_model", ""), + + func(s *terraform.State) (err error) { + _, err = acctest.FromInstanceState(s, resourceName, "id") + return err + }, + ), + }, + }) +} + +func init() { + if acctest.DependencyGraph == nil { + acctest.InitDependencyGraph() + } + if !acctest.InSweeperExcludeList("DatabaseExadataInfrastructureCompute") { + resource.AddTestSweepers("DatabaseExadataInfrastructureCompute", &resource.Sweeper{ + Name: "DatabaseExadataInfrastructureCompute", + Dependencies: acctest.DependencyGraph["exadataInfrastructureCompute"], + F: sweepDatabaseExadataInfrastructureResource, + }) + } +} diff --git a/internal/integrationtest/database_exadata_infrastructure_resource_test.go b/internal/integrationtest/database_exadata_infrastructure_resource_test.go index 75217f90796..7340eb93e00 100644 --- a/internal/integrationtest/database_exadata_infrastructure_resource_test.go +++ b/internal/integrationtest/database_exadata_infrastructure_resource_test.go @@ -32,16 +32,18 @@ var ( "infini_band_network_cidr": acctest.Representation{RepType: acctest.Required, Create: `10.31.8.0/21`, Update: `10.31.8.0/22`}, "netmask": acctest.Representation{RepType: acctest.Required, Create: `255.255.255.0`, Update: `255.255.254.0`}, "ntp_server": acctest.Representation{RepType: acctest.Required, Create: []string{`10.231.225.76`}, Update: []string{`10.246.6.36`, `10.31.138.20`}}, - "shape": acctest.Representation{RepType: acctest.Required, Create: `ExadataCC.Quarter3.100`}, + "shape": acctest.Representation{RepType: acctest.Required, Create: `ExadataCC.X7`}, + "storage_count": acctest.Representation{RepType: acctest.Required, Create: `3`}, + "compute_count": acctest.Representation{RepType: acctest.Required, Create: `3`}, "time_zone": acctest.Representation{RepType: acctest.Required, Create: `US/Pacific`, Update: `UTC`}, "contacts": acctest.RepresentationGroup{RepType: acctest.Optional, Group: DatabaseExadataInfrastructureContactsRepresentation}, "corporate_proxy": acctest.Representation{RepType: acctest.Optional, Create: `http://192.168.19.1:80`, Update: `http://192.168.19.2:80`}, - //"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")}`}, - "freeform_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"Department": "Finance"}, Update: map[string]string{"Department": "Accounting"}}, - "maintenance_window": acctest.RepresentationGroup{RepType: acctest.Optional, Group: exadataInfrastructureMaintenanceWindowRepresentationComplete}, + "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")}`}, + "freeform_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"Department": "Finance"}, Update: map[string]string{"Department": "Accounting"}}, + "maintenance_window": acctest.RepresentationGroup{RepType: acctest.Optional, Group: exadataInfrastructureMaintenanceWindowRepresentationComplete}, } - exadataInfrastructureRepresentationWithContacts = acctest.GetUpdatedRepresentationCopy("contacts", acctest.RepresentationGroup{RepType: acctest.Required, Group: acctest.GetUpdatedRepresentationCopy("phone_number", acctest.Representation{RepType: acctest.Required, Create: `1234567891`, Update: `1234567892`}, DatabaseExadataInfrastructureContactsRepresentation)}, DatabaseAutonomousExadataInfrastructureRepresentation) + exadataInfrastructureRepresentationWithContacts = acctest.GetUpdatedRepresentationCopy("contacts", acctest.RepresentationGroup{RepType: acctest.Required, Group: acctest.GetUpdatedRepresentationCopy("phone_number", acctest.Representation{RepType: acctest.Required, Create: `1234567891`, Update: `1234567892`}, DatabaseExadataInfrastructureContactsRepresentation)}, DatabaseExadataInfrastructureRepresentation) ExadataInfrastructureResourceActivateDependencies = DefinedTagsDependencies ) @@ -88,7 +90,9 @@ func TestResourceDatabaseExadataInfrastructure_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "infini_band_network_cidr", "10.31.8.0/22"), resource.TestCheckResourceAttr(resourceName, "netmask", "255.255.254.0"), resource.TestCheckResourceAttr(resourceName, "ntp_server.#", "2"), - resource.TestCheckResourceAttr(resourceName, "shape", "ExadataCC.Quarter3.100"), + resource.TestCheckResourceAttr(resourceName, "shape", "ExadataCC.X7"), + resource.TestCheckResourceAttr(resourceName, "storage_count", "3"), + resource.TestCheckResourceAttr(resourceName, "compute_count", "3"), resource.TestCheckResourceAttr(resourceName, "time_zone", "UTC"), resource.TestCheckResourceAttr(resourceName, "state", "ACTIVE"), ), @@ -118,7 +122,9 @@ func TestResourceDatabaseExadataInfrastructure_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "infini_band_network_cidr", "10.31.8.0/22"), resource.TestCheckResourceAttr(resourceName, "netmask", "255.255.254.0"), resource.TestCheckResourceAttr(resourceName, "ntp_server.#", "2"), - resource.TestCheckResourceAttr(resourceName, "shape", "ExadataCC.Quarter3.100"), + resource.TestCheckResourceAttr(resourceName, "shape", "ExadataCC.X7"), + resource.TestCheckResourceAttr(resourceName, "storage_count", "3"), + resource.TestCheckResourceAttr(resourceName, "compute_count", "3"), resource.TestCheckResourceAttr(resourceName, "time_zone", "UTC"), resource.TestCheckResourceAttr(resourceName, "state", "REQUIRES_ACTIVATION"), @@ -150,7 +156,9 @@ func TestResourceDatabaseExadataInfrastructure_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "infini_band_network_cidr", "10.31.8.0/22"), resource.TestCheckResourceAttr(resourceName, "netmask", "255.255.254.0"), resource.TestCheckResourceAttr(resourceName, "ntp_server.#", "2"), - resource.TestCheckResourceAttr(resourceName, "shape", "ExadataCC.Quarter3.100"), + resource.TestCheckResourceAttr(resourceName, "shape", "ExadataCC.X7"), + resource.TestCheckResourceAttr(resourceName, "storage_count", "3"), + resource.TestCheckResourceAttr(resourceName, "compute_count", "3"), resource.TestCheckResourceAttr(resourceName, "time_zone", "UTC"), resource.TestCheckResourceAttr(resourceName, "state", "ACTIVE"), diff --git a/internal/integrationtest/database_exadata_infrastructure_test.go b/internal/integrationtest/database_exadata_infrastructure_test.go index 9e01a06e01e..b83ce0d3ebb 100644 --- a/internal/integrationtest/database_exadata_infrastructure_test.go +++ b/internal/integrationtest/database_exadata_infrastructure_test.go @@ -47,26 +47,26 @@ var ( } DatabaseExadataInfrastructureRepresentation = map[string]interface{}{ - "admin_network_cidr": acctest.Representation{RepType: acctest.Required, Create: `192.168.0.0/16`, Update: `192.168.0.0/20`}, - "cloud_control_plane_server1": acctest.Representation{RepType: acctest.Required, Create: `10.32.88.1`, Update: `10.32.88.2`}, - "cloud_control_plane_server2": acctest.Representation{RepType: acctest.Required, Create: `10.32.88.3`, Update: `10.32.88.4`}, - "compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`}, - "display_name": acctest.Representation{RepType: acctest.Required, Create: `tstExaInfra`}, - "dns_server": acctest.Representation{RepType: acctest.Required, Create: []string{`10.231.225.65`}, Update: []string{`10.31.138.25`, `206.223.27.1`}}, - "gateway": acctest.Representation{RepType: acctest.Required, Create: `10.32.88.5`, Update: `10.32.88.6`}, - "infini_band_network_cidr": acctest.Representation{RepType: acctest.Required, Create: `10.31.8.0/21`, Update: `10.31.8.0/22`}, - "netmask": acctest.Representation{RepType: acctest.Required, Create: `255.255.255.0`, Update: `255.255.254.0`}, - "ntp_server": acctest.Representation{RepType: acctest.Required, Create: []string{`10.231.225.76`}, Update: []string{`10.246.6.36`, `10.31.138.20`}}, - "shape": acctest.Representation{RepType: acctest.Required, Create: `ExadataCC.Quarter3.100`}, - "time_zone": acctest.Representation{RepType: acctest.Required, Create: `US/Pacific`, Update: `UTC`}, - "compute_count": acctest.Representation{RepType: acctest.Optional, Create: `2`}, - "contacts": acctest.RepresentationGroup{RepType: acctest.Optional, Group: DatabaseExadataInfrastructureContactsRepresentation}, - "corporate_proxy": acctest.Representation{RepType: acctest.Optional, Create: `http://192.168.19.1:80`, Update: `http://192.168.19.2:80`}, - "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")}`}, - "freeform_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"Department": "Finance"}, Update: map[string]string{"Department": "Accounting"}}, - "is_cps_offline_report_enabled": acctest.Representation{RepType: acctest.Optional, Create: `false`, Update: `true`}, - "maintenance_window": acctest.RepresentationGroup{RepType: acctest.Optional, Group: DatabaseExadataInfrastructureMaintenanceWindowRepresentation}, - "storage_count": acctest.Representation{RepType: acctest.Optional, Create: `3`}, + "admin_network_cidr": acctest.Representation{RepType: acctest.Required, Create: `192.168.0.0/16`, Update: `192.168.0.0/20`}, + "cloud_control_plane_server1": acctest.Representation{RepType: acctest.Required, Create: `10.32.88.1`, Update: `10.32.88.2`}, + "cloud_control_plane_server2": acctest.Representation{RepType: acctest.Required, Create: `10.32.88.3`, Update: `10.32.88.4`}, + "compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`}, + "display_name": acctest.Representation{RepType: acctest.Required, Create: `tstExaInfra`}, + "dns_server": acctest.Representation{RepType: acctest.Required, Create: []string{`10.231.225.65`}, Update: []string{`10.31.138.25`, `206.223.27.1`}}, + "gateway": acctest.Representation{RepType: acctest.Required, Create: `10.32.88.5`, Update: `10.32.88.6`}, + "infini_band_network_cidr": acctest.Representation{RepType: acctest.Required, Create: `10.31.8.0/21`, Update: `10.31.8.0/22`}, + "netmask": acctest.Representation{RepType: acctest.Required, Create: `255.255.255.0`, Update: `255.255.254.0`}, + "ntp_server": acctest.Representation{RepType: acctest.Required, Create: []string{`10.231.225.76`}, Update: []string{`10.246.6.36`, `10.31.138.20`}}, + "shape": acctest.Representation{RepType: acctest.Required, Create: `ExadataCC.X7`}, + "time_zone": acctest.Representation{RepType: acctest.Required, Create: `US/Pacific`, Update: `UTC`}, + "storage_count": acctest.Representation{RepType: acctest.Required, Create: `3`}, + "compute_count": acctest.Representation{RepType: acctest.Required, Create: `2`}, + "contacts": acctest.RepresentationGroup{RepType: acctest.Optional, Group: DatabaseExadataInfrastructureContactsRepresentation}, + "corporate_proxy": acctest.Representation{RepType: acctest.Optional, Create: `http://192.168.19.1:80`, Update: `http://192.168.19.2:80`}, + "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")}`}, + "freeform_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"Department": "Finance"}, Update: map[string]string{"Department": "Accounting"}}, + "maintenance_window": acctest.RepresentationGroup{RepType: acctest.Optional, Group: DatabaseExadataInfrastructureMaintenanceWindowRepresentation}, + "lifecycle": acctest.RepresentationGroup{RepType: acctest.Optional, Group: DatabaseExadataInfrastructureIgnoreChangesRepresentation}, } DatabaseExadataInfrastructureContactsRepresentation = map[string]interface{}{ "email": acctest.Representation{RepType: acctest.Required, Create: `testuser1@testdomain.com`, Update: `testuser2@testdomain.com`}, @@ -111,6 +111,10 @@ var ( "name": acctest.Representation{RepType: acctest.Required, Update: `SEPTEMBER`}, } + DatabaseExadataInfrastructureIgnoreChangesRepresentation = map[string]interface{}{ + "ignore_changes": acctest.Representation{RepType: acctest.Optional, Update: []string{`compute_count`}}, + } + DatabaseExadataInfrastructureResourceDependencies = DefinedTagsDependencies ) @@ -152,7 +156,7 @@ func TestDatabaseExadataInfrastructureResource_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "infini_band_network_cidr", "10.31.8.0/21"), resource.TestCheckResourceAttr(resourceName, "netmask", "255.255.255.0"), resource.TestCheckResourceAttr(resourceName, "ntp_server.#", "1"), - resource.TestCheckResourceAttr(resourceName, "shape", "ExadataCC.Quarter3.100"), + resource.TestCheckResourceAttr(resourceName, "shape", "ExadataCC.X7"), resource.TestCheckResourceAttr(resourceName, "time_zone", "US/Pacific"), func(s *terraform.State) (err error) { @@ -189,7 +193,7 @@ func TestDatabaseExadataInfrastructureResource_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "gateway", "10.32.88.5"), resource.TestCheckResourceAttrSet(resourceName, "id"), resource.TestCheckResourceAttr(resourceName, "infini_band_network_cidr", "10.31.8.0/21"), - resource.TestCheckResourceAttr(resourceName, "is_cps_offline_report_enabled", "false"), + //resource.TestCheckResourceAttr(resourceName, "is_cps_offline_report_enabled", "false"), resource.TestCheckResourceAttr(resourceName, "maintenance_window.#", "1"), resource.TestCheckResourceAttr(resourceName, "maintenance_window.0.custom_action_timeout_in_mins", "0"), resource.TestCheckResourceAttr(resourceName, "maintenance_window.0.days_of_week.#", "0"), @@ -203,7 +207,7 @@ func TestDatabaseExadataInfrastructureResource_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "maintenance_window.0.weeks_of_month.#", "0"), resource.TestCheckResourceAttr(resourceName, "netmask", "255.255.255.0"), resource.TestCheckResourceAttr(resourceName, "ntp_server.#", "1"), - resource.TestCheckResourceAttr(resourceName, "shape", "ExadataCC.Quarter3.100"), + resource.TestCheckResourceAttr(resourceName, "shape", "ExadataCC.X7"), resource.TestCheckResourceAttrSet(resourceName, "state"), resource.TestCheckResourceAttr(resourceName, "storage_count", "3"), resource.TestCheckResourceAttr(resourceName, "compute_count", "2"), @@ -247,7 +251,7 @@ func TestDatabaseExadataInfrastructureResource_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "gateway", "10.32.88.5"), resource.TestCheckResourceAttrSet(resourceName, "id"), resource.TestCheckResourceAttr(resourceName, "infini_band_network_cidr", "10.31.8.0/21"), - resource.TestCheckResourceAttr(resourceName, "is_cps_offline_report_enabled", "false"), + //resource.TestCheckResourceAttr(resourceName, "is_cps_offline_report_enabled", "false"), resource.TestCheckResourceAttr(resourceName, "maintenance_window.#", "1"), resource.TestCheckResourceAttr(resourceName, "maintenance_window.0.custom_action_timeout_in_mins", "0"), resource.TestCheckResourceAttr(resourceName, "maintenance_window.0.days_of_week.#", "0"), @@ -261,7 +265,7 @@ func TestDatabaseExadataInfrastructureResource_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "maintenance_window.0.weeks_of_month.#", "0"), resource.TestCheckResourceAttr(resourceName, "netmask", "255.255.255.0"), resource.TestCheckResourceAttr(resourceName, "ntp_server.#", "1"), - resource.TestCheckResourceAttr(resourceName, "shape", "ExadataCC.Quarter3.100"), + resource.TestCheckResourceAttr(resourceName, "shape", "ExadataCC.X7"), resource.TestCheckResourceAttrSet(resourceName, "state"), resource.TestCheckResourceAttr(resourceName, "storage_count", "3"), resource.TestCheckResourceAttr(resourceName, "compute_count", "2"), @@ -303,7 +307,7 @@ func TestDatabaseExadataInfrastructureResource_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "gateway", "10.32.88.6"), resource.TestCheckResourceAttrSet(resourceName, "id"), resource.TestCheckResourceAttr(resourceName, "infini_band_network_cidr", "10.31.8.0/22"), - resource.TestCheckResourceAttr(resourceName, "is_cps_offline_report_enabled", "true"), + //resource.TestCheckResourceAttr(resourceName, "is_cps_offline_report_enabled", "true"), resource.TestCheckResourceAttr(resourceName, "maintenance_window.#", "1"), resource.TestCheckResourceAttr(resourceName, "maintenance_window.0.custom_action_timeout_in_mins", "25"), resource.TestCheckResourceAttr(resourceName, "maintenance_window.0.days_of_week.#", "1"), @@ -319,7 +323,7 @@ func TestDatabaseExadataInfrastructureResource_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "maintenance_window.0.weeks_of_month.#", "2"), resource.TestCheckResourceAttr(resourceName, "netmask", "255.255.254.0"), resource.TestCheckResourceAttr(resourceName, "ntp_server.#", "2"), - resource.TestCheckResourceAttr(resourceName, "shape", "ExadataCC.Quarter3.100"), + resource.TestCheckResourceAttr(resourceName, "shape", "ExadataCC.X7"), resource.TestCheckResourceAttrSet(resourceName, "state"), resource.TestCheckResourceAttr(resourceName, "storage_count", "3"), resource.TestCheckResourceAttr(resourceName, "compute_count", "2"), @@ -351,7 +355,6 @@ func TestDatabaseExadataInfrastructureResource_basic(t *testing.T) { resource.TestCheckResourceAttr(datasourceName, "exadata_infrastructures.#", "1"), resource.TestCheckResourceAttrSet(datasourceName, "exadata_infrastructures.0.activated_storage_count"), resource.TestCheckResourceAttrSet(datasourceName, "exadata_infrastructures.0.additional_compute_count"), - resource.TestCheckResourceAttrSet(datasourceName, "exadata_infrastructures.0.additional_compute_system_model"), resource.TestCheckResourceAttrSet(datasourceName, "exadata_infrastructures.0.additional_storage_count"), resource.TestCheckResourceAttr(datasourceName, "exadata_infrastructures.0.admin_network_cidr", "192.168.0.0/20"), resource.TestCheckResourceAttr(datasourceName, "exadata_infrastructures.0.cloud_control_plane_server1", "10.32.88.2"), @@ -375,7 +378,7 @@ func TestDatabaseExadataInfrastructureResource_basic(t *testing.T) { resource.TestCheckResourceAttr(datasourceName, "exadata_infrastructures.0.gateway", "10.32.88.6"), resource.TestCheckResourceAttrSet(datasourceName, "exadata_infrastructures.0.id"), resource.TestCheckResourceAttr(datasourceName, "exadata_infrastructures.0.infini_band_network_cidr", "10.31.8.0/22"), - resource.TestCheckResourceAttr(datasourceName, "exadata_infrastructures.0.is_cps_offline_report_enabled", "true"), + //resource.TestCheckResourceAttr(datasourceName, "exadata_infrastructures.0.is_cps_offline_report_enabled", "true"), //resource.TestCheckResourceAttrSet(datasourceName, "exadata_infrastructures.0.maintenance_slo_status"), resource.TestCheckResourceAttr(datasourceName, "exadata_infrastructures.0.maintenance_window.#", "1"), resource.TestCheckResourceAttr(datasourceName, "exadata_infrastructures.0.maintenance_window.0.custom_action_timeout_in_mins", "25"), @@ -401,7 +404,7 @@ func TestDatabaseExadataInfrastructureResource_basic(t *testing.T) { resource.TestCheckResourceAttr(datasourceName, "exadata_infrastructures.0.ntp_server.#", "2"), //rack_serial_number is not available immediately in the response as it will be set by ops command //resource.TestCheckResourceAttrSet(datasourceName, "exadata_infrastructures.0.rack_serial_number"), - resource.TestCheckResourceAttr(datasourceName, "exadata_infrastructures.0.shape", "ExadataCC.Quarter3.100"), + resource.TestCheckResourceAttr(datasourceName, "exadata_infrastructures.0.shape", "ExadataCC.X7"), resource.TestCheckResourceAttrSet(datasourceName, "exadata_infrastructures.0.state"), resource.TestCheckResourceAttr(datasourceName, "exadata_infrastructures.0.storage_count", "3"), resource.TestCheckResourceAttr(datasourceName, "exadata_infrastructures.0.compute_count", "2"), @@ -419,7 +422,6 @@ func TestDatabaseExadataInfrastructureResource_basic(t *testing.T) { resource.TestCheckResourceAttrSet(singularDatasourceName, "activated_storage_count"), resource.TestCheckResourceAttrSet(singularDatasourceName, "additional_compute_count"), - resource.TestCheckResourceAttrSet(singularDatasourceName, "additional_compute_system_model"), resource.TestCheckResourceAttrSet(singularDatasourceName, "additional_storage_count"), resource.TestCheckResourceAttr(singularDatasourceName, "admin_network_cidr", "192.168.0.0/20"), resource.TestCheckResourceAttr(singularDatasourceName, "cloud_control_plane_server1", "10.32.88.2"), @@ -444,7 +446,7 @@ func TestDatabaseExadataInfrastructureResource_basic(t *testing.T) { resource.TestCheckResourceAttr(singularDatasourceName, "gateway", "10.32.88.6"), resource.TestCheckResourceAttrSet(singularDatasourceName, "id"), resource.TestCheckResourceAttr(singularDatasourceName, "infini_band_network_cidr", "10.31.8.0/22"), - resource.TestCheckResourceAttr(singularDatasourceName, "is_cps_offline_report_enabled", "true"), + //resource.TestCheckResourceAttr(singularDatasourceName, "is_cps_offline_report_enabled", "true"), // maintenance_slo_status is not avaliable immediately in the response //resource.TestCheckResourceAttrSet(singularDatasourceName, "maintenance_slo_status"), resource.TestCheckResourceAttr(singularDatasourceName, "maintenance_window.#", "1"), @@ -465,7 +467,7 @@ func TestDatabaseExadataInfrastructureResource_basic(t *testing.T) { resource.TestCheckResourceAttr(singularDatasourceName, "ntp_server.#", "2"), //rack_serial_number is not available immediately in the response as it will be set by ops command //resource.TestCheckResourceAttrSet(singularDatasourceName, "rack_serial_number"), - resource.TestCheckResourceAttr(singularDatasourceName, "shape", "ExadataCC.Quarter3.100"), + resource.TestCheckResourceAttr(singularDatasourceName, "shape", "ExadataCC.X7"), resource.TestCheckResourceAttrSet(singularDatasourceName, "state"), resource.TestCheckResourceAttr(singularDatasourceName, "storage_count", "3"), resource.TestCheckResourceAttr(singularDatasourceName, "compute_count", "2"), diff --git a/internal/integrationtest/database_exadata_iorm_config_test.go b/internal/integrationtest/database_exadata_iorm_config_test.go index e9385f73548..2ac267c4b78 100644 --- a/internal/integrationtest/database_exadata_iorm_config_test.go +++ b/internal/integrationtest/database_exadata_iorm_config_test.go @@ -75,22 +75,6 @@ var ( dns_label = "subnetexadata2" } -<<<<<<< ours - DatabaseExadataIormConfigResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_core_subnet", "test_subnet", acctest.Required, acctest.Create, subnetRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_core_vcn", "test_vcn", acctest.Required, acctest.Create, vcnRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_backup", "test_backup", acctest.Required, acctest.Create, backupRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Required, acctest.Create, databaseRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_db_home", "test_db_home", acctest.Required, acctest.Create, dbHomeRepresentation) + - BackupResourceDependencies + - GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", Optional, Create, backupDestinationNFSRepresentation) + - GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", Optional, Update, RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": Representation{RepType: Optional, Update: activationFilePath}})) + - GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", Optional, Update, vmClusterNetworkValidateRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_db_system", "test_db_system", acctest.Required, acctest.Create, dbSystemRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) + - AvailabilityDomainConfig -======= resource "oci_core_security_list" "exadata_shapes_security_list" { compartment_id = "${var.compartment_id}" vcn_id = "${oci_core_virtual_network.t.id}" @@ -142,7 +126,6 @@ var ( } } ` ->>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/integrationtest/database_external_container_database_management_test.go b/internal/integrationtest/database_external_container_database_management_test.go index db28d215223..ca5a8c80f33 100644 --- a/internal/integrationtest/database_external_container_database_management_test.go +++ b/internal/integrationtest/database_external_container_database_management_test.go @@ -30,27 +30,8 @@ var ( "connector_type": acctest.Representation{RepType: acctest.Optional, Create: `MACS`}, } -<<<<<<< ours - DatabaseExternalContainerDatabaseManagementResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_cloud_bridge_agent", "test_agent", acctest.Required, acctest.Create, agentRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_cloud_bridge_environment", "test_environment", acctest.Required, acctest.Create, environmentRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_backup", "test_backup", acctest.Required, acctest.Create, backupRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Required, acctest.Create, databaseRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_db_home", "test_db_home", acctest.Required, acctest.Create, dbHomeRepresentation) + - BackupResourceDependencies + - GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", Optional, Create, backupDestinationNFSRepresentation) + - GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", Optional, Update, RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": Representation{RepType: Optional, Update: activationFilePath}})) + - GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", Optional, Update, vmClusterNetworkValidateRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_external_container_database", "test_external_container_database", acctest.Required, acctest.Create, externalContainerDatabaseRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_external_database_connector", "test_external_database_connector", acctest.Required, acctest.Create, externalDatabaseConnectorRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_kms_vault", "test_vault", acctest.Required, acctest.Create, vaultRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_vault_secret", "test_secret", acctest.Required, acctest.Create, secretRepresentation) -======= DatabaseExternalContainerDatabaseManagementResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_database_external_container_database", "test_external_container_database", acctest.Required, acctest.Create, DatabaseExternalContainerDatabaseRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_external_database_connector", "test_external_database_connector", acctest.Required, acctest.Create, DatabaseExternalContainerDatabaseConnectorRepresentation) ->>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/integrationtest/database_external_database_connector_test.go b/internal/integrationtest/database_external_database_connector_test.go index b2cdfbeb174..742b7f710ba 100644 --- a/internal/integrationtest/database_external_database_connector_test.go +++ b/internal/integrationtest/database_external_database_connector_test.go @@ -72,26 +72,8 @@ var ( "service": acctest.Representation{RepType: acctest.Required, Create: `testService`, Update: `service2`}, } -<<<<<<< ours - DatabaseExternalDatabaseConnectorResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_cloud_bridge_agent", "test_agent", acctest.Required, acctest.Create, agentRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_cloud_bridge_environment", "test_environment", acctest.Required, acctest.Create, environmentRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_backup", "test_backup", acctest.Required, acctest.Create, backupRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Required, acctest.Create, databaseRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_db_home", "test_db_home", acctest.Required, acctest.Create, dbHomeRepresentation) + - BackupResourceDependencies + - GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", Optional, Create, backupDestinationNFSRepresentation) + - GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", Optional, Update, RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": Representation{RepType: Optional, Update: activationFilePath}})) + - GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", Optional, Update, vmClusterNetworkValidateRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) + - DefinedTagsDependencies + - acctest.GenerateResourceFromRepresentationMap("oci_kms_vault", "test_vault", acctest.Required, acctest.Create, vaultRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_vault_secret", "test_secret", acctest.Required, acctest.Create, secretRepresentation) -======= DatabaseExternalDatabaseConnectorResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_database_external_non_container_database", "test_external_non_container_database", acctest.Required, acctest.Create, DatabaseExternalNonContainerDatabaseRepresentation) + DefinedTagsDependencies ->>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/integrationtest/database_external_non_container_database_management_test.go b/internal/integrationtest/database_external_non_container_database_management_test.go index 5f6e4ed957c..f5e414341bc 100644 --- a/internal/integrationtest/database_external_non_container_database_management_test.go +++ b/internal/integrationtest/database_external_non_container_database_management_test.go @@ -22,27 +22,8 @@ var ( "enable_management": acctest.Representation{RepType: acctest.Required, Create: `true`, Update: `false`}, } -<<<<<<< ours - DatabaseExternalNonContainerDatabaseManagementResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_cloud_bridge_agent", "test_agent", acctest.Required, acctest.Create, agentRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_cloud_bridge_environment", "test_environment", acctest.Required, acctest.Create, environmentRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_backup", "test_backup", acctest.Required, acctest.Create, backupRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Required, acctest.Create, databaseRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_db_home", "test_db_home", acctest.Required, acctest.Create, dbHomeRepresentation) + - BackupResourceDependencies + - GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", Optional, Create, backupDestinationNFSRepresentation) + - GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", Optional, Update, RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": Representation{RepType: Optional, Update: activationFilePath}})) + - GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", Optional, Update, vmClusterNetworkValidateRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_external_database_connector", "test_external_database_connector", acctest.Required, acctest.Create, externalDatabaseConnectorRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_external_non_container_database", "test_external_non_container_database", acctest.Required, acctest.Create, externalNonContainerDatabaseRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_kms_vault", "test_vault", acctest.Required, acctest.Create, vaultRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_vault_secret", "test_secret", acctest.Required, acctest.Create, secretRepresentation) -======= DatabaseExternalNonContainerDatabaseManagementResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_database_external_non_container_database", "test_external_non_container_database", acctest.Required, acctest.Create, DatabaseExternalNonContainerDatabaseRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_external_database_connector", "test_external_database_connector", acctest.Required, acctest.Create, DatabaseExternalDatabaseConnectorRepresentation) ->>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/integrationtest/database_external_non_container_database_operations_insights_management_test.go b/internal/integrationtest/database_external_non_container_database_operations_insights_management_test.go index 8cc68331f94..79f302df3ae 100644 --- a/internal/integrationtest/database_external_non_container_database_operations_insights_management_test.go +++ b/internal/integrationtest/database_external_non_container_database_operations_insights_management_test.go @@ -21,27 +21,8 @@ var ( "enable_operations_insights": acctest.Representation{RepType: acctest.Required, Create: `true`, Update: `false`}, } -<<<<<<< ours - DatabaseExternalNonContainerDatabaseOperationsInsightsManagementResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_cloud_bridge_agent", "test_agent", acctest.Required, acctest.Create, agentRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_cloud_bridge_environment", "test_environment", acctest.Required, acctest.Create, environmentRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_backup", "test_backup", acctest.Required, acctest.Create, backupRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Required, acctest.Create, databaseRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_db_home", "test_db_home", acctest.Required, acctest.Create, dbHomeRepresentation) + - BackupResourceDependencies + - GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", Optional, Create, backupDestinationNFSRepresentation) + - GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", Optional, Update, RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": Representation{RepType: Optional, Update: activationFilePath}})) + - GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", Optional, Update, vmClusterNetworkValidateRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_external_database_connector", "test_external_database_connector", acctest.Required, acctest.Create, externalDatabaseConnectorRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_external_non_container_database", "test_external_non_container_database", acctest.Required, acctest.Create, externalNonContainerDatabaseRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_kms_vault", "test_vault", acctest.Required, acctest.Create, vaultRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_vault_secret", "test_secret", acctest.Required, acctest.Create, secretRepresentation) -======= DatabaseExternalNonContainerDatabaseOperationsInsightsManagementResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_database_external_database_connector", "test_external_database_connector", acctest.Required, acctest.Create, DatabaseExternalDatabaseConnectorRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_external_non_container_database", "test_external_non_container_database", acctest.Required, acctest.Create, DatabaseExternalNonContainerDatabaseRepresentation) ->>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/integrationtest/database_external_pluggable_database_management_test.go b/internal/integrationtest/database_external_pluggable_database_management_test.go index 93676eada91..c4fd9546f60 100644 --- a/internal/integrationtest/database_external_pluggable_database_management_test.go +++ b/internal/integrationtest/database_external_pluggable_database_management_test.go @@ -29,25 +29,6 @@ var ( "connector_type": acctest.Representation{RepType: acctest.Optional, Create: `MACS`}, } -<<<<<<< ours - DatabaseExternalPluggableDatabaseManagementResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_cloud_bridge_agent", "test_agent", acctest.Required, acctest.Create, agentRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_cloud_bridge_environment", "test_environment", acctest.Required, acctest.Create, environmentRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_backup", "test_backup", acctest.Required, acctest.Create, backupRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Required, acctest.Create, databaseRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_db_home", "test_db_home", acctest.Required, acctest.Create, dbHomeRepresentation) + - BackupResourceDependencies + - GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", Optional, Create, backupDestinationNFSRepresentation) + - GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", Optional, Update, RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": Representation{RepType: Optional, Update: activationFilePath}})) + - GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", Optional, Update, vmClusterNetworkValidateRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_external_container_database", "test_external_container_database", acctest.Required, acctest.Create, externalContainerDatabaseRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_external_database_connector", "test_external_database_connector", acctest.Required, acctest.Create, externalDatabaseConnectorRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_external_pluggable_database", "test_external_pluggable_database", acctest.Required, acctest.Create, externalPluggableDatabaseRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_kms_vault", "test_vault", acctest.Required, acctest.Create, vaultRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_vault_secret", "test_secret", acctest.Required, acctest.Create, secretRepresentation) -======= DatabaseExternalPluggable1DatabaseRepresentation = map[string]interface{}{ "compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`}, "display_name": acctest.Representation{RepType: acctest.Required, Create: `myTestExternalPdb`}, @@ -60,7 +41,6 @@ var ( acctest.GenerateResourceFromRepresentationMap("oci_database_external_pluggable_database", "test_external_pluggable_database", acctest.Required, acctest.Create, DatabaseExternalPluggable1DatabaseRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_external_database_connector", "test_external_pluggable_database_connector", acctest.Required, acctest.Create, DatabaseExternalPluggableDatabaseConnectorRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_external_database_connector", "test_external_database_connector", acctest.Required, acctest.Create, DatabaseExternalContainerDatabaseConnectorRepresentation) ->>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/integrationtest/database_external_pluggable_database_operations_insights_management_test.go b/internal/integrationtest/database_external_pluggable_database_operations_insights_management_test.go index 26a0c680bb5..c0503f73732 100644 --- a/internal/integrationtest/database_external_pluggable_database_operations_insights_management_test.go +++ b/internal/integrationtest/database_external_pluggable_database_operations_insights_management_test.go @@ -21,30 +21,10 @@ var ( "enable_operations_insights": acctest.Representation{RepType: acctest.Required, Create: `true`, Update: `false`}, } -<<<<<<< ours - DatabaseExternalPluggableDatabaseOperationsInsightsManagementResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_cloud_bridge_agent", "test_agent", acctest.Required, acctest.Create, agentRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_cloud_bridge_environment", "test_environment", acctest.Required, acctest.Create, environmentRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_backup", "test_backup", acctest.Required, acctest.Create, backupRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Required, acctest.Create, databaseRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_db_home", "test_db_home", acctest.Required, acctest.Create, dbHomeRepresentation) + - BackupResourceDependencies + - GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", Optional, Create, backupDestinationNFSRepresentation) + - GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", Optional, Update, RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": Representation{RepType: Optional, Update: activationFilePath}})) + - GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", Optional, Update, vmClusterNetworkValidateRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_external_container_database", "test_external_container_database", acctest.Required, acctest.Create, externalContainerDatabaseRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_external_database_connector", "test_external_database_connector", acctest.Required, acctest.Create, externalDatabaseConnectorRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_external_pluggable_database", "test_external_pluggable_database", acctest.Required, acctest.Create, externalPluggableDatabaseRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_kms_vault", "test_vault", acctest.Required, acctest.Create, vaultRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_vault_secret", "test_secret", acctest.Required, acctest.Create, secretRepresentation) -======= DatabaseExternalPluggableDatabaseOperationsInsightsManagementResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_database_external_container_database", "test_external_container_database", acctest.Required, acctest.Create, DatabaseExternalContainerDatabaseRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_external_pluggable_database", "test_external_pluggable_database", acctest.Required, acctest.Create, DatabaseExternalPluggable1DatabaseRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_external_database_connector", "test_external_pluggable_database_connector", acctest.Required, acctest.Create, DatabaseExternalPluggableDatabaseConnectorRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_external_database_connector", "test_external_database_connector", acctest.Required, acctest.Create, DatabaseExternalContainerDatabaseConnectorRepresentation) ->>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/integrationtest/database_externalcontainerdatabases_stack_monitoring_test.go b/internal/integrationtest/database_externalcontainerdatabases_stack_monitoring_test.go index 248aec77dc3..c43cfbdab5b 100644 --- a/internal/integrationtest/database_externalcontainerdatabases_stack_monitoring_test.go +++ b/internal/integrationtest/database_externalcontainerdatabases_stack_monitoring_test.go @@ -21,27 +21,8 @@ var ( "enable_stack_monitoring": acctest.Representation{RepType: acctest.Required, Create: `true`, Update: `false`}, } -<<<<<<< ours - DatabaseExternalcontainerdatabasesStackMonitoringResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_cloud_bridge_agent", "test_agent", acctest.Required, acctest.Create, agentRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_cloud_bridge_environment", "test_environment", acctest.Required, acctest.Create, environmentRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_backup", "test_backup", acctest.Required, acctest.Create, backupRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Required, acctest.Create, databaseRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_db_home", "test_db_home", acctest.Required, acctest.Create, dbHomeRepresentation) + - BackupResourceDependencies + - GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", Optional, Create, backupDestinationNFSRepresentation) + - GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", Optional, Update, RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": Representation{RepType: Optional, Update: activationFilePath}})) + - GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", Optional, Update, vmClusterNetworkValidateRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_external_container_database", "test_external_container_database", acctest.Required, acctest.Create, externalContainerDatabaseRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_external_database_connector", "test_external_database_connector", acctest.Required, acctest.Create, externalDatabaseConnectorRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_kms_vault", "test_vault", acctest.Required, acctest.Create, vaultRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_vault_secret", "test_secret", acctest.Required, acctest.Create, secretRepresentation) -======= DatabaseExternalcontainerdatabasesStackMonitoringResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_database_external_database_connector", "test_external_database_connector", acctest.Required, acctest.Create, DatabaseExternalContainerDatabaseConnectorRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_external_container_database", "test_external_container_database", acctest.Required, acctest.Create, DatabaseExternalContainerDatabaseRepresentation) ->>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/integrationtest/database_externalnoncontainerdatabases_stack_monitoring_test.go b/internal/integrationtest/database_externalnoncontainerdatabases_stack_monitoring_test.go index 6cf8a80b3b0..0250a6db44b 100644 --- a/internal/integrationtest/database_externalnoncontainerdatabases_stack_monitoring_test.go +++ b/internal/integrationtest/database_externalnoncontainerdatabases_stack_monitoring_test.go @@ -21,27 +21,8 @@ var ( "enable_stack_monitoring": acctest.Representation{RepType: acctest.Required, Create: `true`, Update: `false`}, } -<<<<<<< ours - DatabaseExternalnoncontainerdatabasesStackMonitoringResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_cloud_bridge_agent", "test_agent", acctest.Required, acctest.Create, agentRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_cloud_bridge_environment", "test_environment", acctest.Required, acctest.Create, environmentRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_backup", "test_backup", acctest.Required, acctest.Create, backupRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Required, acctest.Create, databaseRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_db_home", "test_db_home", acctest.Required, acctest.Create, dbHomeRepresentation) + - BackupResourceDependencies + - GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", Optional, Create, backupDestinationNFSRepresentation) + - GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", Optional, Update, RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": Representation{RepType: Optional, Update: activationFilePath}})) + - GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", Optional, Update, vmClusterNetworkValidateRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_external_database_connector", "test_external_database_connector", acctest.Required, acctest.Create, externalDatabaseConnectorRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_external_non_container_database", "test_external_non_container_database", acctest.Required, acctest.Create, externalNonContainerDatabaseRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_kms_vault", "test_vault", acctest.Required, acctest.Create, vaultRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_vault_secret", "test_secret", acctest.Required, acctest.Create, secretRepresentation) -======= DatabaseExternalnoncontainerdatabasesStackMonitoringResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_database_external_database_connector", "test_external_database_connector", acctest.Required, acctest.Create, DatabaseExternalDatabaseConnectorRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_external_non_container_database", "test_external_non_container_database", acctest.Required, acctest.Create, DatabaseExternalNonContainerDatabaseRepresentation) ->>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/integrationtest/database_externalpluggabledatabases_stack_monitoring_test.go b/internal/integrationtest/database_externalpluggabledatabases_stack_monitoring_test.go index de43b027419..ed7913ceef1 100644 --- a/internal/integrationtest/database_externalpluggabledatabases_stack_monitoring_test.go +++ b/internal/integrationtest/database_externalpluggabledatabases_stack_monitoring_test.go @@ -21,30 +21,10 @@ var ( "enable_stack_monitoring": acctest.Representation{RepType: acctest.Required, Create: `true`, Update: `false`}, } -<<<<<<< ours - DatabaseExternalpluggabledatabasesStackMonitoringResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_cloud_bridge_agent", "test_agent", acctest.Required, acctest.Create, agentRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_cloud_bridge_environment", "test_environment", acctest.Required, acctest.Create, environmentRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_backup", "test_backup", acctest.Required, acctest.Create, backupRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Required, acctest.Create, databaseRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_db_home", "test_db_home", acctest.Required, acctest.Create, dbHomeRepresentation) + - BackupResourceDependencies + - GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", Optional, Create, backupDestinationNFSRepresentation) + - GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", Optional, Update, RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": Representation{RepType: Optional, Update: activationFilePath}})) + - GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", Optional, Update, vmClusterNetworkValidateRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_external_container_database", "test_external_container_database", acctest.Required, acctest.Create, externalContainerDatabaseRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_external_database_connector", "test_external_database_connector", acctest.Required, acctest.Create, externalDatabaseConnectorRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_external_pluggable_database", "test_external_pluggable_database", acctest.Required, acctest.Create, externalPluggableDatabaseRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_kms_vault", "test_vault", acctest.Required, acctest.Create, vaultRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_vault_secret", "test_secret", acctest.Required, acctest.Create, secretRepresentation) -======= DatabaseExternalpluggabledatabasesStackMonitoringResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_database_external_container_database", "test_external_container_database", acctest.Required, acctest.Create, DatabaseExternalContainerDatabaseRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_external_pluggable_database", "test_external_pluggable_database", acctest.Required, acctest.Create, DatabaseExternalPluggable1DatabaseRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_external_database_connector", "test_external_pluggable_database_connector", acctest.Required, acctest.Create, DatabaseExternalPluggableDatabaseConnectorRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_external_database_connector", "test_external_database_connector", acctest.Required, acctest.Create, DatabaseExternalContainerDatabaseConnectorRepresentation) ->>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/integrationtest/database_pluggable_database_test.go b/internal/integrationtest/database_pluggable_database_test.go index 090c636baa0..571595f22c1 100644 --- a/internal/integrationtest/database_pluggable_database_test.go +++ b/internal/integrationtest/database_pluggable_database_test.go @@ -193,22 +193,8 @@ var ( database_id = "${data.oci_database_databases.t.databases.0.id}" }` -<<<<<<< ours - DatabasePluggableDatabaseResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_database_backup", "test_backup", acctest.Required, acctest.Create, backupRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Required, acctest.Create, databaseRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_db_home", "test_db_home", acctest.Required, acctest.Create, dbHomeRepresentation) + - BackupResourceDependencies + - GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", Optional, Create, backupDestinationNFSRepresentation) + - GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", Optional, Update, RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": Representation{RepType: Optional, Update: activationFilePath}})) + - GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", Optional, Update, vmClusterNetworkValidateRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) + - DefinedTagsDependencies -======= DatabasePluggableDatabaseResourceDependencies = AvailabilityDomainConfig + ResourcePluggableDatabaseBaseConfig + DefinedTagsDependencies + dbSystemForPluggableDbRepresentation ->>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/integrationtest/database_pluggable_databases_local_clone_test.go b/internal/integrationtest/database_pluggable_databases_local_clone_test.go index 59c63736d22..cd6bde6ed2d 100644 --- a/internal/integrationtest/database_pluggable_databases_local_clone_test.go +++ b/internal/integrationtest/database_pluggable_databases_local_clone_test.go @@ -23,21 +23,6 @@ var ( "should_pdb_admin_account_be_locked": acctest.Representation{RepType: acctest.Optional, Create: `false`}, "lifecycle": acctest.RepresentationGroup{RepType: acctest.Required, Group: ignoreChangesLBRepresentation}, } -<<<<<<< ours - - DatabasePluggableDatabasesLocalCloneResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_database_backup", "test_backup", acctest.Required, acctest.Create, backupRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Required, acctest.Create, databaseRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_db_home", "test_db_home", acctest.Required, acctest.Create, dbHomeRepresentation) + - BackupResourceDependencies + - GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", Optional, Create, backupDestinationNFSRepresentation) + - GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", Optional, Update, RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": Representation{RepType: Optional, Update: activationFilePath}})) + - GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", Optional, Update, vmClusterNetworkValidateRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_pluggable_database", "test_pluggable_database", acctest.Required, acctest.Create, pluggableDatabaseRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) -======= ->>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/integrationtest/database_pluggable_databases_remote_clone_test.go b/internal/integrationtest/database_pluggable_databases_remote_clone_test.go index fe61038907a..0a05cbec711 100644 --- a/internal/integrationtest/database_pluggable_databases_remote_clone_test.go +++ b/internal/integrationtest/database_pluggable_databases_remote_clone_test.go @@ -53,19 +53,6 @@ var ( display_name = "-tf-internet-gateway-clone" } -<<<<<<< ours - DatabasePluggableDatabasesRemoteCloneResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_database_backup", "test_backup", acctest.Required, acctest.Create, backupRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Required, acctest.Create, databaseRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_db_home", "test_db_home", acctest.Required, acctest.Create, dbHomeRepresentation) + - BackupResourceDependencies + - GenerateResourceFromRepresentationMap("oci_database_backup_destination", "test_backup_destination", Optional, Create, backupDestinationNFSRepresentation) + - GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", Optional, Update, RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{"activation_file": Representation{RepType: Optional, Update: activationFilePath}})) + - GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", Optional, Update, vmClusterNetworkValidateRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_pluggable_database", "test_pluggable_database", acctest.Required, acctest.Create, pluggableDatabaseRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) -======= resource "oci_core_subnet" "tClone" { availability_domain = "${data.oci_identity_availability_domains.ADsClone.availability_domains.0.name}" cidr_block = "10.1.20.0/24" @@ -174,7 +161,6 @@ var ( }` DatabasePluggableDatabasesRemoteCloneResourceDependencies = ResourcePluggableDatabaseBaseCloneConfig + dbSystemForPluggableDbCloneRepresentation ->>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/integrationtest/database_vm_cluster_add_virtual_machine_test.go b/internal/integrationtest/database_vm_cluster_add_virtual_machine_test.go index 8ecae34adf5..ab5019c69aa 100644 --- a/internal/integrationtest/database_vm_cluster_add_virtual_machine_test.go +++ b/internal/integrationtest/database_vm_cluster_add_virtual_machine_test.go @@ -58,15 +58,8 @@ var ( "lifecycle": acctest.RepresentationGroup{RepType: acctest.Optional, Group: vmClusterNetworkIgnoreChangesHalfRackRepresentation}, } vmClusterNetworkIgnoreChangesHalfRackRepresentation = map[string]interface{}{ - "ignore_changes": acctest.Representation{RepType: acctest.Required, Create: []string{`validate_vm_cluster_network`}}, + "ignore_changes": acctest.Representation{RepType: acctest.Required, Create: []string{`validate_vm_cluster_network`, `vm_networks`}}, } - -<<<<<<< ours - DatabaseVmClusterAddVirtualMachineResourceDependencies = acctest.GenerateDataSourceFromRepresentationMap("oci_database_db_servers", "test_db_servers", acctest.Required, acctest.Create, dbServerDataSourceRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) -======= vmClusterNetworkScansHalfRackRepresentation = map[string]interface{}{ "hostname": acctest.Representation{RepType: acctest.Required, Create: `myprefix1-ivmmj-scan`, Update: `myprefix2-ivmmj-scan`}, "ips": acctest.Representation{RepType: acctest.Required, Create: []string{`192.168.19.7`, `192.168.19.6`, `192.168.19.8`}, Update: []string{`192.168.19.7`, `192.168.19.8`, `192.168.19.9`}}, @@ -93,40 +86,48 @@ var ( "ip": acctest.Representation{RepType: acctest.Required, Create: `192.168.19.10`, Update: `192.168.19.11`}, "vip": acctest.Representation{RepType: acctest.Optional, Create: `192.168.19.12`, Update: `192.168.19.13`}, "vip_hostname": acctest.Representation{RepType: acctest.Optional, Create: `myprefix2-xapb21-vip`, Update: `myprefix2-xapb22-vip`}, + "db_server_id": acctest.Representation{RepType: acctest.Required, Create: `${data.oci_database_db_servers.test_db_servers.db_servers.0.id}`}, } vmClusterNetworkVmNetworksClientNodes2HalfRackRepresentation = map[string]interface{}{ "hostname": acctest.Representation{RepType: acctest.Required, Create: `myprefix2-xapb25`, Update: `myprefix2-xapb26`}, "ip": acctest.Representation{RepType: acctest.Required, Create: `192.168.19.14`, Update: `192.168.19.15`}, "vip": acctest.Representation{RepType: acctest.Optional, Create: `192.168.19.16`, Update: `192.168.19.17`}, "vip_hostname": acctest.Representation{RepType: acctest.Optional, Create: `myprefix2-xapb25-vip`, Update: `myprefix2-xapb26-vip`}, + "db_server_id": acctest.Representation{RepType: acctest.Required, Create: `${data.oci_database_db_servers.test_db_servers.db_servers.1.id}`}, } vmClusterNetworkVmNetworksClientNodes3HalfRackRepresentation = map[string]interface{}{ "hostname": acctest.Representation{RepType: acctest.Required, Create: `myprefix2-xapb29`, Update: `myprefix2-xapb30`}, "ip": acctest.Representation{RepType: acctest.Required, Create: `192.168.19.18`, Update: `192.168.19.19`}, "vip": acctest.Representation{RepType: acctest.Optional, Create: `192.168.19.20`, Update: `192.168.19.21`}, "vip_hostname": acctest.Representation{RepType: acctest.Optional, Create: `myprefix2-xapb29-vip`, Update: `myprefix2-xapb30-vip`}, + "db_server_id": acctest.Representation{RepType: acctest.Required, Create: `${data.oci_database_db_servers.test_db_servers.db_servers.2.id}`}, } vmClusterNetworkVmNetworksClientNodes4HalfRackRepresentation = map[string]interface{}{ "hostname": acctest.Representation{RepType: acctest.Required, Create: `myprefix2-xapb33`, Update: `myprefix2-xapb34`}, "ip": acctest.Representation{RepType: acctest.Required, Create: `192.168.19.22`, Update: `192.168.19.23`}, "vip": acctest.Representation{RepType: acctest.Optional, Create: `192.168.19.24`, Update: `192.168.19.25`}, "vip_hostname": acctest.Representation{RepType: acctest.Optional, Create: `myprefix2-xapb33-vip`, Update: `myprefix2-xapb34-vip`}, + "db_server_id": acctest.Representation{RepType: acctest.Required, Create: `${data.oci_database_db_servers.test_db_servers.db_servers.3.id}`}, } vmClusterNetworkVmNetworksBackupNodes1HalfRackRepresentation = map[string]interface{}{ - "hostname": acctest.Representation{RepType: acctest.Required, Create: `myprefix2-xapb23`, Update: `myprefix2-xapb24`}, - "ip": acctest.Representation{RepType: acctest.Required, Create: `192.169.19.26`, Update: `192.169.19.27`}, + "hostname": acctest.Representation{RepType: acctest.Required, Create: `myprefix2-xapb23`, Update: `myprefix2-xapb24`}, + "ip": acctest.Representation{RepType: acctest.Required, Create: `192.169.19.26`, Update: `192.169.19.27`}, + "db_server_id": acctest.Representation{RepType: acctest.Required, Create: `${data.oci_database_db_servers.test_db_servers.db_servers.0.id}`}, } vmClusterNetworkVmNetworksBackupNodes2HalfRackRepresentation = map[string]interface{}{ - "hostname": acctest.Representation{RepType: acctest.Required, Create: `myprefix2-xapb27`, Update: `myprefix2-xapb28`}, - "ip": acctest.Representation{RepType: acctest.Required, Create: `192.169.19.28`, Update: `192.169.19.29`}, + "hostname": acctest.Representation{RepType: acctest.Required, Create: `myprefix2-xapb27`, Update: `myprefix2-xapb28`}, + "ip": acctest.Representation{RepType: acctest.Required, Create: `192.169.19.28`, Update: `192.169.19.29`}, + "db_server_id": acctest.Representation{RepType: acctest.Required, Create: `${data.oci_database_db_servers.test_db_servers.db_servers.1.id}`}, } vmClusterNetworkVmNetworksBackupNodes3HalfRackRepresentation = map[string]interface{}{ - "hostname": acctest.Representation{RepType: acctest.Required, Create: `myprefix2-xapb31`, Update: `myprefix2-xapb32`}, - "ip": acctest.Representation{RepType: acctest.Required, Create: `192.169.19.30`, Update: `192.169.19.31`}, + "hostname": acctest.Representation{RepType: acctest.Required, Create: `myprefix2-xapb31`, Update: `myprefix2-xapb32`}, + "ip": acctest.Representation{RepType: acctest.Required, Create: `192.169.19.30`, Update: `192.169.19.31`}, + "db_server_id": acctest.Representation{RepType: acctest.Required, Create: `${data.oci_database_db_servers.test_db_servers.db_servers.2.id}`}, } vmClusterNetworkVmNetworksBackupNodes4HalfRackRepresentation = map[string]interface{}{ - "hostname": acctest.Representation{RepType: acctest.Required, Create: `myprefix2-xapb35`, Update: `myprefix2-xapb36`}, - "ip": acctest.Representation{RepType: acctest.Required, Create: `192.169.19.32`, Update: `192.169.19.33`}, + "hostname": acctest.Representation{RepType: acctest.Required, Create: `myprefix2-xapb35`, Update: `myprefix2-xapb36`}, + "ip": acctest.Representation{RepType: acctest.Required, Create: `192.169.19.32`, Update: `192.169.19.33`}, + "db_server_id": acctest.Representation{RepType: acctest.Required, Create: `${data.oci_database_db_servers.test_db_servers.db_servers.3.id}`}, } vmClusterDbServerRepresentation = map[string]interface{}{ @@ -162,7 +163,6 @@ var ( })) + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Optional, acctest.Update, vmClusterNetworkValidateHalfRackRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterDbServerRepresentation) ->>>>>>> theirs ) // issue-routing-tag: database/ExaCC diff --git a/internal/integrationtest/database_vm_cluster_network_download_config_file_test.go b/internal/integrationtest/database_vm_cluster_network_download_config_file_test.go index 416aea21b86..355aaeeb7f3 100644 --- a/internal/integrationtest/database_vm_cluster_network_download_config_file_test.go +++ b/internal/integrationtest/database_vm_cluster_network_download_config_file_test.go @@ -21,12 +21,7 @@ var ( "base64_encode_content": acctest.Representation{RepType: acctest.Optional, Create: `true`}, } -<<<<<<< ours - DatabaseVmClusterNetworkDownloadConfigFileResourceConfig = acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) -======= DatabaseVmClusterNetworkDownloadConfigFileResourceConfig = VmClusterNetworkValidatedResourceConfig ->>>>>>> theirs ) // issue-routing-tag: database/ExaCC diff --git a/internal/integrationtest/database_vm_cluster_network_resource_test.go b/internal/integrationtest/database_vm_cluster_network_resource_test.go index 88f7f695b7d..fd618886b41 100644 --- a/internal/integrationtest/database_vm_cluster_network_resource_test.go +++ b/internal/integrationtest/database_vm_cluster_network_resource_test.go @@ -10,10 +10,11 @@ import ( "testing" "time" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" oci_database "github.com/oracle/oci-go-sdk/v65/database" @@ -41,7 +42,7 @@ var ( "lifecycle": acctest.RepresentationGroup{RepType: acctest.Optional, Group: vmClusterNetworkIgnoreChangesRepresentation}, } vmClusterNetworkIgnoreChangesRepresentation = map[string]interface{}{ - "ignore_changes": acctest.Representation{RepType: acctest.Required, Create: []string{`validate_vm_cluster_network`}}, + "ignore_changes": acctest.Representation{RepType: acctest.Required, Create: []string{`validate_vm_cluster_network`, `vm_networks`}}, } vmClusterNetworkValidateUpdateRepresentation = map[string]interface{}{ "compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`}, @@ -54,9 +55,11 @@ var ( "freeform_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"Department": "Finance"}, Update: map[string]string{"Department": "Accounting"}}, "ntp": acctest.Representation{RepType: acctest.Optional, Create: []string{`192.168.10.20`}, Update: []string{`192.168.10.22`}}, "validate_vm_cluster_network": acctest.Representation{RepType: acctest.Optional, Create: "true", Update: "true"}, + "lifecycle": acctest.RepresentationGroup{RepType: acctest.Optional, Group: vmClusterNetworkIgnoreNetworkRepresentation}, } VmClusterNetworkValidateResourceDependencies = DefinedTagsDependencies + + acctest.GenerateDataSourceFromRepresentationMap("oci_database_db_servers", "test_db_servers", acctest.Required, acctest.Create, DatabaseDatabaseDbServerDataSourceRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Optional, acctest.Update, acctest.RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{ "activation_file": acctest.Representation{RepType: acctest.Optional, Update: activationFilePath}, @@ -99,9 +102,6 @@ func TestResourceDatabaseVmClusterNetwork_basic(t *testing.T) { []string{}), resource.TestCheckResourceAttr(resourceName, "vm_networks.#", "2"), acctest.CheckResourceSetContainsElementWithProperties(resourceName, "vm_networks", map[string]string{ - "domain_name": "oracle.com", - "gateway": "192.169.20.2", - "netmask": "255.255.192.0", "network_type": "BACKUP", "nodes.#": "2", }, @@ -136,9 +136,6 @@ func TestResourceDatabaseVmClusterNetwork_basic(t *testing.T) { []string{}), resource.TestCheckResourceAttr(resourceName, "vm_networks.#", "2"), acctest.CheckResourceSetContainsElementWithProperties(resourceName, "vm_networks", map[string]string{ - "domain_name": "oracle.com", - "gateway": "192.169.20.1", - "netmask": "255.255.0.0", "network_type": "BACKUP", "nodes.#": "2", }, @@ -173,9 +170,6 @@ func TestResourceDatabaseVmClusterNetwork_basic(t *testing.T) { []string{}), resource.TestCheckResourceAttr(resourceName, "vm_networks.#", "2"), acctest.CheckResourceSetContainsElementWithProperties(resourceName, "vm_networks", map[string]string{ - "domain_name": "oracle.com", - "gateway": "192.169.20.2", - "netmask": "255.255.192.0", "network_type": "BACKUP", "nodes.#": "2", }, @@ -193,7 +187,7 @@ func TestResourceDatabaseVmClusterNetwork_basic(t *testing.T) { }, ), }, - // verify Update after validation + //verify Update after validation { Config: config + compartmentIdVariableStr + DatabaseVmClusterNetworkResourceDependencies + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Optional, acctest.Create, DatabaseVmClusterNetworkRepresentation), diff --git a/internal/integrationtest/database_vm_cluster_network_test.go b/internal/integrationtest/database_vm_cluster_network_test.go index a5991c23a08..d5d189450ba 100644 --- a/internal/integrationtest/database_vm_cluster_network_test.go +++ b/internal/integrationtest/database_vm_cluster_network_test.go @@ -58,6 +58,7 @@ var ( "dns": acctest.Representation{RepType: acctest.Optional, Create: []string{`192.168.10.10`}, Update: []string{`192.168.10.12`}}, "freeform_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"Department": "Finance"}, Update: map[string]string{"Department": "Accounting"}}, "ntp": acctest.Representation{RepType: acctest.Optional, Create: []string{`192.168.10.20`}, Update: []string{`192.168.10.22`}}, + "lifecycle": acctest.RepresentationGroup{RepType: acctest.Required, Group: vmClusterNetworkIgnoreNetworkRepresentation}, } vmClusterNetwork2Representation = map[string]interface{}{ @@ -70,6 +71,7 @@ var ( "dns": acctest.Representation{RepType: acctest.Optional, Create: []string{`192.168.10.10`}, Update: []string{`192.168.10.12`}}, "freeform_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"Department": "Finance"}, Update: map[string]string{"Department": "Accounting"}}, "ntp": acctest.Representation{RepType: acctest.Optional, Create: []string{`192.168.10.20`}, Update: []string{`192.168.10.22`}}, + "lifecycle": acctest.RepresentationGroup{RepType: acctest.Required, Group: vmClusterNetworkIgnoreNetworkRepresentation}, } DatabaseVmClusterNetworkScansRepresentation = map[string]interface{}{ @@ -79,31 +81,6 @@ var ( "scan_listener_port_tcp": acctest.Representation{RepType: acctest.Optional, Create: `1521`, Update: `1522`}, "scan_listener_port_tcp_ssl": acctest.Representation{RepType: acctest.Optional, Create: `2484`, Update: `2484`}, } -<<<<<<< ours - DatabaseVmClusterNetworkVmNetworksRepresentation = map[string]interface{}{ - "network_type": acctest.Representation{RepType: acctest.Required, Create: `CLIENT`, Update: `BACKUP`}, - "nodes": acctest.RepresentationGroup{RepType: acctest.Required, Group: vmClusterNetworkVmNetworksNodesRepresentation}, - "domain_name": acctest.Representation{RepType: acctest.Optional, Create: `${oci_identity_domain.test_domain.name}`}, - "gateway": acctest.Representation{RepType: acctest.Optional, Create: `192.169.20.1`, Update: `192.169.20.2`}, - "netmask": acctest.Representation{RepType: acctest.Optional, Create: `255.255.0.0`, Update: `255.255.192.0`}, - "vlan_id": acctest.Representation{RepType: acctest.Optional, Create: `100`}, - } - DatabaseVmClusterNetworkVmNetworksNodesRepresentation = map[string]interface{}{ - "hostname": acctest.Representation{RepType: acctest.Required, Create: `sea2410c4-scan`, Update: `hostname2`}, - "ip": acctest.Representation{RepType: acctest.Required, Create: `10.0.20.14`, Update: `10.0.20.16`}, - "db_server_id": acctest.Representation{RepType: acctest.Optional, Create: `${oci_database_db_server.test_db_server.id}`}, - "state": acctest.Representation{RepType: acctest.Optional, Create: `AVAILABLE`, Update: `REQUIRES_VALIDATION`}, - "vip": acctest.Representation{RepType: acctest.Optional, Create: `10.0.20.15`, Update: `10.0.20.17`}, - "vip_hostname": acctest.Representation{RepType: acctest.Optional, Create: `sea2410c4n7-vip`, Update: `vipHostname2`}, - } - - DatabaseVmClusterNetworkResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_core_vcn", "test_vcn", acctest.Required, acctest.Create, vcnRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_core_vlan", "test_vlan", acctest.Required, acctest.Create, vlanRepresentation) + - acctest.GenerateDataSourceFromRepresentationMap("oci_database_db_servers", "test_db_servers", acctest.Required, acctest.Create, dbServerDataSourceRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + - DefinedTagsDependencies + - acctest.GenerateResourceFromRepresentationMap("oci_identity_domain", "test_domain", acctest.Required, acctest.Create, domainRepresentation) -======= DatabaseVmClusterNetwork2ScansRepresentation = map[string]interface{}{ "hostname": acctest.Representation{RepType: acctest.Required, Create: `myprefix4-ivmmj-scan`, Update: `myprefix3-ivmmj-scan`}, @@ -154,6 +131,7 @@ var ( "ip": acctest.Representation{RepType: acctest.Required, Create: `192.168.19.10`, Update: `192.168.19.11`}, "vip": acctest.Representation{RepType: acctest.Required, Create: `192.168.19.12`, Update: `192.168.19.13`}, "vip_hostname": acctest.Representation{RepType: acctest.Required, Create: `myprefix2-xapb21-vip`, Update: `myprefix2-xapb22-vip`}, + "db_server_id": acctest.Representation{RepType: acctest.Required, Create: `${data.oci_database_db_servers.test_db_servers.db_servers.0.id}`}, } DatabaseVmClusterNetwork2VmNetworksClientNodes1Representation = map[string]interface{}{ @@ -161,6 +139,7 @@ var ( "ip": acctest.Representation{RepType: acctest.Required, Create: `192.168.19.18`, Update: `192.168.19.19`}, "vip": acctest.Representation{RepType: acctest.Required, Create: `192.168.19.20`, Update: `192.168.19.21`}, "vip_hostname": acctest.Representation{RepType: acctest.Required, Create: `myprefix2-xapb31-vip`, Update: `myprefix2-xapb32-vip`}, + "db_server_id": acctest.Representation{RepType: acctest.Required, Create: `${data.oci_database_db_servers.test_db_servers.db_servers.0.id}`}, } DatabaseVmClusterNetworkVmNetworksClientNodes2Representation = map[string]interface{}{ @@ -168,6 +147,7 @@ var ( "ip": acctest.Representation{RepType: acctest.Required, Create: `192.168.19.14`, Update: `192.168.19.15`}, "vip": acctest.Representation{RepType: acctest.Required, Create: `192.168.19.16`, Update: `192.168.19.17`}, "vip_hostname": acctest.Representation{RepType: acctest.Required, Create: `myprefix2-xapb25-vip`, Update: `myprefix2-xapb26-vip`}, + "db_server_id": acctest.Representation{RepType: acctest.Required, Create: `${data.oci_database_db_servers.test_db_servers.db_servers.1.id}`}, } DatabaseVmClusterNetwork2VmNetworksClientNodes2Representation = map[string]interface{}{ @@ -175,36 +155,44 @@ var ( "ip": acctest.Representation{RepType: acctest.Required, Create: `192.168.19.22`, Update: `192.168.19.23`}, "vip": acctest.Representation{RepType: acctest.Required, Create: `192.168.19.24`, Update: `192.168.19.25`}, "vip_hostname": acctest.Representation{RepType: acctest.Required, Create: `myprefix2-xapb35-vip`, Update: `myprefix2-xapb36-vip`}, + "db_server_id": acctest.Representation{RepType: acctest.Required, Create: `${data.oci_database_db_servers.test_db_servers.db_servers.1.id}`}, } DatabaseVmClusterNetworkVmNetworksBackupNodes1Representation = map[string]interface{}{ - "hostname": acctest.Representation{RepType: acctest.Required, Create: `myprefix2-xapb23`, Update: `myprefix2-xapb24`}, - "ip": acctest.Representation{RepType: acctest.Required, Create: `192.169.19.18`, Update: `192.169.19.19`}, + "hostname": acctest.Representation{RepType: acctest.Required, Create: `myprefix2-xapb23`, Update: `myprefix2-xapb24`}, + "ip": acctest.Representation{RepType: acctest.Required, Create: `192.169.19.18`, Update: `192.169.19.19`}, + "db_server_id": acctest.Representation{RepType: acctest.Required, Create: `${data.oci_database_db_servers.test_db_servers.db_servers.0.id}`}, } DatabaseVmClusterNetworkVmNetworksBackupNodes2Representation = map[string]interface{}{ - "hostname": acctest.Representation{RepType: acctest.Required, Create: `myprefix2-xapb27`, Update: `myprefix2-xapb28`}, - "ip": acctest.Representation{RepType: acctest.Required, Create: `192.169.19.20`, Update: `192.169.19.21`}, + "hostname": acctest.Representation{RepType: acctest.Required, Create: `myprefix2-xapb27`, Update: `myprefix2-xapb28`}, + "ip": acctest.Representation{RepType: acctest.Required, Create: `192.169.19.20`, Update: `192.169.19.21`}, + "db_server_id": acctest.Representation{RepType: acctest.Required, Create: `${data.oci_database_db_servers.test_db_servers.db_servers.1.id}`}, } DatabaseVmClusterNetwork2VmNetworksBackupNodes1Representation = map[string]interface{}{ - "hostname": acctest.Representation{RepType: acctest.Required, Create: `myprefix2-xapb33`, Update: `myprefix2-xapb34`}, - "ip": acctest.Representation{RepType: acctest.Required, Create: `192.169.19.22`, Update: `192.169.19.23`}, + "hostname": acctest.Representation{RepType: acctest.Required, Create: `myprefix2-xapb33`, Update: `myprefix2-xapb34`}, + "ip": acctest.Representation{RepType: acctest.Required, Create: `192.169.19.22`, Update: `192.169.19.23`}, + "db_server_id": acctest.Representation{RepType: acctest.Required, Create: `${data.oci_database_db_servers.test_db_servers.db_servers.0.id}`}, } DatabaseVmClusterNetwork2VmNetworksBackupNodes2Representation = map[string]interface{}{ - "hostname": acctest.Representation{RepType: acctest.Required, Create: `myprefix2-xapb37`, Update: `myprefix2-xapb38`}, - "ip": acctest.Representation{RepType: acctest.Required, Create: `192.169.19.24`, Update: `192.169.19.25`}, + "hostname": acctest.Representation{RepType: acctest.Required, Create: `myprefix2-xapb37`, Update: `myprefix2-xapb38`}, + "ip": acctest.Representation{RepType: acctest.Required, Create: `192.169.19.24`, Update: `192.169.19.25`}, + "db_server_id": acctest.Representation{RepType: acctest.Required, Create: `${data.oci_database_db_servers.test_db_servers.db_servers.1.id}`}, } - activationFilePath, _ = createTmpActivationFile() + vmClusterNetworkIgnoreNetworkRepresentation = map[string]interface{}{ + "ignore_changes": acctest.Representation{RepType: acctest.Required, Create: []string{`vm_networks`}}, + } + activationFilePath, _ = createTmpActivationFile() DatabaseVmClusterNetworkResourceDependencies = DefinedTagsDependencies + + acctest.GenerateDataSourceFromRepresentationMap("oci_database_db_servers", "test_db_servers", acctest.Required, acctest.Create, DatabaseDatabaseDbServerDataSourceRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Optional, acctest.Update, acctest.RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{ "activation_file": acctest.Representation{RepType: acctest.Optional, Update: activationFilePath}, "maintenance_window": acctest.RepresentationGroup{RepType: acctest.Optional, Group: exadataInfrastructureMaintenanceWindowRepresentationComplete}, })) ->>>>>>> theirs ) // issue-routing-tag: database/ExaCC @@ -231,38 +219,26 @@ func TestDatabaseVmClusterNetworkResource_basic(t *testing.T) { // verify Create { Config: config + compartmentIdVariableStr + DatabaseVmClusterNetworkResourceDependencies + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, DatabaseVmClusterNetworkRepresentation), + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetwork2Representation), Check: acctest.ComposeAggregateTestCheckFuncWrapper( resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId), resource.TestCheckResourceAttr(resourceName, "display_name", "testVmClusterNw"), resource.TestCheckResourceAttrSet(resourceName, "exadata_infrastructure_id"), resource.TestCheckResourceAttr(resourceName, "scans.#", "1"), acctest.CheckResourceSetContainsElementWithProperties(resourceName, "scans", map[string]string{ - "hostname": "myprefix1-ivmmj-scan", + "hostname": "myprefix4-ivmmj-scan", "ips.#": "3", "port": "1521", }, []string{}), -<<<<<<< ours - resource.TestCheckResourceAttr(resourceName, "vm_networks.#", "1"), - CheckResourceSetContainsElementWithProperties(resourceName, "vm_networks", map[string]string{ -======= resource.TestCheckResourceAttr(resourceName, "vm_networks.#", "2"), acctest.CheckResourceSetContainsElementWithProperties(resourceName, "vm_networks", map[string]string{ - "domain_name": "oracle.com", - "gateway": "192.168.20.1", - "netmask": "255.255.0.0", ->>>>>>> theirs "network_type": "CLIENT", "nodes.#": "2", }, -<<<<<<< ours - []string{}), -======= []string{ "vlan_id", }), ->>>>>>> theirs func(s *terraform.State) (err error) { resId, err = acctest.FromInstanceState(s, resourceName, "id") @@ -297,25 +273,8 @@ func TestDatabaseVmClusterNetworkResource_basic(t *testing.T) { []string{}), resource.TestCheckResourceAttr(resourceName, "vm_networks.#", "2"), acctest.CheckResourceSetContainsElementWithProperties(resourceName, "vm_networks", map[string]string{ - "domain_name": "oracle.com", - "gateway": "192.168.20.1", - "netmask": "255.255.0.0", "network_type": "CLIENT", -<<<<<<< ours - "nodes.#": "1", - CheckResourceSetContainsElementWithProperties(resourceName, "nodes", map[string]string{ - "hostname": "sea2410c4-scan", - "ip": "10.0.20.14", - "state": "AVAILABLE", - "vip": "10.0.20.15", - "vip_hostname": "sea2410c4n7-vip", - }, - []string{ - "db_server_id", - }), -======= "nodes.#": "2", ->>>>>>> theirs }, []string{ "vlan_id", @@ -357,25 +316,8 @@ func TestDatabaseVmClusterNetworkResource_basic(t *testing.T) { []string{}), resource.TestCheckResourceAttr(resourceName, "vm_networks.#", "2"), acctest.CheckResourceSetContainsElementWithProperties(resourceName, "vm_networks", map[string]string{ - "domain_name": "oracle.com", - "gateway": "192.169.20.2", - "netmask": "255.255.192.0", "network_type": "BACKUP", -<<<<<<< ours - "nodes.#": "1", - CheckResourceSetContainsElementWithProperties(resourceName, "nodes", map[string]string{ - "hostname": "hostname2", - "ip": "10.0.20.16", - "state": "REQUIRES_VALIDATION", - "vip": "10.0.20.17", - "vip_hostname": "vipHostname2", - }, - []string{ - "db_server_id", - }), -======= "nodes.#": "2", ->>>>>>> theirs }, []string{ "vlan_id", @@ -423,25 +365,8 @@ func TestDatabaseVmClusterNetworkResource_basic(t *testing.T) { resource.TestCheckResourceAttrSet(datasourceName, "vm_cluster_networks.0.time_created"), resource.TestCheckResourceAttr(datasourceName, "vm_cluster_networks.0.vm_networks.#", "2"), acctest.CheckResourceSetContainsElementWithProperties(datasourceName, "vm_cluster_networks.0.vm_networks", map[string]string{ - "domain_name": "oracle.com", - "gateway": "192.169.20.2", - "netmask": "255.255.192.0", "network_type": "BACKUP", -<<<<<<< ours - "nodes.#": "1", - CheckResourceSetContainsElementWithProperties(datasourceName, "nodes", map[string]string{ - "hostname": "hostname2", - "ip": "10.0.20.16", - "state": "REQUIRES_VALIDATION", - "vip": "10.0.20.17", - "vip_hostname": "vipHostname2", - }, - []string{ - "db_server_id", - }), -======= "nodes.#": "2", ->>>>>>> theirs }, []string{ "vlan_id", @@ -476,23 +401,8 @@ func TestDatabaseVmClusterNetworkResource_basic(t *testing.T) { resource.TestCheckResourceAttrSet(singularDatasourceName, "time_created"), resource.TestCheckResourceAttr(singularDatasourceName, "vm_networks.#", "2"), acctest.CheckResourceSetContainsElementWithProperties(singularDatasourceName, "vm_networks", map[string]string{ - "domain_name": "oracle.com", - "gateway": "192.169.20.2", - "netmask": "255.255.192.0", "network_type": "BACKUP", -<<<<<<< ours - "nodes.#": "1", - CheckResourceSetContainsElementWithProperties(singularDatasourceName, "nodes", map[string]string{ - "hostname": "hostname2", - "ip": "10.0.20.16", - "state": "REQUIRES_VALIDATION", - "vip": "10.0.20.17", - "vip_hostname": "vipHostname2", - }, - []string{}), -======= "nodes.#": "2", ->>>>>>> theirs }, []string{}), ), @@ -611,12 +521,7 @@ func getDatabaseVmClusterNetworkIds(compartment string) ([]string, error) { } for _, exadataInfrastructureId := range exadataInfrastructureIds { listVmClusterNetworksRequest.ExadataInfrastructureId = &exadataInfrastructureId - -<<<<<<< ours - listVmClusterNetworksRequest.LifecycleState = oci_database.VmClusterNetworkSummaryLifecycleStateRequiresValidationValidatedNeedsAttention -======= listVmClusterNetworksRequest.LifecycleState = oci_database.VmClusterNetworkSummaryLifecycleStateRequiresValidation ->>>>>>> theirs listVmClusterNetworksResponse, err := databaseClient.ListVmClusterNetworks(context.Background(), listVmClusterNetworksRequest) if err != nil { diff --git a/internal/integrationtest/database_vm_cluster_patch_history_entry_test.go b/internal/integrationtest/database_vm_cluster_patch_history_entry_test.go index 1b191fe2ca5..09fc170be5f 100644 --- a/internal/integrationtest/database_vm_cluster_patch_history_entry_test.go +++ b/internal/integrationtest/database_vm_cluster_patch_history_entry_test.go @@ -25,15 +25,9 @@ var ( "vm_cluster_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_database_vm_cluster.test_vm_cluster.id}`}, } -<<<<<<< ours - DatabaseVmClusterPatchHistoryEntryResourceConfig = acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) -======= DatabaseVmClusterPatchHistoryEntryResourceConfig = acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, DatabaseAutonomousExadataInfrastructureRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, DatabaseVmClusterNetworkRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, DatabaseCloudAutonomousVmClusterRepresentation) ->>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/integrationtest/database_vm_cluster_patch_test.go b/internal/integrationtest/database_vm_cluster_patch_test.go index 2cccde9c89d..26c7f18e7f4 100644 --- a/internal/integrationtest/database_vm_cluster_patch_test.go +++ b/internal/integrationtest/database_vm_cluster_patch_test.go @@ -25,14 +25,8 @@ var ( "vm_cluster_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_database_vm_cluster.test_vm_cluster.id}`}, } -<<<<<<< ours - DatabaseVmClusterPatchResourceConfig = acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) -======= DatabaseVmClusterPatchResourceConfig = VmClusterNetworkValidatedResourceConfig + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, DatabaseCloudAutonomousVmClusterRepresentation) ->>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/integrationtest/database_vm_cluster_recommended_network_test.go b/internal/integrationtest/database_vm_cluster_recommended_network_test.go index 2d3773bc7d0..17a57898128 100644 --- a/internal/integrationtest/database_vm_cluster_recommended_network_test.go +++ b/internal/integrationtest/database_vm_cluster_recommended_network_test.go @@ -19,12 +19,8 @@ var ( "compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`}, "display_name": acctest.Representation{RepType: acctest.Required, Create: `testVmClusterNw`}, "exadata_infrastructure_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_database_exadata_infrastructure.test_exadata_infrastructure.id}`}, -<<<<<<< ours - "networks": acctest.RepresentationGroup{RepType: acctest.Required, Group: vmClusterRecommendedNetworkNetworksRepresentation}, - "db_servers": acctest.Representation{RepType: acctest.Optional, Create: []string{`dbServers`}}, -======= "networks": []acctest.RepresentationGroup{{RepType: acctest.Required, Group: DatabaseVmClusterRecommendedNetworkNetworksSingularDataSourceRepresentation}, {RepType: acctest.Required, Group: DatabaseVmClusterRecommendedNetworkbackupNetworksRepresentation}}, ->>>>>>> theirs + "db_servers": acctest.Representation{RepType: acctest.Optional, Create: []string{`${data.oci_database_db_servers.test_db_servers.db_servers.0.id}`, `${data.oci_database_db_servers.test_db_servers.db_servers.1.id}`}}, "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")}`}, "dns": acctest.Representation{RepType: acctest.Optional, Create: []string{`192.168.10.10`}}, "freeform_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"Department": "Finance"}, Update: map[string]string{"Department": "Accounting"}}, @@ -54,7 +50,8 @@ var ( DatabaseVmClusterRecommendedNetworkDataSourceDependencies = ExadataInfrastructureResourceActivateDependencies + acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Optional, acctest.Update, acctest.RepresentationCopyWithNewProperties(exadataInfrastructureActivateRepresentation, map[string]interface{}{ "maintenance_window": acctest.RepresentationGroup{RepType: acctest.Optional, Group: exadataInfrastructureMaintenanceWindowRepresentationComplete}, - })) + })) + + acctest.GenerateDataSourceFromRepresentationMap("oci_database_db_servers", "test_db_servers", acctest.Required, acctest.Create, DatabaseDatabaseDbServerDataSourceRepresentation) ) // issue-routing-tag: database/ExaCC @@ -79,7 +76,7 @@ func TestDatabaseVmClusterRecommendedNetworkResource_basic(t *testing.T) { compartmentIdVariableStr, Check: acctest.ComposeAggregateTestCheckFuncWrapper( resource.TestCheckResourceAttr(singularDatasourceName, "compartment_id", compartmentId), - resource.TestCheckResourceAttr(singularDatasourceName, "db_servers.#", "1"), + resource.TestCheckResourceAttr(singularDatasourceName, "db_servers.#", "2"), resource.TestCheckResourceAttr(singularDatasourceName, "display_name", "testVmClusterNw"), resource.TestCheckResourceAttrSet(singularDatasourceName, "exadata_infrastructure_id"), resource.TestCheckResourceAttr(singularDatasourceName, "freeform_tags.%", "1"), diff --git a/internal/integrationtest/database_vm_cluster_remove_virtual_machine_test.go b/internal/integrationtest/database_vm_cluster_remove_virtual_machine_test.go index 5038d8e50c5..e1a1d94b3b6 100644 --- a/internal/integrationtest/database_vm_cluster_remove_virtual_machine_test.go +++ b/internal/integrationtest/database_vm_cluster_remove_virtual_machine_test.go @@ -24,12 +24,6 @@ var ( "db_server_id": acctest.Representation{RepType: acctest.Required, Create: `${data.oci_database_db_servers.test_db_servers.db_servers.2.id}`}, } -<<<<<<< ours - DatabaseVmClusterRemoveVirtualMachineResourceDependencies = acctest.GenerateDataSourceFromRepresentationMap("oci_database_db_servers", "test_db_servers", acctest.Required, acctest.Create, dbServerDataSourceRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) -======= vmClusterRemoveDbServerRepresentation = map[string]interface{}{ "compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`}, "cpu_core_count": acctest.Representation{RepType: acctest.Required, Create: `6`, Update: `6`}, @@ -59,7 +53,6 @@ var ( })) + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Optional, acctest.Update, vmClusterNetworkValidateHalfRackRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRemoveDbServerRepresentation) ->>>>>>> theirs ) // issue-routing-tag: database/ExaCC diff --git a/internal/integrationtest/database_vm_cluster_test.go b/internal/integrationtest/database_vm_cluster_test.go index f0b91e54e5d..599e5a24a1f 100644 --- a/internal/integrationtest/database_vm_cluster_test.go +++ b/internal/integrationtest/database_vm_cluster_test.go @@ -72,14 +72,7 @@ var ( "is_health_monitoring_enabled": acctest.Representation{RepType: acctest.Optional, Create: `false`, Update: `true`}, "is_incident_logs_enabled": acctest.Representation{RepType: acctest.Optional, Create: `false`, Update: `true`}, } - -<<<<<<< ours - DatabaseVmClusterResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + - DefinedTagsDependencies -======= DatabaseVmClusterResourceDependencies = VmClusterNetworkValidatedResourceConfig ->>>>>>> theirs ) // issue-routing-tag: database/ExaCC @@ -108,7 +101,6 @@ func TestDatabaseVmClusterResource_basic(t *testing.T) { // verify Create { Config: config + compartmentIdVariableStr + DatabaseVmClusterResourceDependencies + - acctest.GenerateDataSourceFromRepresentationMap("oci_database_db_servers", "test_db_servers", acctest.Required, acctest.Create, DatabaseDatabaseDbServerDataSourceRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, DatabaseVmClusterRepresentation), Check: acctest.ComposeAggregateTestCheckFuncWrapper( resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId), @@ -132,7 +124,6 @@ func TestDatabaseVmClusterResource_basic(t *testing.T) { //verify Create with optionals { Config: config + compartmentIdVariableStr + DatabaseVmClusterResourceDependencies + - acctest.GenerateDataSourceFromRepresentationMap("oci_database_db_servers", "test_db_servers", acctest.Required, acctest.Create, DatabaseDatabaseDbServerDataSourceRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Optional, acctest.Create, DatabaseVmClusterRepresentation), Check: acctest.ComposeAggregateTestCheckFuncWrapper( resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId), @@ -170,7 +161,6 @@ func TestDatabaseVmClusterResource_basic(t *testing.T) { // verify Update to the compartment (the compartment will be switched back in the next step) { Config: config + compartmentIdVariableStr + compartmentIdUVariableStr + DatabaseVmClusterResourceDependencies + - acctest.GenerateDataSourceFromRepresentationMap("oci_database_db_servers", "test_db_servers", acctest.Required, acctest.Create, DatabaseDatabaseDbServerDataSourceRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Optional, acctest.Create, acctest.RepresentationCopyWithNewProperties(DatabaseVmClusterRepresentation, map[string]interface{}{ "compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id_for_update}`}, @@ -209,7 +199,6 @@ func TestDatabaseVmClusterResource_basic(t *testing.T) { // verify updates to updatable parameters { Config: config + compartmentIdVariableStr + DatabaseVmClusterResourceDependencies + - acctest.GenerateDataSourceFromRepresentationMap("oci_database_db_servers", "test_db_servers", acctest.Required, acctest.Create, DatabaseDatabaseDbServerDataSourceRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Optional, acctest.Update, DatabaseVmClusterRepresentation), Check: acctest.ComposeAggregateTestCheckFuncWrapper( resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId), @@ -246,7 +235,6 @@ func TestDatabaseVmClusterResource_basic(t *testing.T) { Config: config + acctest.GenerateDataSourceFromRepresentationMap("oci_database_vm_clusters", "test_vm_clusters", acctest.Optional, acctest.Update, DatabaseDatabaseVmClusterDataSourceRepresentation) + compartmentIdVariableStr + DatabaseVmClusterResourceDependencies + - acctest.GenerateDataSourceFromRepresentationMap("oci_database_db_servers", "test_db_servers", acctest.Required, acctest.Create, DatabaseDatabaseDbServerDataSourceRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Optional, acctest.Update, DatabaseVmClusterRepresentation), Check: acctest.ComposeAggregateTestCheckFuncWrapper( resource.TestCheckResourceAttr(datasourceName, "compartment_id", compartmentId), @@ -285,7 +273,6 @@ func TestDatabaseVmClusterResource_basic(t *testing.T) { Config: config + acctest.GenerateDataSourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, DatabaseDatabaseVmClusterSingularDataSourceRepresentation) + compartmentIdVariableStr + DatabaseVmClusterResourceDependencies + - acctest.GenerateDataSourceFromRepresentationMap("oci_database_db_servers", "test_db_servers", acctest.Required, acctest.Create, DatabaseDatabaseDbServerDataSourceRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Optional, acctest.Update, DatabaseVmClusterRepresentation), Check: acctest.ComposeAggregateTestCheckFuncWrapper( resource.TestCheckResourceAttrSet(singularDatasourceName, "vm_cluster_id"), diff --git a/internal/integrationtest/database_vm_cluster_update_history_entry_test.go b/internal/integrationtest/database_vm_cluster_update_history_entry_test.go index 3aff66dcbaa..ed5a2766132 100644 --- a/internal/integrationtest/database_vm_cluster_update_history_entry_test.go +++ b/internal/integrationtest/database_vm_cluster_update_history_entry_test.go @@ -28,14 +28,8 @@ var ( "update_type": acctest.Representation{RepType: acctest.Optional, Create: `GI_UPGRADE`}, } -<<<<<<< ours - DatabaseVmClusterUpdateHistoryEntryResourceConfig = acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) -======= DatabaseVmClusterUpdateHistoryEntryResourceConfig = VmClusterNetworkValidatedResourceConfig + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, DatabaseCloudAutonomousVmClusterRepresentation) ->>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/integrationtest/database_vm_cluster_update_test.go b/internal/integrationtest/database_vm_cluster_update_test.go index b73f0a97ebb..acfc7f46d2d 100644 --- a/internal/integrationtest/database_vm_cluster_update_test.go +++ b/internal/integrationtest/database_vm_cluster_update_test.go @@ -28,14 +28,8 @@ var ( "update_type": acctest.Representation{RepType: acctest.Optional, Create: `GI_UPGRADE`}, } -<<<<<<< ours - DatabaseVmClusterUpdateResourceConfig = acctest.GenerateResourceFromRepresentationMap("oci_database_exadata_infrastructure", "test_exadata_infrastructure", acctest.Required, acctest.Create, exadataInfrastructureRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster_network", "test_vm_cluster_network", acctest.Required, acctest.Create, vmClusterNetworkRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, vmClusterRepresentation) -======= DatabaseVmClusterUpdateResourceConfig = VmClusterNetworkValidatedResourceConfig + acctest.GenerateResourceFromRepresentationMap("oci_database_vm_cluster", "test_vm_cluster", acctest.Required, acctest.Create, DatabaseCloudAutonomousVmClusterRepresentation) ->>>>>>> theirs ) // issue-routing-tag: database/default diff --git a/internal/service/database/database_exadata_infrastructure_compute_managed_resource.go b/internal/service/database/database_exadata_infrastructure_compute_managed_resource.go new file mode 100644 index 00000000000..d9b4c5d5dc3 --- /dev/null +++ b/internal/service/database/database_exadata_infrastructure_compute_managed_resource.go @@ -0,0 +1,794 @@ +// Copyright (c) 2017, 2021, Oracle and/or its affiliates. All rights reserved. +// Licensed under the Mozilla Public License v2.0 + +package database + +import ( + "context" + "encoding/base64" + "fmt" + "io/ioutil" + + "github.com/oracle/terraform-provider-oci/internal/client" + "github.com/oracle/terraform-provider-oci/internal/tfresource" + + oci_work_requests "github.com/oracle/oci-go-sdk/v65/workrequests" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + oci_database "github.com/oracle/oci-go-sdk/v65/database" +) + +func DatabaseExadataInfrastructureComputeManagedResource() *schema.Resource { + return &schema.Resource{ + Importer: &schema.ResourceImporter{ + State: schema.ImportStatePassthrough, + }, + Timeouts: tfresource.DefaultTimeout, + Create: updateDatabaseExadataInfrastructureComputeManagedResource, + Read: readDatabaseExadataInfrastructureComputeManagedResource, + Update: updateDatabaseExadataInfrastructureComputeManagedResource, + Delete: deleteDatabaseExadataInfrastructureComputeManagedResource, + Schema: map[string]*schema.Schema{ + //Required + "exadata_infrastructure_id": { + Type: schema.TypeString, + Required: true, + ForceNew: true, + }, + //Optional + "additional_compute_count_compute_managed_resource": { + Type: schema.TypeInt, + Optional: true, + }, + "additional_compute_system_model_compute_managed_resource": { + Type: schema.TypeString, + Optional: true, + }, + "activation_file": { + Type: schema.TypeString, + Optional: true, + }, + //Computed + "additional_compute_count": { + Type: schema.TypeInt, + Computed: true, + }, + "additional_compute_system_model": { + Type: schema.TypeString, + Computed: true, + }, + "admin_network_cidr": { + Type: schema.TypeString, + Computed: true, + }, + "cloud_control_plane_server1": { + Type: schema.TypeString, + Computed: true, + }, + "cloud_control_plane_server2": { + Type: schema.TypeString, + Computed: true, + }, + "compartment_id": { + Type: schema.TypeString, + Computed: true, + }, + "display_name": { + Type: schema.TypeString, + Computed: true, + }, + "dns_server": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + }, + "gateway": { + Type: schema.TypeString, + Computed: true, + }, + "infini_band_network_cidr": { + Type: schema.TypeString, + Computed: true, + }, + "netmask": { + Type: schema.TypeString, + Computed: true, + }, + "ntp_server": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + }, + "shape": { + Type: schema.TypeString, + Computed: true, + }, + "time_zone": { + Type: schema.TypeString, + Computed: true, + }, + "create_async": { + Type: schema.TypeBool, + Computed: true, + }, + "compute_count": { + Type: schema.TypeInt, + Computed: true, + }, + "contacts": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + // Computed + "email": { + Type: schema.TypeString, + Computed: true, + }, + "is_primary": { + Type: schema.TypeBool, + Computed: true, + }, + "name": { + Type: schema.TypeString, + Computed: true, + }, + "is_contact_mos_validated": { + Type: schema.TypeBool, + Computed: true, + }, + "phone_number": { + Type: schema.TypeString, + Computed: true, + }, + }, + }, + }, + "corporate_proxy": { + Type: schema.TypeString, + Computed: true, + }, + "defined_tags": { + Type: schema.TypeMap, + Computed: true, + Elem: schema.TypeString, + }, + "freeform_tags": { + Type: schema.TypeMap, + Computed: true, + Elem: schema.TypeString, + }, + "is_cps_offline_report_enabled": { + Type: schema.TypeBool, + Computed: true, + }, + "maintenance_window": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "preference": { + Type: schema.TypeString, + Computed: true, + }, + + "custom_action_timeout_in_mins": { + Type: schema.TypeInt, + Computed: true, + }, + "days_of_week": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "name": { + Type: schema.TypeString, + Computed: true, + }, + }, + }, + }, + "hours_of_day": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Schema{ + Type: schema.TypeInt, + }, + }, + "is_custom_action_timeout_enabled": { + Type: schema.TypeBool, + Computed: true, + }, + "is_monthly_patching_enabled": { + Type: schema.TypeBool, + Optional: true, + Computed: true, + }, + "lead_time_in_weeks": { + Type: schema.TypeInt, + Computed: true, + }, + "months": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "name": { + Type: schema.TypeString, + Computed: true, + }, + }, + }, + }, + "patching_mode": { + Type: schema.TypeString, + Computed: true, + }, + "weeks_of_month": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Schema{ + Type: schema.TypeInt, + }, + }, + }, + }, + }, + "storage_count": { + Type: schema.TypeInt, + Computed: true, + }, + + "activated_storage_count": { + Type: schema.TypeInt, + Computed: true, + }, + + "additional_storage_count": { + Type: schema.TypeInt, + Computed: true, + }, + "cpus_enabled": { + Type: schema.TypeInt, + Computed: true, + }, + "csi_number": { + Type: schema.TypeString, + Computed: true, + }, + "data_storage_size_in_tbs": { + Type: schema.TypeFloat, + Computed: true, + }, + "db_node_storage_size_in_gbs": { + Type: schema.TypeInt, + Computed: true, + }, + "db_server_version": { + Type: schema.TypeString, + Computed: true, + }, + "lifecycle_details": { + Type: schema.TypeString, + Computed: true, + }, + "maintenance_slo_status": { + Type: schema.TypeString, + Computed: true, + }, + "max_cpu_count": { + Type: schema.TypeInt, + Computed: true, + }, + "max_data_storage_in_tbs": { + Type: schema.TypeFloat, + Computed: true, + }, + "max_db_node_storage_in_gbs": { + Type: schema.TypeInt, + Computed: true, + }, + "max_memory_in_gbs": { + Type: schema.TypeInt, + Computed: true, + }, + "memory_size_in_gbs": { + Type: schema.TypeInt, + Computed: true, + }, + "monthly_db_server_version": { + Type: schema.TypeString, + Computed: true, + }, + "state": { + Type: schema.TypeString, + Computed: true, + }, + "storage_server_version": { + Type: schema.TypeString, + Computed: true, + }, + "time_created": { + Type: schema.TypeString, + Computed: true, + }, + }, + } +} + +func updateDatabaseExadataInfrastructureComputeManagedResource(d *schema.ResourceData, m interface{}) error { + sync := &DatabaseExadataInfrastructureComputeManagedResourceCrud{} + sync.D = d + sync.Client = m.(*client.OracleClients).DatabaseClient() + sync.WorkRequestClient = m.(*client.OracleClients).WorkRequestClient + + return tfresource.UpdateResource(d, sync) +} + +func readDatabaseExadataInfrastructureComputeManagedResource(d *schema.ResourceData, m interface{}) error { + sync := &DatabaseExadataInfrastructureComputeManagedResourceCrud{} + sync.D = d + sync.Client = m.(*client.OracleClients).DatabaseClient() + sync.WorkRequestClient = m.(*client.OracleClients).WorkRequestClient + + return tfresource.ReadResource(sync) +} + +func deleteDatabaseExadataInfrastructureComputeManagedResource(d *schema.ResourceData, m interface{}) error { + return nil +} + +func (s *DatabaseExadataInfrastructureComputeManagedResourceCrud) UpdatedPending() []string { + return []string{ + string(oci_database.ExadataInfrastructureLifecycleStateActivating), + string(oci_database.ExadataInfrastructureLifecycleStateUpdating), + string(oci_database.ExadataInfrastructureLifecycleStateMaintenanceInProgress), + } +} + +func (s *DatabaseExadataInfrastructureComputeManagedResourceCrud) UpdatedTarget() []string { + return []string{ + string(oci_database.ExadataInfrastructureLifecycleStateRequiresActivation), + string(oci_database.ExadataInfrastructureLifecycleStateActive), + string(oci_database.ExadataInfrastructureLifecycleStateActivationFailed), + string(oci_database.ExadataInfrastructureLifecycleStateDisconnected), + } +} + +func (s *DatabaseExadataInfrastructureComputeManagedResourceCrud) DeletedPending() []string { + return []string{ + string(oci_database.ExadataInfrastructureLifecycleStateDeleting), + "TERMINATING", + } +} + +func (s *DatabaseExadataInfrastructureComputeManagedResourceCrud) DeletedTarget() []string { + return []string{ + string(oci_database.ExadataInfrastructureLifecycleStateDeleted), + "TERMINATED", + } +} + +type DatabaseExadataInfrastructureComputeManagedResourceCrud struct { + tfresource.BaseCrud + Client *oci_database.DatabaseClient + WorkRequestClient *oci_work_requests.WorkRequestClient + Res *oci_database.ExadataInfrastructure + DisableNotFoundRetries bool +} + +func (s *DatabaseExadataInfrastructureComputeManagedResourceCrud) ID() string { + return *s.Res.Id +} + +func (s *DatabaseExadataInfrastructureComputeManagedResourceCrud) Update() error { + request := oci_database.UpdateExadataInfrastructureRequest{} + + if additionalComputeCount, ok := s.D.GetOkExists("additional_compute_count_compute_managed_resource"); ok { + tmp := additionalComputeCount.(int) + request.AdditionalComputeCount = &tmp + } + + if additionalComputeSystemModel, ok := s.D.GetOkExists("additional_compute_system_model_compute_managed_resource"); ok { + request.AdditionalComputeSystemModel = oci_database.UpdateExadataInfrastructureDetailsAdditionalComputeSystemModelEnum(additionalComputeSystemModel.(string)) + } + + if definedTags, ok := s.D.GetOkExists("defined_tags"); ok { + convertedDefinedTags, err := tfresource.MapToDefinedTags(definedTags.(map[string]interface{})) + if err != nil { + return err + } + request.DefinedTags = convertedDefinedTags + } + + if exadataInfrastructureId, ok := s.D.GetOkExists("exadata_infrastructure_id"); ok { + tmp := exadataInfrastructureId.(string) + s.D.Set("exadata_infrastructure_id", &tmp) + request.ExadataInfrastructureId = &tmp + } + + if freeformTags, ok := s.D.GetOkExists("freeform_tags"); ok { + request.FreeformTags = tfresource.ObjectMapToStringMap(freeformTags.(map[string]interface{})) + } + + request.RequestMetadata.RetryPolicy = tfresource.GetRetryPolicy(s.DisableNotFoundRetries, "database") + + if s.D.Get("state").(string) == string(oci_database.ExadataInfrastructureLifecycleStateRequiresActivation) || + s.D.Get("additional_compute_count").(int) > 0 { + if activationFile, ok := s.D.GetOkExists("activation_file"); ok && + s.D.Get("activation_file").(string) != "" { + response, err := s.activateExadataInfrastructureComputeManagedResource(activationFile.(string), s.D.Id()) + if err != nil { + s.D.Set("activation_file", "") + return err + } + s.Res = &response.ExadataInfrastructure + return nil + } + } + + response, err := s.Client.UpdateExadataInfrastructure(context.Background(), request) + if err != nil { + return err + } + + s.Res = &response.ExadataInfrastructure + + s.D.SetId(*s.Res.Id) + + workId := response.OpcWorkRequestId + if workId != nil { + _, err = tfresource.WaitForWorkRequestWithErrorHandling(s.WorkRequestClient, workId, "exadataInfrastructure", oci_work_requests.WorkRequestResourceActionTypeUpdated, s.D.Timeout(schema.TimeoutUpdate), s.DisableNotFoundRetries) + if err != nil { + return err + } + } + + return nil +} + +func (s *DatabaseExadataInfrastructureComputeManagedResourceCrud) SetData() error { + + s.D.SetId(*s.Res.Id) + + if s.Res.AdditionalComputeCount != nil { + s.D.Set("additional_compute_count", *s.Res.AdditionalComputeCount) + } + + s.D.Set("additional_compute_system_model", s.Res.AdditionalComputeSystemModel) + + if s.Res.ActivatedStorageCount != nil { + s.D.Set("activated_storage_count", *s.Res.ActivatedStorageCount) + } + + if s.Res.AdditionalStorageCount != nil { + s.D.Set("additional_storage_count", *s.Res.AdditionalStorageCount) + } + + if s.Res.AdminNetworkCIDR != nil { + s.D.Set("admin_network_cidr", *s.Res.AdminNetworkCIDR) + } + + if s.Res.CloudControlPlaneServer1 != nil { + s.D.Set("cloud_control_plane_server1", *s.Res.CloudControlPlaneServer1) + } + + if s.Res.CloudControlPlaneServer2 != nil { + s.D.Set("cloud_control_plane_server2", *s.Res.CloudControlPlaneServer2) + } + + if s.Res.CompartmentId != nil { + s.D.Set("compartment_id", *s.Res.CompartmentId) + } + + if s.Res.ComputeCount != nil { + s.D.Set("compute_count", *s.Res.ComputeCount) + } + + contacts := []interface{}{} + for _, item := range s.Res.Contacts { + contacts = append(contacts, ExadataInfrastructureContactToMap(item)) + } + s.D.Set("contacts", contacts) + + if s.Res.CorporateProxy != nil { + s.D.Set("corporate_proxy", *s.Res.CorporateProxy) + } + + if s.Res.CpusEnabled != nil { + s.D.Set("cpus_enabled", *s.Res.CpusEnabled) + } + + if s.Res.CsiNumber != nil { + s.D.Set("csi_number", *s.Res.CsiNumber) + } + + if s.Res.DataStorageSizeInTBs != nil { + s.D.Set("data_storage_size_in_tbs", *s.Res.DataStorageSizeInTBs) + } + + if s.Res.DbNodeStorageSizeInGBs != nil { + s.D.Set("db_node_storage_size_in_gbs", *s.Res.DbNodeStorageSizeInGBs) + } + + if s.Res.DefinedTags != nil { + s.D.Set("defined_tags", tfresource.DefinedTagsToMap(s.Res.DefinedTags)) + } + + if s.Res.DisplayName != nil { + s.D.Set("display_name", *s.Res.DisplayName) + } + + s.D.Set("dns_server", s.Res.DnsServer) + + s.D.Set("freeform_tags", s.Res.FreeformTags) + + if s.Res.Gateway != nil { + s.D.Set("gateway", *s.Res.Gateway) + } + + if s.Res.InfiniBandNetworkCIDR != nil { + s.D.Set("infini_band_network_cidr", *s.Res.InfiniBandNetworkCIDR) + } + + if s.Res.LifecycleDetails != nil { + s.D.Set("lifecycle_details", *s.Res.LifecycleDetails) + } + + s.D.Set("maintenance_slo_status", s.Res.MaintenanceSLOStatus) + + if s.Res.MaintenanceWindow != nil { + s.D.Set("maintenance_window", []interface{}{ExadataInfrastructureMaintenanceWindowToMap(s.Res.MaintenanceWindow)}) + } else { + s.D.Set("maintenance_window", nil) + } + + if s.Res.MaxCpuCount != nil { + s.D.Set("max_cpu_count", *s.Res.MaxCpuCount) + } + + if s.Res.MaxDataStorageInTBs != nil { + s.D.Set("max_data_storage_in_tbs", *s.Res.MaxDataStorageInTBs) + } + + if s.Res.MaxDbNodeStorageInGBs != nil { + s.D.Set("max_db_node_storage_in_gbs", *s.Res.MaxDbNodeStorageInGBs) + } + + if s.Res.MaxMemoryInGBs != nil { + s.D.Set("max_memory_in_gbs", *s.Res.MaxMemoryInGBs) + } + + if s.Res.MemorySizeInGBs != nil { + s.D.Set("memory_size_in_gbs", *s.Res.MemorySizeInGBs) + } + + if s.Res.Netmask != nil { + s.D.Set("netmask", *s.Res.Netmask) + } + + s.D.Set("ntp_server", s.Res.NtpServer) + + if s.Res.Shape != nil { + s.D.Set("shape", *s.Res.Shape) + } + + s.D.Set("state", s.Res.LifecycleState) + + if s.Res.StorageCount != nil { + s.D.Set("storage_count", *s.Res.StorageCount) + } + + if s.Res.TimeCreated != nil { + s.D.Set("time_created", s.Res.TimeCreated.String()) + } + + if s.Res.TimeZone != nil { + s.D.Set("time_zone", *s.Res.TimeZone) + } + + return nil +} + +func (s *DatabaseExadataInfrastructureComputeManagedResourceCrud) Get() error { + request := oci_database.GetExadataInfrastructureRequest{} + + tmp := s.D.Id() + request.ExadataInfrastructureId = &tmp + + request.RequestMetadata.RetryPolicy = tfresource.GetRetryPolicy(s.DisableNotFoundRetries, "database") + + response, err := s.Client.GetExadataInfrastructure(context.Background(), request) + if err != nil { + return err + } + + s.Res = &response.ExadataInfrastructure + return nil +} + +func (s *DatabaseExadataInfrastructureComputeManagedResourceCrud) activateExadataInfrastructureComputeManagedResource(activationFile string, exadataInfrastructureId string) (*oci_database.ActivateExadataInfrastructureResponse, error) { + request := oci_database.ActivateExadataInfrastructureRequest{} + + activationKeyFile, err := ioutil.ReadFile(activationFile) + if err != nil { + return nil, fmt.Errorf("unable to open activation key file: %s", err) + } + + actionKeyFileBase64Encoded := []byte(base64.StdEncoding.EncodeToString(activationKeyFile)) + request.ActivationFile = actionKeyFileBase64Encoded + + request.ExadataInfrastructureId = &exadataInfrastructureId + + request.RequestMetadata.RetryPolicy = tfresource.GetRetryPolicy(s.DisableNotFoundRetries, "database") + + response, err := s.Client.ActivateExadataInfrastructure(context.Background(), request) + if err != nil { + return nil, err + } + + workId := response.OpcWorkRequestId + if workId != nil { + _, err = tfresource.WaitForWorkRequestWithErrorHandling(s.WorkRequestClient, workId, "exadataInfrastructure", oci_work_requests.WorkRequestResourceActionTypeUpdated, s.D.Timeout(schema.TimeoutUpdate), s.DisableNotFoundRetries) + if err != nil { + return nil, err + } + } + + return &response, nil +} + +func (s *DatabaseExadataInfrastructureComputeManagedResourceCrud) mapToExadataInfrastructureContact(fieldKeyFormat string) (oci_database.ExadataInfrastructureContact, error) { + result := oci_database.ExadataInfrastructureContact{} + + if email, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "email")); ok { + tmp := email.(string) + result.Email = &tmp + } + + if isContactMosValidated, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "is_contact_mos_validated")); ok { + tmp := isContactMosValidated.(bool) + result.IsContactMosValidated = &tmp + } + + if isPrimary, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "is_primary")); ok { + tmp := isPrimary.(bool) + result.IsPrimary = &tmp + } + + if name, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "name")); ok { + tmp := name.(string) + result.Name = &tmp + } + + if phoneNumber, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "phone_number")); ok { + tmp := phoneNumber.(string) + result.PhoneNumber = &tmp + } + + return result, nil +} + +func (s *DatabaseExadataInfrastructureComputeManagedResourceCrud) mapToMaintenanceWindow(fieldKeyFormat string) (oci_database.MaintenanceWindow, error) { + result := oci_database.MaintenanceWindow{} + + if customActionTimeoutInMins, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "custom_action_timeout_in_mins")); ok { + tmp := customActionTimeoutInMins.(int) + result.CustomActionTimeoutInMins = &tmp + } + if preference, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "preference")); ok { + result.Preference = oci_database.MaintenanceWindowPreferenceEnum(preference.(string)) + if result.Preference == oci_database.MaintenanceWindowPreferenceNoPreference { + return result, nil + } + } + + if daysOfWeek, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "days_of_week")); ok { + interfaces := daysOfWeek.([]interface{}) + tmp := make([]oci_database.DayOfWeek, len(interfaces)) + for i := range interfaces { + stateDataIndex := i + fieldKeyFormatNextLevel := fmt.Sprintf("%s.%d.%%s", fmt.Sprintf(fieldKeyFormat, "days_of_week"), stateDataIndex) + converted, err := s.mapToDayOfWeek(fieldKeyFormatNextLevel) + if err != nil { + return result, err + } + tmp[i] = converted + } + if len(tmp) != 0 || s.D.HasChange(fmt.Sprintf(fieldKeyFormat, "days_of_week")) { + result.DaysOfWeek = tmp + } + } + + if hoursOfDay, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "hours_of_day")); ok { + interfaces := hoursOfDay.([]interface{}) + tmp := make([]int, len(interfaces)) + for i := range interfaces { + if interfaces[i] != nil { + tmp[i] = interfaces[i].(int) + } + } + if len(tmp) != 0 || s.D.HasChange(fmt.Sprintf(fieldKeyFormat, "hours_of_day")) { + result.HoursOfDay = tmp + } + } + + if isCustomActionTimeoutEnabled, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "is_custom_action_timeout_enabled")); ok { + tmp := isCustomActionTimeoutEnabled.(bool) + result.IsCustomActionTimeoutEnabled = &tmp + } + + if isMonthlyPatchingEnabled, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "is_monthly_patching_enabled")); ok { + tmp := isMonthlyPatchingEnabled.(bool) + result.IsMonthlyPatchingEnabled = &tmp + } + + if leadTimeInWeeks, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "lead_time_in_weeks")); ok { + tmp := leadTimeInWeeks.(int) + result.LeadTimeInWeeks = &tmp + } + + if months, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "months")); ok { + interfaces := months.([]interface{}) + tmp := make([]oci_database.Month, len(interfaces)) + for i := range interfaces { + stateDataIndex := i + fieldKeyFormatNextLevel := fmt.Sprintf("%s.%d.%%s", fmt.Sprintf(fieldKeyFormat, "months"), stateDataIndex) + converted, err := s.mapToMonth(fieldKeyFormatNextLevel) + if err != nil { + return result, err + } + tmp[i] = converted + } + if len(tmp) != 0 || s.D.HasChange(fmt.Sprintf(fieldKeyFormat, "months")) { + result.Months = tmp + } + } + + if patchingMode, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "patching_mode")); ok { + result.PatchingMode = oci_database.MaintenanceWindowPatchingModeEnum(patchingMode.(string)) + } + + if preference, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "preference")); ok { + result.Preference = oci_database.MaintenanceWindowPreferenceEnum(preference.(string)) + } + + if weeksOfMonth, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "weeks_of_month")); ok { + interfaces := weeksOfMonth.([]interface{}) + tmp := make([]int, len(interfaces)) + for i := range interfaces { + if interfaces[i] != nil { + tmp[i] = interfaces[i].(int) + } + } + if len(tmp) != 0 || s.D.HasChange(fmt.Sprintf(fieldKeyFormat, "weeks_of_month")) { + result.WeeksOfMonth = tmp + } + } + + return result, nil +} + +func (s *DatabaseExadataInfrastructureComputeManagedResourceCrud) mapToDayOfWeek(fieldKeyFormat string) (oci_database.DayOfWeek, error) { + result := oci_database.DayOfWeek{} + + if name, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "name")); ok { + result.Name = oci_database.DayOfWeekNameEnum(name.(string)) + } + + return result, nil +} + +func (s *DatabaseExadataInfrastructureComputeManagedResourceCrud) mapToMonth(fieldKeyFormat string) (oci_database.Month, error) { + result := oci_database.Month{} + + if name, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "name")); ok { + result.Name = oci_database.MonthNameEnum(name.(string)) + } + + return result, nil +} diff --git a/internal/service/database/database_exadata_infrastructure_resource.go b/internal/service/database/database_exadata_infrastructure_resource.go index 3648b445578..ef9d6295e34 100644 --- a/internal/service/database/database_exadata_infrastructure_resource.go +++ b/internal/service/database/database_exadata_infrastructure_resource.go @@ -101,7 +101,6 @@ func DatabaseExadataInfrastructureResource() *schema.Resource { Type: schema.TypeInt, Optional: true, Computed: true, - ForceNew: true, }, "contacts": { Type: schema.TypeList, @@ -273,14 +272,17 @@ func DatabaseExadataInfrastructureResource() *schema.Resource { Type: schema.TypeInt, Computed: true, }, + "additional_compute_count": { Type: schema.TypeInt, Computed: true, }, + "additional_compute_system_model": { Type: schema.TypeString, Computed: true, }, + "additional_storage_count": { Type: schema.TypeInt, Optional: true, @@ -655,15 +657,6 @@ func (s *DatabaseExadataInfrastructureResourceCrud) Update() error { request := oci_database.UpdateExadataInfrastructureRequest{} - if additionalComputeCount, ok := s.D.GetOkExists("additional_compute_count"); ok { - tmp := additionalComputeCount.(int) - request.AdditionalComputeCount = &tmp - } - - if additionalComputeSystemModel, ok := s.D.GetOkExists("additional_compute_system_model"); ok { - request.AdditionalComputeSystemModel = oci_database.UpdateExadataInfrastructureDetailsAdditionalComputeSystemModelEnum(additionalComputeSystemModel.(string)) - } - if additionalStorageCount, ok := s.D.GetOkExists("additional_storage_count"); ok { tmp := additionalStorageCount.(int) request.AdditionalStorageCount = &tmp diff --git a/internal/service/database/database_export.go b/internal/service/database/database_export.go index 05554978d0b..d56a1a45273 100644 --- a/internal/service/database/database_export.go +++ b/internal/service/database/database_export.go @@ -286,11 +286,8 @@ var exportDatabaseVmClusterNetworkHints = &tf_export.TerraformResourceHints{ DiscoverableLifecycleStates: []string{ string(oci_database.VmClusterNetworkLifecycleStateRequiresValidation), string(oci_database.VmClusterNetworkLifecycleStateValidated), -<<<<<<< ours string(oci_database.VmClusterNetworkLifecycleStateNeedsAttention), -======= string(oci_database.VmClusterNetworkLifecycleStateAllocated), ->>>>>>> theirs }, } diff --git a/internal/service/database/database_vm_cluster_network_resource.go b/internal/service/database/database_vm_cluster_network_resource.go index ee2e923e04f..dede615afef 100644 --- a/internal/service/database/database_vm_cluster_network_resource.go +++ b/internal/service/database/database_vm_cluster_network_resource.go @@ -12,12 +12,15 @@ import ( "regexp" "strings" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" + "github.com/oracle/terraform-provider-oci/internal/client" "github.com/oracle/terraform-provider-oci/internal/tfresource" "github.com/oracle/terraform-provider-oci/internal/utils" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/oracle/oci-go-sdk/v65/database" oci_database "github.com/oracle/oci-go-sdk/v65/database" ) @@ -113,7 +116,6 @@ func DatabaseVmClusterNetworkResource() *schema.Resource { Type: schema.TypeString, Required: true, }, - // Optional "db_server_id": { Type: schema.TypeString, @@ -140,7 +142,6 @@ func DatabaseVmClusterNetworkResource() *schema.Resource { }, }, }, - // Optional "domain_name": { Type: schema.TypeString, @@ -162,7 +163,6 @@ func DatabaseVmClusterNetworkResource() *schema.Resource { Optional: true, Computed: true, }, - // Computed }, }, @@ -221,6 +221,14 @@ func DatabaseVmClusterNetworkResource() *schema.Resource { Type: schema.TypeString, Computed: true, }, + "action": { + Type: schema.TypeString, + Optional: true, + ValidateFunc: validation.StringInSlice([]string{ + "ADD_DBSERVER_NETWORK", + "REMOVE_DBSERVER_NETWORK", + }, true), + }, }, } } @@ -468,6 +476,53 @@ func (s *DatabaseVmClusterNetworkResourceCrud) Get() error { func (s *DatabaseVmClusterNetworkResourceCrud) Update() error { + if action, ok := s.D.GetOkExists("action"); ok && s.D.HasChange("action") { + + request := oci_database.ResizeVmClusterNetworkRequest{} + request.Action = action.(database.ResizeVmClusterNetworkDetailsActionEnum) + + if exadataInfrastructureId, ok := s.D.GetOkExists("exadata_infrastructure_id"); ok { + tmp := exadataInfrastructureId.(string) + request.ExadataInfrastructureId = &tmp + } + + if vmNetworks, ok := s.D.GetOkExists("vm_networks"); ok { + request.VmNetworks = []oci_database.VmNetworkDetails{} + set := vmNetworks.(*schema.Set) + interfaces := set.List() + tmp := make([]oci_database.VmNetworkDetails, len(interfaces)) + for i := range interfaces { + stateDataIndex := vmNetworksHashCodeForSets(interfaces[i]) + fieldKeyFormat := fmt.Sprintf("%s.%d.%%s", "vm_networks", stateDataIndex) + converted, err := s.mapToVmNetworkDetails(fieldKeyFormat) + if err != nil { + return err + } + tmp[i] = converted + } + if len(tmp) != 0 || s.D.HasChange("vm_networks") { + request.VmNetworks = tmp + } + } + + tmp := s.D.Id() + request.VmClusterNetworkId = &tmp + + response, err := s.Client.ResizeVmClusterNetwork(context.Background(), request) + if err != nil { + return err + } + + s.Res = &response.VmClusterNetwork + + if waitErr := tfresource.WaitForUpdatedState(s.D, s); waitErr != nil { + return waitErr + } + + return nil + + } + if s.D.Get("state").(string) == string(oci_database.VmClusterNetworkLifecycleStateValidated) || s.D.Get("state").(string) == string(oci_database.VmClusterNetworkLifecycleStateAllocated) { return fmt.Errorf("Update not allowed on validated vm cluster network") @@ -708,15 +763,11 @@ func (s *DatabaseVmClusterNetworkResourceCrud) mapToNodeDetails(fieldKeyFormat s result.Ip = &tmp } -<<<<<<< ours if state, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "state")); ok { result.LifecycleState = oci_database.NodeDetailsLifecycleStateEnum(state.(string)) } - if vip, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "vip")); ok { -======= if vip, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "vip")); ok && vip != "" { ->>>>>>> theirs tmp := vip.(string) result.Vip = &tmp } @@ -743,7 +794,6 @@ func NodeDetailsToMap(obj oci_database.NodeDetails) map[string]interface{} { if obj.Ip != nil { result["ip"] = string(*obj.Ip) } - result["state"] = string(obj.LifecycleState) if obj.Vip != nil { diff --git a/internal/service/database/database_vm_cluster_recommended_network_data_source.go b/internal/service/database/database_vm_cluster_recommended_network_data_source.go index 7357d5358da..6a221e379fe 100644 --- a/internal/service/database/database_vm_cluster_recommended_network_data_source.go +++ b/internal/service/database/database_vm_cluster_recommended_network_data_source.go @@ -22,8 +22,7 @@ func DatabaseVmClusterRecommendedNetworkDataSource() *schema.Resource { // Required "compartment_id": { Type: schema.TypeString, -<<<<<<< ours - Computed: true, + Required: true, }, "db_servers": { Type: schema.TypeList, @@ -32,14 +31,6 @@ func DatabaseVmClusterRecommendedNetworkDataSource() *schema.Resource { Type: schema.TypeString, }, }, - "defined_tags": { - Type: schema.TypeMap, - Computed: true, - Elem: schema.TypeString, -======= - Required: true, ->>>>>>> theirs - }, "display_name": { Type: schema.TypeString, Required: true, diff --git a/internal/service/database/register_resource.go b/internal/service/database/register_resource.go index 1a2a8246e50..1eb7f7a0943 100644 --- a/internal/service/database/register_resource.go +++ b/internal/service/database/register_resource.go @@ -56,4 +56,5 @@ func RegisterResource() { tfresource.RegisterResource("oci_database_autonomous_container_database_dataguard_association_operation", DatabaseAutonomousContainerDatabaseDataguardAssociationOperationResource()) tfresource.RegisterResource("oci_database_db_systems_upgrade", DatabaseDbSystemsUpgradeResource()) tfresource.RegisterResource("oci_database_exadata_infrastructure_storage", DatabaseExadataInfrastructureStorageResource()) + tfresource.RegisterResource("oci_database_exadata_infrastructure_compute", DatabaseExadataInfrastructureComputeManagedResource()) } diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/datascience/datascience_client.go b/vendor/github.com/oracle/oci-go-sdk/v65/datascience/datascience_client.go index 12fdbe35830..dc45490b6c2 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/datascience/datascience_client.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/datascience/datascience_client.go @@ -3819,4 +3819,4 @@ func (client DataScienceClient) updateProject(ctx context.Context, request commo err = common.UnmarshalResponse(httpResponse, &response) return response, err -} +} \ No newline at end of file diff --git a/website/docs/r/database_exadata_infrastructure_compute.html.markdown b/website/docs/r/database_exadata_infrastructure_compute.html.markdown new file mode 100644 index 00000000000..6443fc50c37 --- /dev/null +++ b/website/docs/r/database_exadata_infrastructure_compute.html.markdown @@ -0,0 +1,101 @@ +--- +subcategory: "Database" +layout: "oci" +page_title: "Oracle Cloud Infrastructure: oci_database_exadata_infrastructure_compute" +sidebar_current: "docs-oci-datasource-database-exadata_infrastructure_compute" +description: |- + Provides details about a specific Exadata Infrastructure compute managed resource in Oracle Cloud Infrastructure Database service +--- + +# Data Source: oci_database_exadata_infrastructure +This data source provides details about a specific Exadata Infrastructure compute managed resource in Oracle Cloud Infrastructure Database service. + +Gets information about the specified Exadata infrastructure. Applies to Exadata Cloud@Customer instances only. +To get information on an Exadata Cloud Service infrastructure resource, use the [GetCloudExadataInfrastructure](https://docs.cloud.oracle.com/iaas/api/#/en/database/latest/CloudExadataInfrastructure/GetCloudExadataInfrastructure) operation. + + +## Example Usage + +```hcl +data "oci_database_exadata_infrastructure" "test_exadata_infrastructure" { + #Required + exadata_infrastructure_id = oci_database_exadata_infrastructure.test_exadata_infrastructure.id +} +``` + +## Argument Reference + +The following arguments are supported: + +* `exadata_infrastructure_id` - (Required) The Exadata infrastructure [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). + + +## Attributes Reference + +The following attributes are exported: + +* `activated_storage_count` - The requested number of additional storage servers activated for the Exadata infrastructure. +* `additional_compute_count` - The number of additional compute servers for the Exadata infrastructure. +* `additional_compute_system_model` - Oracle Exadata System Model specification. The system model determines the amount of compute or storage server resources available for use. For more information, please see [System and Shape Configuration Options] (https://docs.oracle.com/en/engineered-systems/exadata-cloud-at-customer/ecccm/ecc-system-config-options.html#GUID-9E090174-5C57-4EB1-9243-B470F9F10D6B) +* `additional_compute_count_compute_resource` - The requested number of additional compute servers for the Exadata infrastructure. +* `additional_compute_system_model_compute_resource` - The requested Oracle Exadata System Model specification for the additional compute servers. The system model determines the amount of compute or storage server resources available for use. For more information, please see [System and Shape Configuration Options] (https://docs.oracle.com/en/engineered-systems/exadata-cloud-at-customer/ecccm/ecc-system-config-options.html#GUID-9E090174-5C57-4EB1-9243-B470F9F10D6B) +* `additional_storage_count` - The requested number of additional storage servers for the Exadata infrastructure. +* `admin_network_cidr` - The CIDR block for the Exadata administration network. +* `cloud_control_plane_server1` - The IP address for the first control plane server. +* `cloud_control_plane_server2` - The IP address for the second control plane server. +* `compartment_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment. +* `compute_count` - The number of compute servers for the Exadata infrastructure. +* `contacts` - The list of contacts for the Exadata infrastructure. + * `email` - The email for the Exadata Infrastructure contact. + * `is_contact_mos_validated` - If `true`, this Exadata Infrastructure contact is a valid My Oracle Support (MOS) contact. If `false`, this Exadata Infrastructure contact is not a valid MOS contact. + * `is_primary` - If `true`, this Exadata Infrastructure contact is a primary contact. If `false`, this Exadata Infrastructure is a secondary contact. + * `name` - The name of the Exadata Infrastructure contact. + * `phone_number` - The phone number for the Exadata Infrastructure contact. +* `corporate_proxy` - The corporate network proxy for access to the control plane network. +* `cpus_enabled` - The number of enabled CPU cores. +* `csi_number` - The CSI Number of the Exadata infrastructure. +* `data_storage_size_in_tbs` - Size, in terabytes, of the DATA disk group. +* `db_node_storage_size_in_gbs` - The local node storage allocated in GBs. +* `db_server_version` - The software version of the database servers (dom0) in the Exadata infrastructure. +* `defined_tags` - Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). +* `display_name` - The user-friendly name for the Exadata Cloud@Customer infrastructure. The name does not need to be unique. +* `dns_server` - The list of DNS server IP addresses. Maximum of 3 allowed. +* `freeform_tags` - Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Department": "Finance"}` +* `gateway` - The gateway for the control plane network. +* `id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Exadata infrastructure. +* `infini_band_network_cidr` - The CIDR block for the Exadata InfiniBand interconnect. +* `is_cps_offline_report_enabled` - Indicates whether cps offline diagnostic report is enabled for this Exadata infrastructure. This will allow a customer to quickly check status themselves and fix problems on their end, saving time and frustration for both Oracle and the customer when they find the CPS in a disconnected state.You can enable offline diagnostic report during Exadata infrastructure provisioning. You can also disable or enable it at any time using the UpdateExadatainfrastructure API. +* `lifecycle_details` - Additional information about the current lifecycle state. +* `maintenance_slo_status` - A field to capture ‘Maintenance SLO Status’ for the Exadata infrastructure with values ‘OK’, ‘DEGRADED’. Default is ‘OK’ when the infrastructure is provisioned. +* `maintenance_window` - The scheduling details for the quarterly maintenance window. Patching and system updates take place during the maintenance window. + * `custom_action_timeout_in_mins` - Determines the amount of time the system will wait before the start of each database server patching operation. Custom action timeout is in minutes and valid value is between 15 to 120 (inclusive). + * `days_of_week` - Days during the week when maintenance should be performed. + * `name` - Name of the day of the week. + * `hours_of_day` - The window of hours during the day when maintenance should be performed. The window is a 4 hour slot. Valid values are + * 0 - represents time slot 0:00 - 3:59 UTC - 4 - represents time slot 4:00 - 7:59 UTC - 8 - represents time slot 8:00 - 11:59 UTC - 12 - represents time slot 12:00 - 15:59 UTC - 16 - represents time slot 16:00 - 19:59 UTC - 20 - represents time slot 20:00 - 23:59 UTC + * `is_custom_action_timeout_enabled` - If true, enables the configuration of a custom action timeout (waiting period) between database server patching operations. + * `is_monthly_patching_enabled` - If true, enables the monthly patching option. + * `lead_time_in_weeks` - Lead time window allows user to set a lead time to prepare for a down time. The lead time is in weeks and valid value is between 1 to 4. + * `months` - Months during the year when maintenance should be performed. + * `name` - Name of the month of the year. + * `patching_mode` - Cloud Exadata infrastructure node patching method, either "ROLLING" or "NONROLLING". Default value is ROLLING. + + *IMPORTANT*: Non-rolling infrastructure patching involves system down time. See [Oracle-Managed Infrastructure Maintenance Updates](https://docs.cloud.oracle.com/iaas/Content/Database/Concepts/examaintenance.htm#Oracle) for more information. + * `preference` - The maintenance window scheduling preference. + * `weeks_of_month` - Weeks during the month when maintenance should be performed. Weeks start on the 1st, 8th, 15th, and 22nd days of the month, and have a duration of 7 days. Weeks start and end based on calendar dates, not days of the week. For example, to allow maintenance during the 2nd week of the month (from the 8th day to the 14th day of the month), use the value 2. Maintenance cannot be scheduled for the fifth week of months that contain more than 28 days. Note that this parameter works in conjunction with the daysOfWeek and hoursOfDay parameters to allow you to specify specific days of the week and hours that maintenance will be performed. +* `max_cpu_count` - The total number of CPU cores available. +* `max_data_storage_in_tbs` - The total available DATA disk group size. +* `max_db_node_storage_in_gbs` - The total local node storage available in GBs. +* `max_memory_in_gbs` - The total memory available in GBs. +* `memory_size_in_gbs` - The memory allocated in GBs. +* `monthly_db_server_version` - The monthly software version of the database servers (dom0) in the Exadata infrastructure. +* `netmask` - The netmask for the control plane network. +* `ntp_server` - The list of NTP server IP addresses. Maximum of 3 allowed. +* `rack_serial_number` - The serial number for the Exadata infrastructure. +* `shape` - The shape of the Exadata infrastructure. The shape determines the amount of CPU, storage, and memory resources allocated to the instance. +* `state` - The current lifecycle state of the Exadata infrastructure. +* `storage_count` - The number of Exadata storage servers for the Exadata infrastructure. +* `storage_server_version` - The software version of the storage servers (cells) in the Exadata infrastructure. +* `time_created` - The date and time the Exadata infrastructure was created. +* `time_zone` - The time zone of the Exadata infrastructure. For details, see [Exadata Infrastructure Time Zones](https://docs.cloud.oracle.com/iaas/Content/Database/References/timezones.htm). + From 874d569b9fa2c12ee14988bc2b1db7716fb608c0 Mon Sep 17 00:00:00 2001 From: rashik_bhasin Date: Tue, 23 Aug 2022 15:45:10 -0700 Subject: [PATCH 03/17] Added - Id based RD without resourceType --- internal/resourcediscovery/export_compartment.go | 7 ++++++- internal/resourcediscovery/export_compartment_test.go | 9 +++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/internal/resourcediscovery/export_compartment.go b/internal/resourcediscovery/export_compartment.go index 830279a7a57..539b145f37f 100644 --- a/internal/resourcediscovery/export_compartment.go +++ b/internal/resourcediscovery/export_compartment.go @@ -944,8 +944,13 @@ func findResources(ctx *tf_export.ResourceDiscoveryContext, root *tf_export.OCIR ctx.ExpectedResourceIds[resource.Id] = true ctx.CtxLock.Unlock() } else { - resource.OmitFromExport = !childType.AlwaysExportable + if resource.Parent != nil && ctx.ExpectedResourceIds[resource.Parent.Id] { + ctx.ExpectedResourceIds[resource.Id] = true + } else { + resource.OmitFromExport = !childType.AlwaysExportable + } } + } subResources, err := findResources(ctx, resource, resourceGraph) diff --git a/internal/resourcediscovery/export_compartment_test.go b/internal/resourcediscovery/export_compartment_test.go index 12d7f8aa566..aaf7d235444 100644 --- a/internal/resourcediscovery/export_compartment_test.go +++ b/internal/resourcediscovery/export_compartment_test.go @@ -1240,15 +1240,15 @@ func TestUnitFindResources_restrictedOcids(t *testing.T) { restrictedOcidTests := []map[string]interface{}{ { "ocids": map[string]bool{getTestResourceId("parent", 0): false, getTestResourceId("child", 0): false}, - "numExpectedResources": len(parentResources) + 1, + "numExpectedResources": len(parentResources) + 2, }, { "ocids": map[string]bool{getTestResourceId("parent", 0): false, getTestResourceId("child", 3): false}, - "numExpectedResources": len(parentResources) + 1, + "numExpectedResources": len(parentResources) + 3, }, { "ocids": map[string]bool{getTestResourceId("parent", 0): false, getTestResourceId("child", 0): false, "nonexistentID": false}, - "numExpectedResources": len(parentResources) + 1, + "numExpectedResources": len(parentResources) + 2, }, { "ocids": map[string]bool{getTestResourceId("child", 0): false, getTestResourceId("child", 3): false, "nonexistentID": false}, @@ -1280,8 +1280,9 @@ func TestUnitFindResources_restrictedOcids(t *testing.T) { exportResourceCount++ } } + if exportResourceCount != testCase["numExpectedResources"].(int) { - t.Logf("expected %d resources to be exported, but got %d", testCase["numExpectedResources"].(int), len(results)) + t.Logf("expected %d resources to be exported, but got %d", testCase["numExpectedResources"].(int), exportResourceCount) t.Fail() } } From 7509b9f9d127aaa74e2b31dfc787364245da066e Mon Sep 17 00:00:00 2001 From: Sagar Pokale Date: Wed, 14 Sep 2022 21:53:07 -0500 Subject: [PATCH 04/17] Added - generate terraform config for services with non zero resource only --- .../export_compartment_test.go | 26 +++++++++++-------- .../export_resource_helpers.go | 6 ++++- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/internal/resourcediscovery/export_compartment_test.go b/internal/resourcediscovery/export_compartment_test.go index aaf7d235444..b6b08aed9da 100644 --- a/internal/resourcediscovery/export_compartment_test.go +++ b/internal/resourcediscovery/export_compartment_test.go @@ -1030,7 +1030,7 @@ func TestUnitRunExportCommand_exitStatusForPartialSuccess(t *testing.T) { tf_export.TfHclVersionvar = &tf_export.TfHclVersion12{} args := &tf_export.ExportCommandArgs{ CompartmentId: &compartmentId, - Services: []string{"compartment_testing", "tenancy_testing"}, + Services: []string{"compartment_testing", "core"}, OutputDir: &outputDir, GenerateState: false, TFVersion: &tf_export.TfHclVersionvar, @@ -1046,21 +1046,25 @@ func TestUnitRunExportCommand_exitStatusForPartialSuccess(t *testing.T) { return getTestClients(), nil } exportConfigProvider = acctest.MockConfigurationProvider{} - if err, status := RunExportCommand(args); err != nil && status == StatusFail { + err, status := RunExportCommand(args) + if err != nil && status == StatusFail { t.Logf("(TF version %s) export command failed due to err: %v", tf_export.TfHclVersionvar.ToString(), err) t.Fail() - } else if status != StatusPartialSuccess { - t.Logf("(TF version %s) export command returned unexpected Exit Status: %v", tf_export.TfHclVersionvar.ToString(), status) - t.Fail() } - if _, err = os.Stat(fmt.Sprintf("%s%scompartment_testing.tf", outputDir, string(os.PathSeparator))); os.IsNotExist(err) { - t.Logf("(TF version %s) no compartment_testing.tf file generated", tf_export.TfHclVersionvar.ToString()) - t.Fail() - } + if err == nil && status == StatusPartialSuccess { + if _, err = os.Stat(fmt.Sprintf("%s%score.tf", outputDir, string(os.PathSeparator))); os.IsNotExist(err) { + t.Logf("(TF version %s) no core.tf file generated", tf_export.TfHclVersionvar.ToString()) + t.Fail() + } + if _, err = os.Stat(fmt.Sprintf("%s%scompartment_testing.tf", outputDir, string(os.PathSeparator))); !os.IsNotExist(err) { + t.Logf("(TF version %s) no compartment_testing.tf file generated", tf_export.TfHclVersionvar.ToString()) + t.Fail() + } - if _, err = os.Stat(fmt.Sprintf("%s%sterraform.tfstate", outputDir, string(os.PathSeparator))); !os.IsNotExist(err) { - t.Logf("(TF version %s) found terraform.tfstate even though it wasn't expected", tf_export.TfHclVersionvar.ToString()) + if _, err = os.Stat(fmt.Sprintf("%s%sterraform.tfstate", outputDir, string(os.PathSeparator))); os.IsNotExist(err) { + t.Logf("(TF version %s) found terraform.tfstate even though it wasn't expected", tf_export.TfHclVersionvar.ToString()) + } } os.RemoveAll(outputDir) diff --git a/internal/resourcediscovery/export_resource_helpers.go b/internal/resourcediscovery/export_resource_helpers.go index 5abf22430dd..31225e76366 100644 --- a/internal/resourcediscovery/export_resource_helpers.go +++ b/internal/resourcediscovery/export_resource_helpers.go @@ -298,9 +298,13 @@ func (r *resourceDiscoveryBaseStep) writeTmpConfigurationForImport() error { func (r *resourceDiscoveryBaseStep) writeConfiguration() error { defer elapsed(fmt.Sprintf("writing actual configuration for %d %s resources", len(r.getDiscoveredResources()), r.name), nil, 0)() + + //Do not generate empty terraform configuration file + if len(r.getDiscoveredResources()) == 0 { + return nil + } configOutputFile := fmt.Sprintf("%s%s%s.tf", *r.ctx.OutputDir, string(os.PathSeparator), r.name) tmpConfigOutputFile := fmt.Sprintf("%s%s%s.tf.tmp", *r.ctx.OutputDir, string(os.PathSeparator), r.name) - file, err := os.OpenFile(tmpConfigOutputFile, os.O_CREATE|os.O_RDWR, 0666) if err != nil { return err From b052e46734a8c0d8bff989d81fc3f24ce40a097b Mon Sep 17 00:00:00 2001 From: Terraform Team Automation Date: Thu, 29 Sep 2022 08:24:36 +0000 Subject: [PATCH 05/17] Bug Fix - canaryStrategy code added to fix the issue --- .../devops/devops_deploy_stage_resource.go | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/internal/service/devops/devops_deploy_stage_resource.go b/internal/service/devops/devops_deploy_stage_resource.go index 3534c2fc8b3..501d63a47ba 100644 --- a/internal/service/devops/devops_deploy_stage_resource.go +++ b/internal/service/devops/devops_deploy_stage_resource.go @@ -633,7 +633,7 @@ func DevopsDeployStageResource() *schema.Resource { "values_artifact_ids": { Type: schema.TypeList, Optional: true, - Computed: true, + Computed: false, Elem: &schema.Schema{ Type: schema.TypeString, }, @@ -2231,10 +2231,6 @@ func (s *DevopsDeployStageResourceCrud) SetData() error { s.D.Set("freeform_tags", v.FreeformTags) - if v.Id != nil { - s.D.Set("id", *v.Id) - } - if v.LifecycleDetails != nil { s.D.Set("lifecycle_details", *v.LifecycleDetails) } @@ -3782,6 +3778,10 @@ func (s *DevopsDeployStageResourceCrud) populateTopLevelPolymorphicCreateDeployS } details.DefinedTags = convertedDefinedTags } + if deployPipelineId, ok := s.D.GetOkExists("deploy_pipeline_id"); ok { + tmp := deployPipelineId.(string) + details.DeployPipelineId = &tmp + } if deployStagePredecessorCollection, ok := s.D.GetOkExists("deploy_stage_predecessor_collection"); ok { if tmpList := deployStagePredecessorCollection.([]interface{}); len(tmpList) > 0 { fieldKeyFormat := fmt.Sprintf("%s.%d.%%s", "deploy_stage_predecessor_collection", 0) @@ -3888,6 +3888,16 @@ func (s *DevopsDeployStageResourceCrud) populateTopLevelPolymorphicCreateDeployS details.DeployStagePredecessorCollection = &tmp } } + if canaryStrategy, ok := s.D.GetOkExists("canary_strategy"); ok { + if tmpList := canaryStrategy.([]interface{}); len(tmpList) > 0 { + fieldKeyFormat := fmt.Sprintf("%s.%d.%%s", "canary_strategy", 0) + tmp, err := s.mapToOkeCanaryStrategy(fieldKeyFormat) + if err != nil { + return err + } + details.CanaryStrategy = tmp + } + } if description, ok := s.D.GetOkExists("description"); ok { tmp := description.(string) details.Description = &tmp @@ -3927,10 +3937,6 @@ func (s *DevopsDeployStageResourceCrud) populateTopLevelPolymorphicCreateDeployS } details.DefinedTags = convertedDefinedTags } - if deployPipelineId, ok := s.D.GetOkExists("deploy_pipeline_id"); ok { - tmp := deployPipelineId.(string) - details.DeployPipelineId = &tmp - } if deployStagePredecessorCollection, ok := s.D.GetOkExists("deploy_stage_predecessor_collection"); ok { if tmpList := deployStagePredecessorCollection.([]interface{}); len(tmpList) > 0 { fieldKeyFormat := fmt.Sprintf("%s.%d.%%s", "deploy_stage_predecessor_collection", 0) From 5d3660adb01a8d8cc8d9fd1b61cc62660a5fca84 Mon Sep 17 00:00:00 2001 From: Terraform Team Automation Date: Thu, 29 Sep 2022 08:56:23 +0000 Subject: [PATCH 06/17] Added - Support for OCI Bastions - DNS Support --- examples/bastion/instance.tf | 4 +- examples/bastion/network.tf | 4 +- examples/bastion/session.tf | 2 +- .../integrationtest/bastion_bastion_test.go | 6 ++ .../integrationtest/bastion_session_test.go | 13 ++-- .../bastion/bastion_bastion_data_source.go | 2 + .../bastion/bastion_bastion_resource.go | 12 ++++ .../bastion/bastion_bastions_data_source.go | 2 + .../bastion/bastion_session_resource.go | 66 +++++++++++-------- website/docs/d/bastion_bastion.html.markdown | 1 + website/docs/d/bastion_bastions.html.markdown | 1 + website/docs/d/bastion_session.html.markdown | 3 +- website/docs/d/bastion_sessions.html.markdown | 3 +- website/docs/r/bastion_bastion.html.markdown | 5 +- website/docs/r/bastion_session.html.markdown | 15 +++-- 15 files changed, 92 insertions(+), 47 deletions(-) diff --git a/examples/bastion/instance.tf b/examples/bastion/instance.tf index 9a694564fd3..52acad90bb9 100644 --- a/examples/bastion/instance.tf +++ b/examples/bastion/instance.tf @@ -12,7 +12,7 @@ resource "oci_core_instance" "test_instance" { availability_domain = data.oci_identity_availability_domain.bastion_ad.name compartment_id = var.compartment_ocid display_name = "TestInstance" - shape = "VM.Standard1.1" + shape = "VM.Standard2.1" agent_config { are_all_plugins_disabled = false @@ -27,7 +27,7 @@ resource "oci_core_instance" "test_instance" { create_vnic_details { subnet_id = oci_core_subnet.test_subnet.id display_name = "Primaryvnic" - assign_public_ip = true + assign_public_ip = false hostname_label = "testinstance" } diff --git a/examples/bastion/network.tf b/examples/bastion/network.tf index b925e1ef8cc..9ef109f841f 100644 --- a/examples/bastion/network.tf +++ b/examples/bastion/network.tf @@ -10,7 +10,7 @@ resource "oci_core_service_gateway" "test_bastion_service_gateway" { display_name = "sgw" services { - service_id = data.oci_core_services.test_bastion_services.services[1]["id"] + service_id = data.oci_core_services.test_bastion_services.services[0]["id"] } vcn_id = oci_core_vcn.test_bastion_vcn.id @@ -21,7 +21,7 @@ resource "oci_core_default_route_table" "bastion_default_route_table" { display_name = "DefaultRouteTable" route_rules { - destination = lookup(data.oci_core_services.test_bastion_services.services[1], "cidr_block") + destination = lookup(data.oci_core_services.test_bastion_services.services[0], "cidr_block") destination_type = "SERVICE_CIDR_BLOCK" network_entity_id = oci_core_service_gateway.test_bastion_service_gateway.id } diff --git a/examples/bastion/session.tf b/examples/bastion/session.tf index 9325dfd0924..7ca284af203 100644 --- a/examples/bastion/session.tf +++ b/examples/bastion/session.tf @@ -36,7 +36,7 @@ variable "session_target_resource_details_target_resource_port" { resource "time_sleep" "wait_3_minutes_for_bastion_plugin" { depends_on = [oci_core_instance.test_instance] - create_duration = "3m" + create_duration = "5m" } resource "oci_bastion_session" "test_session_managed_ssh" { diff --git a/internal/integrationtest/bastion_bastion_test.go b/internal/integrationtest/bastion_bastion_test.go index f886dc0f17f..2fc219ad245 100644 --- a/internal/integrationtest/bastion_bastion_test.go +++ b/internal/integrationtest/bastion_bastion_test.go @@ -55,6 +55,7 @@ var ( "target_subnet_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_core_subnet.test_subnet.id}`}, "client_cidr_block_allow_list": acctest.Representation{RepType: acctest.Required, Create: []string{`0.0.0.0/0`}, Update: []string{`0.0.0.0/0`}}, "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")}`}, + "dns_proxy_status": acctest.Representation{RepType: acctest.Optional, Create: `DISABLED`}, "freeform_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"bar-key": "value"}, Update: map[string]string{"Department": "Accounting"}}, "max_session_ttl_in_seconds": acctest.Representation{RepType: acctest.Optional, Create: `1800`, Update: `3600`}, "name": acctest.Representation{RepType: acctest.Required, Create: bastionName}, @@ -116,6 +117,7 @@ func TestBastionBastionResource_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "bastion_type", "STANDARD"), resource.TestCheckResourceAttr(resourceName, "client_cidr_block_allow_list.#", "1"), resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId), + resource.TestCheckResourceAttr(resourceName, "dns_proxy_status", "DISABLED"), resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "1"), resource.TestCheckResourceAttrSet(resourceName, "id"), resource.TestCheckResourceAttr(resourceName, "max_session_ttl_in_seconds", "1800"), @@ -148,6 +150,7 @@ func TestBastionBastionResource_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "bastion_type", "STANDARD"), resource.TestCheckResourceAttr(resourceName, "client_cidr_block_allow_list.#", "1"), resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentIdU), + resource.TestCheckResourceAttr(resourceName, "dns_proxy_status", "DISABLED"), resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "1"), resource.TestCheckResourceAttrSet(resourceName, "id"), resource.TestCheckResourceAttr(resourceName, "max_session_ttl_in_seconds", "1800"), @@ -175,6 +178,7 @@ func TestBastionBastionResource_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "bastion_type", "STANDARD"), resource.TestCheckResourceAttr(resourceName, "client_cidr_block_allow_list.#", "1"), resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId), + resource.TestCheckResourceAttr(resourceName, "dns_proxy_status", "DISABLED"), resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "1"), resource.TestCheckResourceAttrSet(resourceName, "id"), resource.TestCheckResourceAttr(resourceName, "max_session_ttl_in_seconds", "3600"), @@ -208,6 +212,7 @@ func TestBastionBastionResource_basic(t *testing.T) { resource.TestCheckResourceAttr(datasourceName, "bastions.#", "1"), resource.TestCheckResourceAttr(datasourceName, "bastions.0.bastion_type", "STANDARD"), resource.TestCheckResourceAttr(datasourceName, "bastions.0.compartment_id", compartmentId), + resource.TestCheckResourceAttr(datasourceName, "bastions.0.dns_proxy_status", "DISABLED"), resource.TestCheckResourceAttr(datasourceName, "bastions.0.freeform_tags.%", "1"), resource.TestCheckResourceAttrSet(datasourceName, "bastions.0.id"), resource.TestCheckResourceAttr(datasourceName, "bastions.0.name", bastionName), @@ -229,6 +234,7 @@ func TestBastionBastionResource_basic(t *testing.T) { resource.TestCheckResourceAttr(singularDatasourceName, "bastion_type", "STANDARD"), resource.TestCheckResourceAttr(singularDatasourceName, "client_cidr_block_allow_list.#", "1"), resource.TestCheckResourceAttr(singularDatasourceName, "compartment_id", compartmentId), + resource.TestCheckResourceAttr(singularDatasourceName, "dns_proxy_status", "DISABLED"), resource.TestCheckResourceAttr(singularDatasourceName, "freeform_tags.%", "1"), resource.TestCheckResourceAttrSet(singularDatasourceName, "id"), resource.TestCheckResourceAttr(singularDatasourceName, "max_session_ttl_in_seconds", "3600"), diff --git a/internal/integrationtest/bastion_session_test.go b/internal/integrationtest/bastion_session_test.go index 432bb90fabb..8110045726a 100644 --- a/internal/integrationtest/bastion_session_test.go +++ b/internal/integrationtest/bastion_session_test.go @@ -51,15 +51,16 @@ var ( BastionsessionRepresentation = map[string]interface{}{ "bastion_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_bastion_bastion.test_bastion.id}`}, "key_details": acctest.RepresentationGroup{RepType: acctest.Required, Group: BastionsessionKeyDetailsRepresentation}, - "target_resource_details": acctest.RepresentationGroup{RepType: acctest.Required, Group: BastionsessionTargetResourceDetailsRepresentation}, + "target_resource_details": acctest.RepresentationGroup{RepType: acctest.Required, Group: BastionSessionTargetResourceDetailsRepresentation}, "display_name": acctest.Representation{RepType: acctest.Optional, Create: `managed_ssh`, Update: `managed_ssh2`}, "key_type": acctest.Representation{RepType: acctest.Optional, Create: `PUB`}, "session_ttl_in_seconds": acctest.Representation{RepType: acctest.Optional, Create: `1800`}, } - BastionsessionTargetResourceDetailsRepresentation = map[string]interface{}{ - "session_type": acctest.Representation{RepType: acctest.Required, Create: `MANAGED_SSH`}, - "target_resource_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_core_instance.test_instance.id}`}, - "target_resource_operating_system_user_name": acctest.Representation{RepType: acctest.Required, Create: `opc`}, + BastionSessionTargetResourceDetailsRepresentation = map[string]interface{}{ + "session_type": acctest.Representation{RepType: acctest.Required, Create: `MANAGED_SSH`}, + "target_resource_fqdn": acctest.Representation{RepType: acctest.Optional, Create: `targetResourceFqdn`}, + "target_resource_id": acctest.Representation{RepType: acctest.Optional, Create: `${oci_core_instance.test_instance.id}`}, + "target_resource_operating_system_user_name": acctest.Representation{RepType: acctest.Optional, Create: `opc`}, "target_resource_port": acctest.Representation{RepType: acctest.Optional, Create: `22`}, "target_resource_private_ip_address": acctest.Representation{RepType: acctest.Optional, Create: `${oci_core_instance.test_instance.private_ip}`}, } @@ -270,6 +271,7 @@ func TestBastionSessionResource_basic(t *testing.T) { resource.TestCheckResourceAttr(datasourceName, "sessions.0.target_resource_details.#", "1"), resource.TestCheckResourceAttr(datasourceName, "sessions.0.target_resource_details.0.session_type", "MANAGED_SSH"), resource.TestCheckResourceAttrSet(datasourceName, "sessions.0.target_resource_details.0.target_resource_display_name"), + resource.TestCheckResourceAttr(datasourceName, "sessions.0.target_resource_details.0.target_resource_fqdn", "targetResourceFqdn"), resource.TestCheckResourceAttrSet(datasourceName, "sessions.0.target_resource_details.0.target_resource_id"), resource.TestCheckResourceAttrSet(datasourceName, "sessions.0.target_resource_details.0.target_resource_operating_system_user_name"), resource.TestCheckResourceAttr(datasourceName, "sessions.0.target_resource_details.0.target_resource_port", "22"), @@ -298,6 +300,7 @@ func TestBastionSessionResource_basic(t *testing.T) { resource.TestCheckResourceAttr(singularDatasourceName, "target_resource_details.#", "1"), resource.TestCheckResourceAttr(singularDatasourceName, "target_resource_details.0.session_type", "MANAGED_SSH"), resource.TestCheckResourceAttrSet(singularDatasourceName, "target_resource_details.0.target_resource_display_name"), + resource.TestCheckResourceAttr(singularDatasourceName, "target_resource_details.0.target_resource_fqdn", "targetResourceFqdn"), resource.TestCheckResourceAttr(singularDatasourceName, "target_resource_details.0.target_resource_port", "22"), resource.TestCheckResourceAttrSet(singularDatasourceName, "target_resource_details.0.target_resource_private_ip_address"), resource.TestCheckResourceAttrSet(singularDatasourceName, "time_created"), diff --git a/internal/service/bastion/bastion_bastion_data_source.go b/internal/service/bastion/bastion_bastion_data_source.go index 5e45ef5d807..17792cdc8bf 100644 --- a/internal/service/bastion/bastion_bastion_data_source.go +++ b/internal/service/bastion/bastion_bastion_data_source.go @@ -80,6 +80,8 @@ func (s *BastionBastionDataSourceCrud) SetData() error { s.D.Set("defined_tags", tfresource.DefinedTagsToMap(s.Res.DefinedTags)) } + s.D.Set("dns_proxy_status", s.Res.DnsProxyStatus) + s.D.Set("freeform_tags", s.Res.FreeformTags) if s.Res.LifecycleDetails != nil { diff --git a/internal/service/bastion/bastion_bastion_resource.go b/internal/service/bastion/bastion_bastion_resource.go index 81b1da49e73..60e0db0f343 100644 --- a/internal/service/bastion/bastion_bastion_resource.go +++ b/internal/service/bastion/bastion_bastion_resource.go @@ -62,6 +62,12 @@ func BastionBastionResource() *schema.Resource { DiffSuppressFunc: tfresource.DefinedTagsDiffSuppressFunction, Elem: schema.TypeString, }, + "dns_proxy_status": { + Type: schema.TypeString, + Optional: true, + Computed: true, + ForceNew: true, + }, "freeform_tags": { Type: schema.TypeMap, Optional: true, @@ -235,6 +241,10 @@ func (s *BastionBastionResourceCrud) Create() error { request.DefinedTags = convertedDefinedTags } + if dnsProxyStatus, ok := s.D.GetOkExists("dns_proxy_status"); ok { + request.DnsProxyStatus = oci_bastion.BastionDnsProxyStatusEnum(dnsProxyStatus.(string)) + } + if freeformTags, ok := s.D.GetOkExists("freeform_tags"); ok { request.FreeformTags = tfresource.ObjectMapToStringMap(freeformTags.(map[string]interface{})) } @@ -518,6 +528,8 @@ func (s *BastionBastionResourceCrud) SetData() error { s.D.Set("defined_tags", tfresource.DefinedTagsToMap(s.Res.DefinedTags)) } + s.D.Set("dns_proxy_status", s.Res.DnsProxyStatus) + s.D.Set("freeform_tags", s.Res.FreeformTags) if s.Res.LifecycleDetails != nil { diff --git a/internal/service/bastion/bastion_bastions_data_source.go b/internal/service/bastion/bastion_bastions_data_source.go index 2992902046f..7e21715fe93 100644 --- a/internal/service/bastion/bastion_bastions_data_source.go +++ b/internal/service/bastion/bastion_bastions_data_source.go @@ -127,6 +127,8 @@ func (s *BastionBastionsDataSourceCrud) SetData() error { bastion["defined_tags"] = tfresource.DefinedTagsToMap(r.DefinedTags) } + bastion["dns_proxy_status"] = r.DnsProxyStatus + bastion["freeform_tags"] = r.FreeformTags if r.Id != nil { diff --git a/internal/service/bastion/bastion_session_resource.go b/internal/service/bastion/bastion_session_resource.go index 1eaeac4ff2f..a5b342af259 100644 --- a/internal/service/bastion/bastion_session_resource.go +++ b/internal/service/bastion/bastion_session_resource.go @@ -74,17 +74,25 @@ func BastionSessionResource() *schema.Resource { ForceNew: true, DiffSuppressFunc: tfresource.EqualIgnoreCaseSuppressDiff, ValidateFunc: validation.StringInSlice([]string{ + "DYNAMIC_PORT_FORWARDING", "MANAGED_SSH", "PORT_FORWARDING", }, true), }, + + // Optional + "target_resource_fqdn": { + Type: schema.TypeString, + Optional: true, + Computed: true, + ForceNew: true, + }, "target_resource_id": { Type: schema.TypeString, Optional: true, + Computed: true, ForceNew: true, }, - - // Optional "target_resource_operating_system_user_name": { Type: schema.TypeString, Optional: true, @@ -541,6 +549,9 @@ func (s *BastionSessionResourceCrud) mapToCreateSessionTargetResourceDetails(fie sessionType = "" // default value } switch strings.ToLower(sessionType) { + case strings.ToLower("DYNAMIC_PORT_FORWARDING"): + details := oci_bastion.CreateDynamicPortForwardingSessionTargetResourceDetails{} + baseObject = details case strings.ToLower("MANAGED_SSH"): details := oci_bastion.ManagedSshSessionTargetResourceDetails{} if targetResourceId, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "target_resource_id")); ok { @@ -551,34 +562,33 @@ func (s *BastionSessionResourceCrud) mapToCreateSessionTargetResourceDetails(fie tmp := targetResourceOperatingSystemUserName.(string) details.TargetResourceOperatingSystemUserName = &tmp } - if targetResourcePrivateIpAddress, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "target_resource_private_ip_address")); ok { - tmp := targetResourcePrivateIpAddress.(string) - details.TargetResourcePrivateIpAddress = &tmp - } if targetResourcePort, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "target_resource_port")); ok { tmp := targetResourcePort.(int) details.TargetResourcePort = &tmp } - - if targetResourceDisplayName, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "target_resource_display_name")); ok { - tmp := targetResourceDisplayName.(string) - details.TargetResourceDisplayName = &tmp + if targetResourcePrivateIpAddress, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "target_resource_private_ip_address")); ok { + tmp := targetResourcePrivateIpAddress.(string) + details.TargetResourcePrivateIpAddress = &tmp } baseObject = details case strings.ToLower("PORT_FORWARDING"): - details := oci_bastion.PortForwardingSessionTargetResourceDetails{} + details := oci_bastion.CreatePortForwardingSessionTargetResourceDetails{} + if targetResourceFqdn, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "target_resource_fqdn")); ok { + tmp := targetResourceFqdn.(string) + details.TargetResourceFqdn = &tmp + } if targetResourceId, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "target_resource_id")); ok { tmp := targetResourceId.(string) details.TargetResourceId = &tmp } - if targetResourcePrivateIpAddress, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "target_resource_private_ip_address")); ok { - tmp := targetResourcePrivateIpAddress.(string) - details.TargetResourcePrivateIpAddress = &tmp - } if targetResourcePort, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "target_resource_port")); ok { tmp := targetResourcePort.(int) details.TargetResourcePort = &tmp } + if targetResourcePrivateIpAddress, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "target_resource_private_ip_address")); ok { + tmp := targetResourcePrivateIpAddress.(string) + details.TargetResourcePrivateIpAddress = &tmp + } baseObject = details default: return nil, fmt.Errorf("unknown session_type '%v' was specified", sessionType) @@ -589,7 +599,9 @@ func (s *BastionSessionResourceCrud) mapToCreateSessionTargetResourceDetails(fie func TargetResourceDetailsToMap(obj *oci_bastion.TargetResourceDetails) map[string]interface{} { result := map[string]interface{}{} switch v := (*obj).(type) { - case oci_bastion.ManagedSshSessionTargetResourceDetails: + case oci_bastion.CreateDynamicPortForwardingSessionTargetResourceDetails: + result["session_type"] = "DYNAMIC_PORT_FORWARDING" + case oci_bastion.CreateManagedSshSessionTargetResourceDetails: result["session_type"] = "MANAGED_SSH" if v.TargetResourceId != nil { @@ -600,31 +612,31 @@ func TargetResourceDetailsToMap(obj *oci_bastion.TargetResourceDetails) map[stri result["target_resource_operating_system_user_name"] = string(*v.TargetResourceOperatingSystemUserName) } - if v.TargetResourcePrivateIpAddress != nil { - result["target_resource_private_ip_address"] = string(*v.TargetResourcePrivateIpAddress) - } - if v.TargetResourcePort != nil { result["target_resource_port"] = int(*v.TargetResourcePort) } - if v.TargetResourceDisplayName != nil { - result["target_resource_display_name"] = string(*v.TargetResourceDisplayName) + if v.TargetResourcePrivateIpAddress != nil { + result["target_resource_private_ip_address"] = string(*v.TargetResourcePrivateIpAddress) } - case oci_bastion.PortForwardingSessionTargetResourceDetails: + case oci_bastion.CreatePortForwardingSessionTargetResourceDetails: result["session_type"] = "PORT_FORWARDING" - if v.TargetResourceId != nil { - result["target_resource_id"] = string(*v.TargetResourceId) + if v.TargetResourceFqdn != nil { + result["target_resource_fqdn"] = string(*v.TargetResourceFqdn) } - if v.TargetResourcePrivateIpAddress != nil { - result["target_resource_private_ip_address"] = string(*v.TargetResourcePrivateIpAddress) + if v.TargetResourceId != nil { + result["target_resource_id"] = string(*v.TargetResourceId) } if v.TargetResourcePort != nil { result["target_resource_port"] = int(*v.TargetResourcePort) } + + if v.TargetResourcePrivateIpAddress != nil { + result["target_resource_private_ip_address"] = string(*v.TargetResourcePrivateIpAddress) + } default: log.Printf("[WARN] Received 'session_type' of unknown type %v", *obj) return nil diff --git a/website/docs/d/bastion_bastion.html.markdown b/website/docs/d/bastion_bastion.html.markdown index 3d67d095652..15960cb9613 100644 --- a/website/docs/d/bastion_bastion.html.markdown +++ b/website/docs/d/bastion_bastion.html.markdown @@ -36,6 +36,7 @@ The following attributes are exported: * `client_cidr_block_allow_list` - A list of address ranges in CIDR notation that you want to allow to connect to sessions hosted by this bastion. * `compartment_id` - The unique identifier (OCID) of the compartment where the bastion is located. * `defined_tags` - Defined tags for this resource. Each key is predefined and scoped to a namespace. Example: `{"foo-namespace.bar-key": "value"}` +* `dns_proxy_status` - Flag to enable FQDN and SOCKS5 Proxy Support. Example: `ENABLED`, `DISABLED` * `freeform_tags` - Simple key-value pair that is applied without any predefined name, type or scope. Exists for cross-compatibility only. Example: `{"bar-key": "value"}` * `id` - The unique identifier (OCID) of the bastion, which can't be changed after creation. * `lifecycle_details` - A message describing the current state in more detail. diff --git a/website/docs/d/bastion_bastions.html.markdown b/website/docs/d/bastion_bastions.html.markdown index c87ad2118d6..a88344b6d8c 100644 --- a/website/docs/d/bastion_bastions.html.markdown +++ b/website/docs/d/bastion_bastions.html.markdown @@ -51,6 +51,7 @@ The following attributes are exported: * `client_cidr_block_allow_list` - A list of address ranges in CIDR notation that you want to allow to connect to sessions hosted by this bastion. * `compartment_id` - The unique identifier (OCID) of the compartment where the bastion is located. * `defined_tags` - Defined tags for this resource. Each key is predefined and scoped to a namespace. Example: `{"foo-namespace.bar-key": "value"}` +* `dns_proxy_status` - Flag to enable FQDN and SOCKS5 Proxy Support. Example: `ENABLED`, `DISABLED` * `freeform_tags` - Simple key-value pair that is applied without any predefined name, type or scope. Exists for cross-compatibility only. Example: `{"bar-key": "value"}` * `id` - The unique identifier (OCID) of the bastion, which can't be changed after creation. * `lifecycle_details` - A message describing the current state in more detail. diff --git a/website/docs/d/bastion_session.html.markdown b/website/docs/d/bastion_session.html.markdown index fa4fb03ea4b..17f29d1bbbb 100644 --- a/website/docs/d/bastion_session.html.markdown +++ b/website/docs/d/bastion_session.html.markdown @@ -46,8 +46,9 @@ The following attributes are exported: * `ssh_metadata` - The connection message for the session. * `state` - The current state of the session. * `target_resource_details` - Details about a bastion session's target resource. - * `session_type` - The Bastion service recognizes two types of sessions, managed SSH sessions and SSH port forwarding sessions. Managed SSH sessions require that the target resource has an OpenSSH server and the Oracle Cloud Agent both running. + * `session_type` - The Bastion service recognizes three types of sessions, managed SSH sessions, SSH port forwarding sessions, and Dynamic SSH port forwarding sessions. Managed SSH sessions require that the target resource has an OpenSSH server and the Oracle Cloud Agent both running. * `target_resource_display_name` - The display name of the target Compute instance that the session connects to. + * `target_resource_fqdn` - The Fully Qualified Domain Name of the target resource that the session connects to. * `target_resource_id` - The unique identifier (OCID) of the target resource (a Compute instance, for example) that the session connects to. * `target_resource_operating_system_user_name` - The name of the user on the target resource operating system that the session uses for the connection. * `target_resource_port` - The port number to connect to on the target resource. diff --git a/website/docs/d/bastion_sessions.html.markdown b/website/docs/d/bastion_sessions.html.markdown index afb408b2d7e..87dc137d393 100644 --- a/website/docs/d/bastion_sessions.html.markdown +++ b/website/docs/d/bastion_sessions.html.markdown @@ -61,8 +61,9 @@ The following attributes are exported: * `ssh_metadata` - The connection message for the session. * `state` - The current state of the session. * `target_resource_details` - Details about a bastion session's target resource. - * `session_type` - The Bastion service recognizes two types of sessions, managed SSH sessions and SSH port forwarding sessions. Managed SSH sessions require that the target resource has an OpenSSH server and the Oracle Cloud Agent both running. + * `session_type` - The Bastion service recognizes three types of sessions, managed SSH sessions, SSH port forwarding sessions, and Dynamic SSH port forwarding sessions. Managed SSH sessions require that the target resource has an OpenSSH server and the Oracle Cloud Agent both running. * `target_resource_display_name` - The display name of the target Compute instance that the session connects to. + * `target_resource_fqdn` - The Fully Qualified Domain Name of the target resource that the session connects to. * `target_resource_id` - The unique identifier (OCID) of the target resource (a Compute instance, for example) that the session connects to. * `target_resource_operating_system_user_name` - The name of the user on the target resource operating system that the session uses for the connection. * `target_resource_port` - The port number to connect to on the target resource. diff --git a/website/docs/r/bastion_bastion.html.markdown b/website/docs/r/bastion_bastion.html.markdown index 26e41eee590..f990ffc148c 100644 --- a/website/docs/r/bastion_bastion.html.markdown +++ b/website/docs/r/bastion_bastion.html.markdown @@ -25,6 +25,7 @@ resource "oci_bastion_bastion" "test_bastion" { #Optional client_cidr_block_allow_list = var.bastion_client_cidr_block_allow_list defined_tags = {"foo-namespace.bar-key"= "value"} + dns_proxy_status = var.bastion_dns_proxy_status freeform_tags = {"bar-key"= "value"} max_session_ttl_in_seconds = var.bastion_max_session_ttl_in_seconds name = var.bastion_name @@ -37,10 +38,11 @@ resource "oci_bastion_bastion" "test_bastion" { The following arguments are supported: -* `bastion_type` - (Required) The type of bastion. Use `standard`. +* `bastion_type` - (Required) The type of bastion. Use `standard`. * `client_cidr_block_allow_list` - (Optional) (Updatable) A list of address ranges in CIDR notation that you want to allow to connect to sessions hosted by this bastion. * `compartment_id` - (Required) (Updatable) The unique identifier (OCID) of the compartment where the bastion is located. * `defined_tags` - (Optional) (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. Example: `{"foo-namespace.bar-key": "value"}` +* `dns_proxy_status` - (Optional) Flag to enable FQDN and SOCKS5 Proxy Support. Example: `ENABLED`, `DISABLED` * `freeform_tags` - (Optional) (Updatable) Simple key-value pair that is applied without any predefined name, type or scope. Exists for cross-compatibility only. Example: `{"bar-key": "value"}` * `max_session_ttl_in_seconds` - (Optional) (Updatable) The maximum amount of time that any session on the bastion can remain active. * `name` - (Optional) The name of the bastion, which can't be changed after creation. @@ -60,6 +62,7 @@ The following attributes are exported: * `client_cidr_block_allow_list` - A list of address ranges in CIDR notation that you want to allow to connect to sessions hosted by this bastion. * `compartment_id` - The unique identifier (OCID) of the compartment where the bastion is located. * `defined_tags` - Defined tags for this resource. Each key is predefined and scoped to a namespace. Example: `{"foo-namespace.bar-key": "value"}` +* `dns_proxy_status` - Flag to enable FQDN and SOCKS5 Proxy Support. Example: `ENABLED`, `DISABLED` * `freeform_tags` - Simple key-value pair that is applied without any predefined name, type or scope. Exists for cross-compatibility only. Example: `{"bar-key": "value"}` * `id` - The unique identifier (OCID) of the bastion, which can't be changed after creation. * `lifecycle_details` - A message describing the current state in more detail. diff --git a/website/docs/r/bastion_session.html.markdown b/website/docs/r/bastion_session.html.markdown index 11464cfa0b0..68189c1b907 100644 --- a/website/docs/r/bastion_session.html.markdown +++ b/website/docs/r/bastion_session.html.markdown @@ -28,7 +28,8 @@ resource "oci_bastion_session" "test_session" { session_type = var.session_target_resource_details_session_type #Optional - target_resource_id = oci_bastion_target_resource.test_target_resource.id + target_resource_fqdn = var.session_target_resource_details_target_resource_fqdn + target_resource_id = oci_bastion_target_resource.test_target_resource.id target_resource_operating_system_user_name = oci_identity_user.test_user.name target_resource_port = var.session_target_resource_details_target_resource_port target_resource_private_ip_address = var.session_target_resource_details_target_resource_private_ip_address @@ -53,12 +54,11 @@ The following arguments are supported: * `session_ttl_in_seconds` - (Optional) The amount of time the session can remain active. * `target_resource_details` - (Required) Details about a bastion session's target resource. * `session_type` - (Required) The session type. - * `target_resource_id` - (Optional) The unique identifier (OCID) of the target resource (a Compute instance, for example) that the session connects to. It's optional depends on the type of session you want to create. - * (Required) For MANAGED_SSH session type, we can only use target_resource_id to create session. - * (Optional) For PORT_FORWARDING session type, you must either use target_resource_id or target_resource_private_ip_address + * `target_resource_fqdn` - (Applicable when session_type=PORT_FORWARDING) The Fully Qualified Domain Name of the target resource that the session connects to. + * `target_resource_id` - (Required when session_type=MANAGED_SSH | PORT_FORWARDING) The unique identifier (OCID) of the target resource (a Compute instance, for example) that the session connects to. * `target_resource_operating_system_user_name` - (Required when session_type=MANAGED_SSH) The name of the user on the target resource operating system that the session uses for the connection. - * `target_resource_port` - (Optional) The port number to connect to on the target resource. - * `target_resource_private_ip_address` - (Optional) The private IP address of the target resource that the session connects to. For PORT_FORWARDING session type, you must either use target_resource_id or target_resource_private_ip_address + * `target_resource_port` - (Applicable when session_type=MANAGED_SSH | PORT_FORWARDING) The port number to connect to on the target resource. + * `target_resource_private_ip_address` - (Applicable when session_type=MANAGED_SSH | PORT_FORWARDING) The private IP address of the target resource that the session connects to. ** IMPORTANT ** @@ -82,8 +82,9 @@ The following attributes are exported: * `ssh_metadata` - The connection message for the session. * `state` - The current state of the session. * `target_resource_details` - Details about a bastion session's target resource. - * `session_type` - The Bastion service recognizes two types of sessions, managed SSH sessions and SSH port forwarding sessions. Managed SSH sessions require that the target resource has an OpenSSH server and the Oracle Cloud Agent both running. + * `session_type` - The Bastion service recognizes three types of sessions, managed SSH sessions, SSH port forwarding sessions, and Dynamic SSH port forwarding sessions. Managed SSH sessions require that the target resource has an OpenSSH server and the Oracle Cloud Agent both running. * `target_resource_display_name` - The display name of the target Compute instance that the session connects to. + * `target_resource_fqdn` - The Fully Qualified Domain Name of the target resource that the session connects to. * `target_resource_id` - The unique identifier (OCID) of the target resource (a Compute instance, for example) that the session connects to. * `target_resource_operating_system_user_name` - The name of the user on the target resource operating system that the session uses for the connection. * `target_resource_port` - The port number to connect to on the target resource. From 1b5213942cc6260e546cb4dd20ec2bc460a7d7eb Mon Sep 17 00:00:00 2001 From: Terraform Team Automation Date: Thu, 29 Sep 2022 09:23:01 +0000 Subject: [PATCH 07/17] Added - Support for OPSI Windows/Solaris support --- website/docs/d/opsi_host_insight.html.markdown | 8 ++------ website/docs/d/opsi_host_insights.html.markdown | 8 ++------ .../docs/d/opsi_importable_compute_entities.html.markdown | 2 +- .../docs/d/opsi_importable_compute_entity.html.markdown | 2 +- website/docs/r/opsi_host_insight.html.markdown | 2 +- 5 files changed, 7 insertions(+), 15 deletions(-) diff --git a/website/docs/d/opsi_host_insight.html.markdown b/website/docs/d/opsi_host_insight.html.markdown index 8e83a1e1cd4..1bca7219552 100644 --- a/website/docs/d/opsi_host_insight.html.markdown +++ b/website/docs/d/opsi_host_insight.html.markdown @@ -33,11 +33,8 @@ The following arguments are supported: The following attributes are exported: * `compartment_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment. -<<<<<<< ours * `compute_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Compute Instance -* `defined_tags` - Defined tags for this resource. Each key is predefined and scoped to a namespace. Example: `{"foo-namespace.bar-key": "value"}` -======= ->>>>>>> theirs +* `defined_tags` - Defined tags for this resource. Each key is predefined and scoped to a namespace. Example: `{"foo-namespace.bar-key": "value"}` * `enterprise_manager_bridge_id` - OPSI Enterprise Manager Bridge OCID * `enterprise_manager_entity_display_name` - Enterprise Manager Entity Display Name * `enterprise_manager_entity_identifier` - Enterprise Manager Entity Unique Identifier @@ -45,7 +42,6 @@ The following attributes are exported: * `enterprise_manager_entity_type` - Enterprise Manager Entity Type * `enterprise_manager_identifier` - Enterprise Manager Unique Identifier * `management_agent_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Management Agent -* `defined_tags` - Defined tags for this resource. Each key is predefined and scoped to a namespace. Example: `{"foo-namespace.bar-key": "value"}` * `entity_source` - Source of the host entity. * `exadata_insight_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Exadata insight. * `freeform_tags` - Simple key-value pair that is applied without any predefined name, type or scope. Exists for cross-compatibility only. Example: `{"bar-key": "value"}` @@ -55,7 +51,7 @@ The following attributes are exported: * `id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the host insight resource. * `lifecycle_details` - A message describing the current state in more detail. For example, can be used to provide actionable information for a resource in Failed state. * `platform_name` - Platform name. -* `platform_type` - Platform type. Supported platformType(s) for MACS-managed external host insight: [LINUX]. Supported platformType(s) for EM-managed external host insight: [LINUX, SOLARIS, SUNOS, ZLINUX]. +* `platform_type` - Platform type. Supported platformType(s) for MACS-managed external host insight: [LINUX, SOLARIS, WINDOWS]. Supported platformType(s) for MACS-managed cloud host insight: [LINUX]. Supported platformType(s) for EM-managed external host insight: [LINUX, SOLARIS, SUNOS, ZLINUX, WINDOWS]. * `platform_version` - Platform version. * `processor_count` - Processor count. This is the OCPU count for Autonomous Database and CPU core count for other database types. * `state` - The current state of the host. diff --git a/website/docs/d/opsi_host_insights.html.markdown b/website/docs/d/opsi_host_insights.html.markdown index 05f9a2eb0cd..3a56ed06ef9 100644 --- a/website/docs/d/opsi_host_insights.html.markdown +++ b/website/docs/d/opsi_host_insights.html.markdown @@ -39,13 +39,9 @@ The following arguments are supported: * `compartment_id_in_subtree` - (Optional) A flag to search all resources within a given compartment and all sub-compartments. * `enterprise_manager_bridge_id` - (Applicable when entity_source=EM_MANAGED_EXTERNAL_HOST) Unique Enterprise Manager bridge identifier * `exadata_insight_id` - (Applicable when entity_source=EM_MANAGED_EXTERNAL_HOST) [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of exadata insight resource. -<<<<<<< ours * `host_type` - (Optional) Filter by one or more host types. Possible values are CLOUD-HOST, EXTERNAL-HOST -======= -* `host_type` - (Optional) Filter by one or more host types. Possible value is EXTERNAL-HOST. ->>>>>>> theirs * `id` - (Optional) Optional list of host insight resource [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). -* `platform_type` - (Optional) Filter by one or more platform types. Supported platformType(s) for MACS-managed external host insight: [LINUX]. Supported platformType(s) for EM-managed external host insight: [LINUX, SOLARIS, SUNOS, ZLINUX]. +* `platform_type` - (Optional) Filter by one or more platform types. Supported platformType(s) for MACS-managed external host insight: [LINUX, SOLARIS, WINDOWS]. Supported platformType(s) for MACS-managed cloud host insight: [LINUX]. Supported platformType(s) for EM-managed external host insight: [LINUX, SOLARIS, SUNOS, ZLINUX, WINDOWS]. * `state` - (Optional) Lifecycle states * `status` - (Optional) Resource Status @@ -79,7 +75,7 @@ The following attributes are exported: * `lifecycle_details` - A message describing the current state in more detail. For example, can be used to provide actionable information for a resource in Failed state. * `management_agent_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Management Agent * `platform_name` - Platform name. -* `platform_type` - Platform type. Supported platformType(s) for MACS-managed external host insight: [LINUX]. Supported platformType(s) for EM-managed external host insight: [LINUX, SOLARIS, SUNOS, ZLINUX]. +* `platform_type` - Platform type. Supported platformType(s) for MACS-managed external host insight: [LINUX, SOLARIS, WINDOWS]. Supported platformType(s) for MACS-managed cloud host insight: [LINUX]. Supported platformType(s) for EM-managed external host insight: [LINUX, SOLARIS, SUNOS, ZLINUX, WINDOWS]. * `platform_version` - Platform version. * `processor_count` - Processor count. This is the OCPU count for Autonomous Database and CPU core count for other database types. * `state` - The current state of the host. diff --git a/website/docs/d/opsi_importable_compute_entities.html.markdown b/website/docs/d/opsi_importable_compute_entities.html.markdown index 338fb2a2d13..8c7e9deb4b6 100644 --- a/website/docs/d/opsi_importable_compute_entities.html.markdown +++ b/website/docs/d/opsi_importable_compute_entities.html.markdown @@ -51,5 +51,5 @@ The following attributes are exported: * `compute_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Compute Instance * `entity_source` - Source of the importable agent entity. * `host_name` - The host name. The host name is unique amongst the hosts managed by the same management agent. - * `platform_type` - Platform type. Supported platformType(s) for MACS-managed external host insight: [LINUX]. Supported platformType(s) for EM-managed external host insight: [LINUX, SOLARIS, SUNOS, ZLINUX]. + * `platform_type` - Platform type. Supported platformType(s) for MACS-managed external host insight: [LINUX, SOLARIS, WINDOWS]. Supported platformType(s) for MACS-managed cloud host insight: [LINUX]. Supported platformType(s) for EM-managed external host insight: [LINUX, SOLARIS, SUNOS, ZLINUX, WINDOWS]. diff --git a/website/docs/d/opsi_importable_compute_entity.html.markdown b/website/docs/d/opsi_importable_compute_entity.html.markdown index f5fc4212f4c..fda9713ca58 100644 --- a/website/docs/d/opsi_importable_compute_entity.html.markdown +++ b/website/docs/d/opsi_importable_compute_entity.html.markdown @@ -45,5 +45,5 @@ The following attributes are exported: * `compute_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Compute Instance * `entity_source` - Source of the importable agent entity. * `host_name` - The host name. The host name is unique amongst the hosts managed by the same management agent. - * `platform_type` - Platform type. Supported platformType(s) for MACS-managed external host insight: [LINUX]. Supported platformType(s) for EM-managed external host insight: [LINUX, SOLARIS, SUNOS, ZLINUX]. + * `platform_type` - Platform type. Supported platformType(s) for MACS-managed external host insight: [LINUX, SOLARIS, WINDOWS]. Supported platformType(s) for MACS-managed cloud host insight: [LINUX]. Supported platformType(s) for EM-managed external host insight: [LINUX, SOLARIS, SUNOS, ZLINUX, WINDOWS]. diff --git a/website/docs/r/opsi_host_insight.html.markdown b/website/docs/r/opsi_host_insight.html.markdown index b662d9ce116..395a3d92059 100644 --- a/website/docs/r/opsi_host_insight.html.markdown +++ b/website/docs/r/opsi_host_insight.html.markdown @@ -77,7 +77,7 @@ The following attributes are exported: * `lifecycle_details` - A message describing the current state in more detail. For example, can be used to provide actionable information for a resource in Failed state. * `management_agent_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Management Agent * `platform_name` - Platform name. -* `platform_type` - Platform type. Supported platformType(s) for MACS-managed external host insight: [LINUX]. Supported platformType(s) for EM-managed external host insight: [LINUX, SOLARIS, SUNOS, ZLINUX]. +* `platform_type` - Platform type. Supported platformType(s) for MACS-managed external host insight: [LINUX, SOLARIS, WINDOWS]. Supported platformType(s) for MACS-managed cloud host insight: [LINUX]. Supported platformType(s) for EM-managed external host insight: [LINUX, SOLARIS, SUNOS, ZLINUX, WINDOWS]. * `platform_version` - Platform version. * `processor_count` - Processor count. * `state` - The current state of the host. From c5b326d21a5c69c4fd1325a523f53013468048c6 Mon Sep 17 00:00:00 2001 From: Terraform Team Automation Date: Thu, 29 Sep 2022 09:52:37 +0000 Subject: [PATCH 08/17] Added - Support for BDS - Start/Stop Cluster --- .../bds_odh_instance_resource_test.go | 32 ++++- .../service/bds/bds_bds_instance_resource.go | 113 +++++++++++++++++- website/docs/r/bds_bds_instance.html.markdown | 28 ++--- 3 files changed, 149 insertions(+), 24 deletions(-) diff --git a/internal/integrationtest/bds_odh_instance_resource_test.go b/internal/integrationtest/bds_odh_instance_resource_test.go index 83a1b4ba0b3..96960904497 100644 --- a/internal/integrationtest/bds_odh_instance_resource_test.go +++ b/internal/integrationtest/bds_odh_instance_resource_test.go @@ -173,10 +173,14 @@ func TestResourceBdsOdhInstance(t *testing.T) { acctest.GenerateResourceFromRepresentationMap("oci_bds_bds_instance", "test_bds_instance", acctest.Optional, acctest.Create, bdsInstanceOdhRepresentation), "bds", "bdsInstanceOdh", t) acctest.ResourceTest(t, testAccCheckBdsBdsInstanceOdhDestroy, []resource.TestStep{ - // verify Create + // verify Create, cluster will be force stopped after create { Config: config + compartmentIdVariableStr + kmsKeyIdVariableStr + subnetIdVariableStr + BdsInstanceOdhResourceDependencies + bootstrapScriptUrlVariableStr + - acctest.GenerateResourceFromRepresentationMap("oci_bds_bds_instance", "test_bds_instance", acctest.Required, acctest.Create, bdsInstanceOdhRepresentation), + acctest.GenerateResourceFromRepresentationMap("oci_bds_bds_instance", "test_bds_instance", acctest.Required, acctest.Create, + acctest.RepresentationCopyWithNewProperties(bdsInstanceOdhRepresentation, map[string]interface{}{ + "is_force_stop_jobs": acctest.Representation{RepType: acctest.Required, Create: `true`}, + "state": acctest.Representation{RepType: acctest.Required, Create: `INACTIVE`}, + })), Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr(resourceName, "cluster_admin_password", "T3JhY2xlVGVhbVVTQSExMjM="), resource.TestCheckResourceAttrSet(resourceName, "cluster_public_key"), @@ -188,6 +192,7 @@ func TestResourceBdsOdhInstance(t *testing.T) { resource.TestCheckResourceAttrSet(resourceName, "nodes.0.node_type"), resource.TestCheckResourceAttrSet(resourceName, "nodes.0.shape"), resource.TestCheckResourceAttrSet(resourceName, "nodes.0.subnet_id"), + resource.TestCheckResourceAttr(resourceName, "state", "INACTIVE"), func(s *terraform.State) (err error) { resId, err = acctest.FromInstanceState(s, resourceName, "id") @@ -196,6 +201,29 @@ func TestResourceBdsOdhInstance(t *testing.T) { ), }, + // start the cluster + { + Config: config + compartmentIdVariableStr + kmsKeyIdVariableStr + subnetIdVariableStr + BdsInstanceOdhResourceDependencies + bootstrapScriptUrlVariableStr + + acctest.GenerateResourceFromRepresentationMap("oci_bds_bds_instance", "test_bds_instance", acctest.Required, acctest.Create, + acctest.RepresentationCopyWithNewProperties(bdsInstanceOdhRepresentation, map[string]interface{}{ + "is_force_stop_jobs": acctest.Representation{RepType: acctest.Required, Create: `true`}, + "state": acctest.Representation{RepType: acctest.Required, Create: `ACTIVE`}, + })), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr(resourceName, "cluster_admin_password", "T3JhY2xlVGVhbVVTQSExMjM="), + resource.TestCheckResourceAttrSet(resourceName, "cluster_public_key"), + resource.TestCheckResourceAttr(resourceName, "cluster_version", "ODH1"), + resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId), + resource.TestCheckResourceAttr(resourceName, "is_high_availability", "true"), + resource.TestCheckResourceAttr(resourceName, "is_secure", "true"), + resource.TestCheckResourceAttr(resourceName, "nodes.#", "9"), + resource.TestCheckResourceAttrSet(resourceName, "nodes.0.node_type"), + resource.TestCheckResourceAttrSet(resourceName, "nodes.0.shape"), + resource.TestCheckResourceAttrSet(resourceName, "nodes.0.subnet_id"), + resource.TestCheckResourceAttr(resourceName, "state", "ACTIVE"), + ), + }, + // delete before next Create { Config: config + compartmentIdVariableStr + BdsInstanceOdhResourceDependencies + bootstrapScriptUrlVariableStr, diff --git a/internal/service/bds/bds_bds_instance_resource.go b/internal/service/bds/bds_bds_instance_resource.go index 90162a52963..04873262713 100644 --- a/internal/service/bds/bds_bds_instance_resource.go +++ b/internal/service/bds/bds_bds_instance_resource.go @@ -446,7 +446,20 @@ func BdsBdsInstanceResource() *schema.Resource { }, }, }, - + "state": { + Type: schema.TypeString, + Optional: true, + Computed: true, + DiffSuppressFunc: tfresource.EqualIgnoreCaseSuppressDiff, + ValidateFunc: validation.StringInSlice([]string{ + string(oci_bds.BdsInstanceLifecycleStateInactive), + string(oci_bds.BdsInstanceLifecycleStateActive), + }, true), + }, + "is_force_stop_jobs": { + Type: schema.TypeBool, + Optional: true, + }, // Computed "cluster_details": { Type: schema.TypeList, @@ -624,10 +637,6 @@ func BdsBdsInstanceResource() *schema.Resource { Type: schema.TypeInt, Computed: true, }, - "state": { - Type: schema.TypeString, - Computed: true, - }, "time_created": { Type: schema.TypeString, Computed: true, @@ -644,6 +653,13 @@ func createBdsBdsInstance(d *schema.ResourceData, m interface{}) error { sync := &BdsBdsInstanceResourceCrud{} sync.D = d sync.Client = m.(*client.OracleClients).BdsClient() + var powerOff = false + if powerState, ok := sync.D.GetOkExists("state"); ok { + wantedPowerState := oci_bds.BdsInstanceLifecycleStateEnum(strings.ToUpper(powerState.(string))) + if wantedPowerState == oci_bds.BdsInstanceLifecycleStateInactive { + powerOff = true + } + } cloudSqlRequest := oci_bds.AddCloudSqlRequest{} cloudSql := false @@ -688,6 +704,13 @@ func createBdsBdsInstance(d *schema.ResourceData, m interface{}) error { } return tfresource.ReadResource(sync) } + + if powerOff { + if err := sync.StopBdsInstance(); err != nil { + return err + } + sync.D.Set("state", oci_bds.BdsInstanceLifecycleStateInactive) + } return nil } @@ -704,7 +727,36 @@ func updateBdsBdsInstance(d *schema.ResourceData, m interface{}) error { sync.D = d sync.Client = m.(*client.OracleClients).BdsClient() - return tfresource.UpdateResource(d, sync) + powerOn, powerOff := false, false + + if sync.D.HasChange("state") { + wantedState := strings.ToUpper(sync.D.Get("state").(string)) + if oci_bds.BdsInstanceLifecycleStateActive == oci_bds.BdsInstanceLifecycleStateEnum(wantedState) { + powerOn = true + } else if oci_bds.BdsInstanceLifecycleStateInactive == oci_bds.BdsInstanceLifecycleStateEnum(wantedState) { + powerOff = true + } + } + + if powerOn { + if err := sync.StartBdsInstance(); err != nil { + return err + } + sync.D.Set("state", oci_bds.BdsInstanceLifecycleStateActive) + } + + if err := tfresource.UpdateResource(d, sync); err != nil { + return err + } + + if powerOff { + if err := sync.StopBdsInstance(); err != nil { + return err + } + sync.D.Set("state", oci_bds.BdsInstanceLifecycleStateInactive) + } + + return nil } func deleteBdsBdsInstance(d *schema.ResourceData, m interface{}) error { @@ -1469,6 +1521,55 @@ func (s *BdsBdsInstanceResourceCrud) SetData() error { return nil } +func (s *BdsBdsInstanceResourceCrud) StartBdsInstance() error { + request := oci_bds.StartBdsInstanceRequest{} + + idTmp := s.D.Id() + request.BdsInstanceId = &idTmp + + if clusterAdminPassword, ok := s.D.GetOkExists("cluster_admin_password"); ok { + tmp := clusterAdminPassword.(string) + request.ClusterAdminPassword = &tmp + } + + request.RequestMetadata.RetryPolicy = tfresource.GetRetryPolicy(s.DisableNotFoundRetries, "bds") + + _, err := s.Client.StartBdsInstance(context.Background(), request) + if err != nil { + return err + } + + retentionPolicyFunc := func() bool { return s.Res.LifecycleState == oci_bds.BdsInstanceLifecycleStateActive } + return tfresource.WaitForResourceCondition(s, retentionPolicyFunc, s.D.Timeout(schema.TimeoutUpdate)) +} + +func (s *BdsBdsInstanceResourceCrud) StopBdsInstance() error { + request := oci_bds.StopBdsInstanceRequest{} + + idTmp := s.D.Id() + request.BdsInstanceId = &idTmp + + if clusterAdminPassword, ok := s.D.GetOkExists("cluster_admin_password"); ok { + tmp := clusterAdminPassword.(string) + request.ClusterAdminPassword = &tmp + } + + if isForceStopJobs, ok := s.D.GetOkExists("is_force_stop_jobs"); ok { + tmp := isForceStopJobs.(bool) + request.IsForceStopJobs = &tmp + } + + request.RequestMetadata.RetryPolicy = tfresource.GetRetryPolicy(s.DisableNotFoundRetries, "bds") + + _, err := s.Client.StopBdsInstance(context.Background(), request) + if err != nil { + return err + } + + retentionPolicyFunc := func() bool { return s.Res.LifecycleState == oci_bds.BdsInstanceLifecycleStateInactive } + return tfresource.WaitForResourceCondition(s, retentionPolicyFunc, s.D.Timeout(schema.TimeoutUpdate)) +} + func (s *BdsBdsInstanceResourceCrud) deleteShapeConfigIfMissingInInput(node_type string, node_map map[string]interface{}) { if _, ok := s.D.GetOkExists(node_type); ok { fieldKey := fmt.Sprintf("%s.%d.%s", node_type, 0, "shape_config") diff --git a/website/docs/r/bds_bds_instance.html.markdown b/website/docs/r/bds_bds_instance.html.markdown index 32817d11b2c..b452fdde515 100644 --- a/website/docs/r/bds_bds_instance.html.markdown +++ b/website/docs/r/bds_bds_instance.html.markdown @@ -31,12 +31,12 @@ resource "oci_bds_bds_instance" "test_bds_instance" { subnet_id = oci_core_subnet.test_subnet.id number_of_nodes = var.bds_instance_number_of_nodes #Optional - block_volume_size_in_gbs = var.bds_instance_nodes_block_volume_size_in_gbs + block_volume_size_in_gbs = var.bds_instance_nodes_block_volume_size_in_gbs shape_config { #Optional memory_in_gbs = var.bds_instance_nodes_shape_config_memory_in_gbs - nvmes = var.bds_instance_nodes_shape_config_nvmes + nvmes = var.bds_instance_nodes_shape_config_nvmes ocpus = var.bds_instance_nodes_shape_config_ocpus } } @@ -46,12 +46,12 @@ resource "oci_bds_bds_instance" "test_bds_instance" { subnet_id = oci_core_subnet.test_subnet.id number_of_nodes = var.bds_instance_number_of_nodes #Optional - block_volume_size_in_gbs = var.bds_instance_nodes_block_volume_size_in_gbs + block_volume_size_in_gbs = var.bds_instance_nodes_block_volume_size_in_gbs shape_config { #Optional memory_in_gbs = var.bds_instance_nodes_shape_config_memory_in_gbs - nvmes = var.bds_instance_nodes_shape_config_nvmes + nvmes = var.bds_instance_nodes_shape_config_nvmes ocpus = var.bds_instance_nodes_shape_config_ocpus } } @@ -61,12 +61,12 @@ resource "oci_bds_bds_instance" "test_bds_instance" { subnet_id = oci_core_subnet.test_subnet.id number_of_nodes = var.bds_instance_number_of_nodes #Optional - block_volume_size_in_gbs = var.bds_instance_nodes_block_volume_size_in_gbs + block_volume_size_in_gbs = var.bds_instance_nodes_block_volume_size_in_gbs shape_config { #Optional memory_in_gbs = var.bds_instance_nodes_shape_config_memory_in_gbs - nvmes = var.bds_instance_nodes_shape_config_nvmes + nvmes = var.bds_instance_nodes_shape_config_nvmes ocpus = var.bds_instance_nodes_shape_config_ocpus } } @@ -76,7 +76,7 @@ resource "oci_bds_bds_instance" "test_bds_instance" { subnet_id = oci_core_subnet.test_subnet.id number_of_nodes = var.bds_instance_number_of_nodes #Optional - block_volume_size_in_gbs = var.bds_instance_nodes_block_volume_size_in_gbs + block_volume_size_in_gbs = var.bds_instance_nodes_block_volume_size_in_gbs shape_config { #Optional @@ -124,15 +124,11 @@ The following arguments are supported: * `network_config` - (Optional) Additional configuration of the user's network. * `cidr_block` - (Optional) The CIDR IP address block of the VCN. * `is_nat_gateway_required` - (Optional) A boolean flag whether to configure a NAT gateway. -* `nodes` - (Required) The list of nodes in the Big Data Service cluster. - * `block_volume_size_in_gbs` - (Required) The size of block volume in GB to be attached to a given node. All the details needed for attaching the block volume are managed by service itself. - * `node_type` - (Required) The Big Data Service cluster node type. - * `shape` - (Required) (Updatable) Shape of the node. - * `shape_config` - (Optional) The shape configuration requested for the node. - * `memory_in_gbs` - (Optional) The total amount of memory available to the node, in gigabytes. - * `nvmes` - (Optional) The number of NVMe drives to be used for storage. A single drive has 6.8 TB available. - * `ocpus` - (Optional) The total number of OCPUs available to the node. - * `subnet_id` - (Required) The OCID of the subnet in which the node will be created. +* `state` - (Optional) (Updatable) The target state for the Bds Instance. Could be set to `ACTIVE` or `INACTIVE` to start/stop the bds instance. +* `is_force_stop_jobs` - (Optional) (Updatable) When setting state as `INACTIVE` for stopping a cluster, setting this flag to true forcefully stops the bds instance. +* `network_config` - (Optional) Additional configuration of customer's network. + * `cidr_block` - (Required) The CIDR IP address block of the VCN. + * `is_nat_gateway_required` - (Required) A boolean flag whether to configure a NAT gateway. * `master_node` - (Required) The master node in the BDS instance * `block_volume_size_in_gbs` - (Optional) The size of block volume in GB that needs to be attached to a given node. All the necessary details needed for attachment are managed by service itself. * `number_of_nodes` - (Required) The amount of master nodes should be created. From 46397b9d23c74063a076dc991009bd2842f99a6c Mon Sep 17 00:00:00 2001 From: Terraform Team Automation Date: Fri, 30 Sep 2022 07:07:40 +0000 Subject: [PATCH 09/17] Added - resource discovery for private DNS zones and rrsets --- .../dns_rrset_resource_test.go | 108 +++++++++++++----- .../export_test_helper_test.go | 2 +- .../resourcediscovery/export_test_helpers.go | 5 +- internal/service/dns/dns_export.go | 4 +- 4 files changed, 88 insertions(+), 31 deletions(-) diff --git a/internal/integrationtest/dns_rrset_resource_test.go b/internal/integrationtest/dns_rrset_resource_test.go index 14832cb462f..3e770cf7342 100644 --- a/internal/integrationtest/dns_rrset_resource_test.go +++ b/internal/integrationtest/dns_rrset_resource_test.go @@ -6,6 +6,7 @@ import ( "testing" "github.com/oracle/terraform-provider-oci/internal/acctest" + tf_export "github.com/oracle/terraform-provider-oci/internal/commonexport" "github.com/oracle/terraform-provider-oci/internal/resourcediscovery" "github.com/oracle/terraform-provider-oci/internal/utils" @@ -151,6 +152,15 @@ var ( tenancy_id = "${var.tenancy_ocid}" } ` + acctest.GenerateResourceFromRepresentationMap("oci_dns_zone", "test_zone", acctest.Required, acctest.Create, acctest.RepresentationCopyWithRemovedProperties(acctest.GetUpdatedRepresentationCopy("name", acctest.Representation{RepType: acctest.Required, Create: dnsDomainName}, DnsDnsZoneRepresentationPrimary), []string{"scope", "view_id"})) + + RrsetResourceDependenciesMultipleViews = ` + data "oci_identity_tenancy" "test_tenancy" { + tenancy_id = "${var.tenancy_ocid}" + } + ` + acctest.GenerateResourceFromRepresentationMap("oci_dns_view", "test_view_1", acctest.Required, acctest.Create, DnsViewRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_dns_view", "test_view_2", acctest.Required, acctest.Create, DnsViewRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_dns_zone", "test_zone_1", acctest.Required, acctest.Create, acctest.RepresentationCopyWithNewProperties(DnsDnsZoneRepresentationPrimary, map[string]interface{}{"view_id": "oci_dns_view.test_view_1.id"})) + + acctest.GenerateResourceFromRepresentationMap("oci_dns_zone", "test_zone_2", acctest.Required, acctest.Create, acctest.RepresentationCopyWithNewProperties(DnsDnsZoneRepresentationPrimary, map[string]interface{}{"view_id": "oci_dns_view.test_view_2.id"})) ) // issue-routing-tag: dns/default @@ -189,12 +199,11 @@ func TestResourceDnsRrsetResource_basic(t *testing.T) { func(s *terraform.State) (err error) { resId, err = acctest.FromInstanceState(s, resourceName, "id") - // Resource discovery is not supported for Rrset resources created using scope field - //if isEnableExportCompartment, _ := strconv.ParseBool(utils.GetEnvSettingWithDefault("enable_export_compartment", "true")); isEnableExportCompartment { - // if errExport := resourcediscovery.TestExportCompartmentWithResourceName(&resId, &compartmentId, resourceName); errExport != nil { - // return errExport - // } - //} + if isEnableExportCompartment, _ := strconv.ParseBool(utils.GetEnvSettingWithDefault("enable_export_compartment", "true")); isEnableExportCompartment { + if errExport := resourcediscovery.TestExportCompartmentWithResourceName(&resId, &compartmentId, resourceName); errExport != nil { + return errExport + } + } return err }, ), @@ -245,11 +254,11 @@ func TestResourceDnsRrsetResource_basic(t *testing.T) { func(s *terraform.State) (err error) { resId, err = acctest.FromInstanceState(s, resourceName, "id") - //if isEnableExportCompartment, _ := strconv.ParseBool(utils.GetEnvSettingWithDefault("enable_export_compartment", "true")); isEnableExportCompartment { - // if errExport := resourcediscovery.TestExportCompartmentWithResourceName(&resId, &compartmentId, resourceName); errExport != nil { - // return errExport - // } - //} + if isEnableExportCompartment, _ := strconv.ParseBool(utils.GetEnvSettingWithDefault("enable_export_compartment", "true")); isEnableExportCompartment { + if errExport := resourcediscovery.TestExportCompartmentWithResourceName(&resId, &compartmentId, resourceName); errExport != nil { + return errExport + } + } return err }, ), @@ -267,11 +276,11 @@ func TestResourceDnsRrsetResource_basic(t *testing.T) { func(s *terraform.State) (err error) { resId, err = acctest.FromInstanceState(s, resourceName, "id") - //if isEnableExportCompartment, _ := strconv.ParseBool(utils.GetEnvSettingWithDefault("enable_export_compartment", "true")); isEnableExportCompartment { - // if errExport := resourcediscovery.TestExportCompartmentWithResourceName(&resId, &compartmentId, resourceName); errExport != nil { - // return errExport - // } - //} + if isEnableExportCompartment, _ := strconv.ParseBool(utils.GetEnvSettingWithDefault("enable_export_compartment", "true")); isEnableExportCompartment { + if errExport := resourcediscovery.TestExportCompartmentWithResourceName(&resId, &compartmentId, resourceName); errExport != nil { + return errExport + } + } return err }, ), @@ -293,11 +302,11 @@ func TestResourceDnsRrsetResource_basic(t *testing.T) { func(s *terraform.State) (err error) { resId, err = acctest.FromInstanceState(s, resourceName, "id") - //if isEnableExportCompartment, _ := strconv.ParseBool(utils.GetEnvSettingWithDefault("enable_export_compartment", "true")); isEnableExportCompartment { - // if errExport := resourcediscovery.TestExportCompartmentWithResourceName(&resId, &compartmentId, resourceName); errExport != nil { - // return errExport - // } - //} + if isEnableExportCompartment, _ := strconv.ParseBool(utils.GetEnvSettingWithDefault("enable_export_compartment", "true")); isEnableExportCompartment { + if errExport := resourcediscovery.TestExportCompartmentWithResourceName(&resId, &compartmentId, resourceName); errExport != nil { + return errExport + } + } return err }, ), @@ -319,11 +328,11 @@ func TestResourceDnsRrsetResource_basic(t *testing.T) { func(s *terraform.State) (err error) { resId, err = acctest.FromInstanceState(s, resourceName, "id") - //if isEnableExportCompartment, _ := strconv.ParseBool(utils.GetEnvSettingWithDefault("enable_export_compartment", "true")); isEnableExportCompartment { - // if errExport := resourcediscovery.TestExportCompartmentWithResourceName(&resId, &compartmentId, resourceName); errExport != nil { - // return errExport - // } - //} + if isEnableExportCompartment, _ := strconv.ParseBool(utils.GetEnvSettingWithDefault("enable_export_compartment", "true")); isEnableExportCompartment { + if errExport := resourcediscovery.TestExportCompartmentWithResourceName(&resId, &compartmentId, resourceName); errExport != nil { + return errExport + } + } return err }, ), @@ -358,6 +367,53 @@ func TestResourceDnsRrsetResource_basic(t *testing.T) { }) } +// issue-routing-tag: dns/default +func TestResourceDnsRrsetResource_multipleViews(t *testing.T) { + httpreplay.SetScenario("TestResourceDnsRrsetResource_multipleViews") + defer httpreplay.SaveScenario() + + config := acctest.ProviderTestConfig() + + compartmentId := utils.GetEnvSettingWithBlankDefault("compartment_ocid") + compartmentIdVariableStr := fmt.Sprintf("variable \"compartment_id\" { default = \"%s\" }\n", compartmentId) + + resourceName1 := "oci_dns_rrset.test_rrset_1" + resourceName2 := "oci_dns_rrset.test_rrset_2" + + acctest.ResourceTest(t, nil, []resource.TestStep{ + // verify Create + { + Config: config + compartmentIdVariableStr + DnsRrsetResourceDependencies + + acctest.GenerateResourceFromRepresentationMap("oci_dns_rrset", "test_rrset_1", acctest.Optional, acctest.Create, + acctest.RepresentationCopyWithNewProperties(DnsRrsetRepresentation, map[string]interface{}{"zoneId": "${oci_dns_zone.test_zone1}"})) + + acctest.GenerateResourceFromRepresentationMap("oci_dns_rrset", "test_rrset_2", acctest.Optional, acctest.Create, + acctest.RepresentationCopyWithNewProperties(DnsRrsetRepresentation, map[string]interface{}{"zoneId": "${oci_dns_zone.test_zone2}"})), + Check: acctest.ComposeAggregateTestCheckFuncWrapper( + resource.TestCheckResourceAttr(resourceName1, "compartment_id", compartmentId), + resource.TestCheckResourceAttr(resourceName1, "domain", dnsDomainName), + resource.TestCheckResourceAttr(resourceName1, "items.#", "1"), + resource.TestCheckResourceAttr(resourceName1, "rtype", "A"), + resource.TestCheckResourceAttr(resourceName2, "compartment_id", compartmentId), + resource.TestCheckResourceAttr(resourceName2, "domain", dnsDomainName), + resource.TestCheckResourceAttr(resourceName2, "items.#", "1"), + resource.TestCheckResourceAttr(resourceName2, "rtype", "A"), + + func(s *terraform.State) (err error) { + if isEnableExportCompartment, _ := strconv.ParseBool(utils.GetEnvSettingWithDefault("enable_export_compartment", "true")); isEnableExportCompartment { + var exportCommandArgs tf_export.ExportCommandArgs + exportCommandArgs.GenerateState = true + exportCommandArgs.Services = []string{"dns"} + if errExport := resourcediscovery.TestExportCompartment(&compartmentId, &exportCommandArgs); errExport != nil { + return errExport + } + } + return err + }, + ), + }, + }) +} + // issue-routing-tag: dns/default func TestResourceDnsRrsetResource_default(t *testing.T) { httpreplay.SetScenario("TestResourceDnsRrsetResource_default") diff --git a/internal/resourcediscovery/export_test_helper_test.go b/internal/resourcediscovery/export_test_helper_test.go index 92015fb7706..f964200bcbe 100644 --- a/internal/resourcediscovery/export_test_helper_test.go +++ b/internal/resourcediscovery/export_test_helper_test.go @@ -164,7 +164,7 @@ func TestUnitExportCompartment(t *testing.T) { for _, test := range tests { t.Logf("Running %s", test.name) test.mockFunc() - res := testExportCompartment(&compartmentId, &exportCommandArgs) + res := TestExportCompartment(&compartmentId, &exportCommandArgs) if test.name != "Test response with no resource name, empty go path" && test.name != "Test response with new terraform struct" && res != nil { t.Errorf("Output %v not equal to expected %v", res, test.expected) } else if test.name == "Test response with new terraform struct" { diff --git a/internal/resourcediscovery/export_test_helpers.go b/internal/resourcediscovery/export_test_helpers.go index 423d4b710c7..ade9285d71a 100644 --- a/internal/resourcediscovery/export_test_helpers.go +++ b/internal/resourcediscovery/export_test_helpers.go @@ -20,7 +20,7 @@ import ( var ( tfinstallVar = tfinstall.Find - testExportCompartmentVar = testExportCompartment + testExportCompartmentVar = TestExportCompartment isResourceSupportImportVar = isResourceSupportImport newTerraformVar = tfexec.NewTerraform RunExportCommandVar = RunExportCommand @@ -86,7 +86,8 @@ func TestExportCompartmentWithResourceName(id *string, compartmentId *string, re log.Printf("[INFO] ===> Compartment export doesn't support this resource %v yet", resourceName) return nil } -func testExportCompartment(compartmentId *string, exportCommandArgs *tf_export.ExportCommandArgs) error { + +func TestExportCompartment(compartmentId *string, exportCommandArgs *tf_export.ExportCommandArgs) error { // checking for provider_bin_path here because parent func will also be // called for resources that do not support RD if providerBinPath := getEnvSettingWithBlankDefaultVar("provider_bin_path"); providerBinPath == "" { diff --git a/internal/service/dns/dns_export.go b/internal/service/dns/dns_export.go index 930011ad6e1..65bcd11625a 100644 --- a/internal/service/dns/dns_export.go +++ b/internal/service/dns/dns_export.go @@ -111,7 +111,7 @@ func findDnsRrset(ctx *tf_export.ResourceDiscoveryContext, tfMeta *tf_export.Ter ctx.AddErrorToList(rdError) continue } - resource.TerraformName = fmt.Sprintf("%s_%s_%s", parent.Parent.TerraformName, strings.Replace(domain, ".", "_", -1), rtype) + resource.TerraformName = fmt.Sprintf("%s_%s_%s", parent.TerraformName, strings.Replace(strings.Replace(domain, "-", "--", -1), ".", "-", -1), rtype) resource.RawResource = rrset resource.Parent = parent @@ -143,7 +143,7 @@ func findDnsZones(ctx *tf_export.ResourceDiscoveryContext, tfMeta *tf_export.Ter // Setting the "scope" field to the special value "ALL" will // result in terraform fetching both global and private zones // when populating the "oci_dns_zones" data source - //tfMeta.DatasourceQueryParams["scope"] = "'ALL'" + tfMeta.DatasourceQueryParams["scope"] = "'ALL'" return tf_export.FindResourcesGeneric(ctx, tfMeta, parent, resourceGraph) } From c082ffba099f7fae8650b1eb79daa083dbdf28bd Mon Sep 17 00:00:00 2001 From: Terraform Team Automation Date: Fri, 30 Sep 2022 07:30:35 +0000 Subject: [PATCH 10/17] Bug Fix - Support for repeated Deployments on each apply --- .../wait_deploy_stage/wait_deploy_stage.tf | 13 +++++++------ .../integrationtest/devops_deployment_test.go | 15 ++++++++------- .../service/devops/devops_deployment_resource.go | 15 +++++++++++++++ website/docs/r/devops_deployment.html.markdown | 6 ++++-- 4 files changed, 34 insertions(+), 15 deletions(-) diff --git a/examples/devops/deployment_service/wait_deploy_stage/wait_deploy_stage.tf b/examples/devops/deployment_service/wait_deploy_stage/wait_deploy_stage.tf index 20fbd419c4d..c1a9a17a187 100644 --- a/examples/devops/deployment_service/wait_deploy_stage/wait_deploy_stage.tf +++ b/examples/devops/deployment_service/wait_deploy_stage/wait_deploy_stage.tf @@ -20,7 +20,7 @@ variable "region" { } provider "oci" { - #version = "4.62.0" + #version = "4.92.0" region = var.region tenancy_ocid = var.tenancy_ocid user_ocid = var.user_ocid @@ -58,8 +58,8 @@ resource "oci_devops_deploy_pipeline" "test_deploy_pipeline" { #Required project_id = oci_devops_project.test_project.id - description = "description" - display_name = "displayName" + description = "description" + display_name = "displayName" } resource "oci_devops_deploy_stage" "test_wait_deploy_stage" { @@ -74,8 +74,8 @@ resource "oci_devops_deploy_stage" "test_wait_deploy_stage" { } deploy_stage_type = "WAIT" - description = "description" - display_name = "displayName" + description = "description" + display_name = "displayName" wait_criteria { #Required wait_duration = "PT5S" @@ -89,5 +89,6 @@ resource "oci_devops_deployment" "test_deployment" { deployment_type = "PIPELINE_DEPLOYMENT" #Optional - display_name = "test_deployment" + display_name = "test_deployment" + trigger_new_devops_deployment = false } \ No newline at end of file diff --git a/internal/integrationtest/devops_deployment_test.go b/internal/integrationtest/devops_deployment_test.go index e7fcbd26e56..d6c95932ba9 100644 --- a/internal/integrationtest/devops_deployment_test.go +++ b/internal/integrationtest/devops_deployment_test.go @@ -42,13 +42,14 @@ var ( } DevopsDeploymentRepresentation = map[string]interface{}{ - "deploy_pipeline_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_devops_deploy_pipeline.test_deploy_pipeline.id}`}, - "deployment_type": acctest.Representation{RepType: acctest.Required, Create: `PIPELINE_DEPLOYMENT`}, - "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")}`}, - "deployment_arguments": acctest.RepresentationGroup{RepType: acctest.Optional, Group: DevopsDeploymentDeploymentArgumentsRepresentation}, - "display_name": acctest.Representation{RepType: acctest.Optional, Create: `displayName`}, - "freeform_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"bar-key": "value"}}, - "lifecycle": acctest.RepresentationGroup{RepType: acctest.Required, Group: ignoreExecutionProgressDifferencesRepresentation}, + "deploy_pipeline_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_devops_deploy_pipeline.test_deploy_pipeline.id}`}, + "deployment_type": acctest.Representation{RepType: acctest.Required, Create: `PIPELINE_DEPLOYMENT`}, + "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")}`}, + "deployment_arguments": acctest.RepresentationGroup{RepType: acctest.Optional, Group: DevopsDeploymentDeploymentArgumentsRepresentation}, + "display_name": acctest.Representation{RepType: acctest.Optional, Create: `displayName`}, + "trigger_new_devops_deployment": acctest.Representation{RepType: acctest.Optional, Create: `false`}, + "freeform_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"bar-key": "value"}}, + "lifecycle": acctest.RepresentationGroup{RepType: acctest.Required, Group: ignoreExecutionProgressDifferencesRepresentation}, } DevopsDeploymentDeploymentArgumentsRepresentation = map[string]interface{}{ "items": acctest.RepresentationGroup{RepType: acctest.Optional, Group: DevopsDeploymentDeploymentArgumentsItemsRepresentation}, diff --git a/internal/service/devops/devops_deployment_resource.go b/internal/service/devops/devops_deployment_resource.go index bf1fb9aff49..719b1a6c546 100644 --- a/internal/service/devops/devops_deployment_resource.go +++ b/internal/service/devops/devops_deployment_resource.go @@ -173,6 +173,12 @@ func DevopsDeploymentResource() *schema.Resource { Computed: true, ForceNew: true, }, + "trigger_new_devops_deployment": { + Type: schema.TypeBool, + Optional: true, + Default: false, + ForceNew: true, + }, // Computed "compartment_id": { @@ -558,6 +564,8 @@ func (s *DevopsDeploymentResourceCrud) SetData() error { if v.TimeUpdated != nil { s.D.Set("time_updated", v.TimeUpdated.String()) } + + s.D.Set("trigger_new_devops_deployment", false) case oci_devops.DeployPipelineRedeployment: s.D.Set("deployment_type", "PIPELINE_REDEPLOYMENT") @@ -634,6 +642,8 @@ func (s *DevopsDeploymentResourceCrud) SetData() error { if v.TimeUpdated != nil { s.D.Set("time_updated", v.TimeUpdated.String()) } + + s.D.Set("trigger_new_devops_deployment", false) case oci_devops.SingleDeployStageDeployment: s.D.Set("deployment_type", "SINGLE_STAGE_DEPLOYMENT") @@ -710,6 +720,8 @@ func (s *DevopsDeploymentResourceCrud) SetData() error { if v.TimeUpdated != nil { s.D.Set("time_updated", v.TimeUpdated.String()) } + + s.D.Set("trigger_new_devops_deployment", false) case oci_devops.SingleDeployStageRedeployment: s.D.Set("deployment_type", "SINGLE_STAGE_REDEPLOYMENT") @@ -790,10 +802,13 @@ func (s *DevopsDeploymentResourceCrud) SetData() error { if v.TimeUpdated != nil { s.D.Set("time_updated", v.TimeUpdated.String()) } + + s.D.Set("trigger_new_devops_deployment", false) default: log.Printf("[WARN] Received 'deployment_type' of unknown type %v", *s.Res) return nil } + return nil } diff --git a/website/docs/r/devops_deployment.html.markdown b/website/docs/r/devops_deployment.html.markdown index 4b79ce70e43..aba94e93fe6 100644 --- a/website/docs/r/devops_deployment.html.markdown +++ b/website/docs/r/devops_deployment.html.markdown @@ -47,6 +47,7 @@ resource "oci_devops_deployment" "test_deployment" { display_name = var.deployment_display_name freeform_tags = {"bar-key"= "value"} previous_deployment_id = oci_devops_deployment.test_deployment.id + trigger_new_devops_deployment = var.deployment_trigger_new_devops_deployment_bool } ``` @@ -70,10 +71,11 @@ The following arguments are supported: * `display_name` - (Optional) (Updatable) Deployment display name. Avoid entering confidential information. * `freeform_tags` - (Optional) (Updatable) Simple key-value pair that is applied without any predefined name, type or scope. Exists for cross-compatibility only. See [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"bar-key": "value"}` * `previous_deployment_id` - (Required when deployment_type=PIPELINE_REDEPLOYMENT | SINGLE_STAGE_REDEPLOYMENT) Specifies the OCID of the previous deployment to be redeployed. - +* `trigger_new_devops_deployment` - (Optional) A boolean specifying if a new deployment should be created on every apply. As long as this value is set to true in the config, every apply will trigger a new deployment to be created. The existing deployment resource will be replaced with the new one in the state file (deployment resources are never deleted, they persist as a store of records, but your state file will only track the latest one created with this resource block). ** IMPORTANT ** -Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values +Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values. Additionally, while `trigger_new_devops_deployment` +is set true each apply will force the destruction and recreation of the resource with the new property values. ## Attributes Reference From ba759053754f0495891709402b3cdc8674d04682 Mon Sep 17 00:00:00 2001 From: Terraform Team Automation Date: Fri, 30 Sep 2022 08:31:37 +0000 Subject: [PATCH 11/17] Added - Support for FSS : Support for cross region replication --- examples/storage/fss/data_sources.tf | 23 + .../file_storage_file_system_test.go | 15 +- .../file_storage_mount_target_test.go | 1 + .../file_storage_replication_target_test.go | 198 +++++++++ .../file_storage_replication_test.go | 394 +++++++++++++++++ .../file_storage_snapshot_test.go | 5 + .../file_storage/file_storage_export.go | 11 + .../file_storage_file_system_resource.go | 16 + .../file_storage_replication_data_source.go | 130 ++++++ .../file_storage_replication_resource.go | 406 ++++++++++++++++++ ..._storage_replication_target_data_source.go | 192 +++++++++ ...storage_replication_targets_data_source.go | 247 +++++++++++ .../file_storage_replications_data_source.go | 187 ++++++++ .../file_storage_snapshot_data_source.go | 6 + .../file_storage_snapshot_resource.go | 14 + .../file_storage_snapshots_data_source.go | 6 + .../file_storage/register_datasource.go | 4 + .../service/file_storage/register_resource.go | 1 + .../d/file_storage_file_systems.html.markdown | 14 +- .../d/file_storage_replication.html.markdown | 52 +++ ...e_storage_replication_target.html.markdown | 51 +++ ..._storage_replication_targets.html.markdown | 68 +++ .../d/file_storage_replications.html.markdown | 71 +++ .../d/file_storage_snapshot.html.markdown | 13 +- .../d/file_storage_snapshots.html.markdown | 13 +- .../guides/resource_discovery.html.markdown | 1 + .../r/file_storage_file_system.html.markdown | 14 +- .../r/file_storage_mount_target.html.markdown | 12 +- .../r/file_storage_replication.html.markdown | 112 +++++ .../r/file_storage_snapshot.html.markdown | 13 +- 30 files changed, 2264 insertions(+), 26 deletions(-) create mode 100644 internal/integrationtest/file_storage_replication_target_test.go create mode 100644 internal/integrationtest/file_storage_replication_test.go create mode 100644 internal/service/file_storage/file_storage_replication_data_source.go create mode 100644 internal/service/file_storage/file_storage_replication_resource.go create mode 100644 internal/service/file_storage/file_storage_replication_target_data_source.go create mode 100644 internal/service/file_storage/file_storage_replication_targets_data_source.go create mode 100644 internal/service/file_storage/file_storage_replications_data_source.go create mode 100644 website/docs/d/file_storage_replication.html.markdown create mode 100644 website/docs/d/file_storage_replication_target.html.markdown create mode 100644 website/docs/d/file_storage_replication_targets.html.markdown create mode 100644 website/docs/d/file_storage_replications.html.markdown create mode 100644 website/docs/r/file_storage_replication.html.markdown diff --git a/examples/storage/fss/data_sources.tf b/examples/storage/fss/data_sources.tf index 37d415947db..8cb24e46d08 100644 --- a/examples/storage/fss/data_sources.tf +++ b/examples/storage/fss/data_sources.tf @@ -84,3 +84,26 @@ data "oci_core_private_ips" "ip_mount_target1" { } } +# Gets a list of replications in a compartment and availability domain +data "oci_file_storage_replications" "test_replications" { + #Required + availability_domain = data.oci_identity_availability_domain.ad.name + compartment_id = var.compartment_ocid + + #Optional + #display_name = var.replication_display_name + #file_system_id = oci_file_storage_file_system.test_file_system.id + #id = var.replication_id + #state = var.replication_state +} + +data "oci_file_storage_replication_targets" "test_replication_targets" { + #Required + availability_domain = data.oci_identity_availability_domain.ad.name + compartment_id = var.compartment_ocid + + #Optional + #display_name = var.replication_target_display_name + #id = var.replication_target_id + #state = var.replication_target_state +} diff --git a/internal/integrationtest/file_storage_file_system_test.go b/internal/integrationtest/file_storage_file_system_test.go index 563e25dcb23..f257b644d5e 100644 --- a/internal/integrationtest/file_storage_file_system_test.go +++ b/internal/integrationtest/file_storage_file_system_test.go @@ -51,14 +51,25 @@ var ( "display_name": acctest.Representation{RepType: acctest.Optional, Create: `media-files-1`, Update: `displayName2`}, "freeform_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"Department": "Finance"}, Update: map[string]string{"Department": "Accounting"}}, "source_snapshot_id": acctest.Representation{RepType: acctest.Optional, Create: `${oci_file_storage_snapshot.test_snapshot.id}`}, - "kms_key_id": acctest.Representation{RepType: acctest.Optional, Create: `${var.kms_key_id_for_create}`, Update: `${var.kms_key_id_for_update}`}, + "kms_key_id": acctest.Representation{RepType: acctest.Optional, Create: `${oci_kms_key.kms_key_id_for_create.id}`, Update: `${oci_kms_key.kms_key_id_for_update.id}`}, + "lifecycle": acctest.RepresentationGroup{RepType: acctest.Required, Group: ignoreDefinedTagsDifferencesRepresentation}, } FileStorageFileSystemResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_file_storage_file_system", "test_file_system", acctest.Required, acctest.Create, FileStorageFileSystemRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_file_storage_snapshot", "test_snapshot", acctest.Required, acctest.Create, FileStorageSnapshotRepresentation) + AvailabilityDomainConfig + DefinedTagsDependencies + - KeyResourceDependencyConfig + kmsKeyIdCreateVariableStr + kmsKeyIdUpdateVariableStr + acctest.GenerateResourceFromRepresentationMap("oci_kms_vault", "test_kms_vault", acctest.Required, acctest.Create, acctest.RepresentationCopyWithNewProperties(KmsVaultRepresentation, map[string]interface{}{ + "vault_type": acctest.Representation{RepType: acctest.Required, Create: `DEFAULT`}, + })) + + acctest.GenerateResourceFromRepresentationMap("oci_kms_key", "kms_key_id_for_create", acctest.Optional, acctest.Update, acctest.RepresentationCopyWithNewProperties(KmsKeyRepresentation, map[string]interface{}{ + "management_endpoint": acctest.Representation{RepType: acctest.Required, Create: `${oci_kms_vault.test_kms_vault.management_endpoint}`}, + "desired_state": acctest.Representation{RepType: acctest.Optional, Create: `ENABLED`}, + })) + + acctest.GenerateResourceFromRepresentationMap("oci_kms_key", "kms_key_id_for_update", acctest.Optional, acctest.Update, acctest.RepresentationCopyWithNewProperties(KmsKeyRepresentation, map[string]interface{}{ + "management_endpoint": acctest.Representation{RepType: acctest.Required, Create: `${oci_kms_vault.test_kms_vault.management_endpoint}`}, + "desired_state": acctest.Representation{RepType: acctest.Optional, Create: `ENABLED`}, + })) ) // issue-routing-tag: file_storage/default diff --git a/internal/integrationtest/file_storage_mount_target_test.go b/internal/integrationtest/file_storage_mount_target_test.go index ad405d8b395..1d963f96a31 100644 --- a/internal/integrationtest/file_storage_mount_target_test.go +++ b/internal/integrationtest/file_storage_mount_target_test.go @@ -52,6 +52,7 @@ var ( "hostname_label": acctest.Representation{RepType: acctest.Optional, Create: `hostnamelabel`}, "ip_address": acctest.Representation{RepType: acctest.Optional, Create: `10.0.0.5`}, "nsg_ids": acctest.Representation{RepType: acctest.Optional, Create: []string{`${oci_core_network_security_group.test_network_security_group.id}`}, Update: []string{}}, + "lifecycle": acctest.RepresentationGroup{RepType: acctest.Required, Group: ignoreDefinedTagsDifferencesRepresentation}, } FileStorageMountTargetResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_core_network_security_group", "test_network_security_group", acctest.Required, acctest.Create, CoreNetworkSecurityGroupRepresentation) + diff --git a/internal/integrationtest/file_storage_replication_target_test.go b/internal/integrationtest/file_storage_replication_target_test.go new file mode 100644 index 00000000000..b2dad0e080f --- /dev/null +++ b/internal/integrationtest/file_storage_replication_target_test.go @@ -0,0 +1,198 @@ +// Copyright (c) 2017, 2021, Oracle and/or its affiliates. All rights reserved. +// Licensed under the Mozilla Public License v2.0 + +// This test requires long-lived replication Target resource to do the LIST and get operation on replicationTarget resource + +package integrationtest + +import ( + "context" + "fmt" + "testing" + "time" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/oracle/oci-go-sdk/v65/common" + + oci_file_storage "github.com/oracle/oci-go-sdk/v65/filestorage" + + tf_client "github.com/oracle/terraform-provider-oci/internal/client" + + "github.com/oracle/terraform-provider-oci/httpreplay" + "github.com/oracle/terraform-provider-oci/internal/acctest" + "github.com/oracle/terraform-provider-oci/internal/tfresource" + "github.com/oracle/terraform-provider-oci/internal/utils" +) + +var ( + FileStorageReplicationTargetSingularDataSourceRepresentation = map[string]interface{}{ + "replication_target_id": acctest.Representation{RepType: acctest.Required, Create: `${var.replication_target_id}`}, + } + + FileStorageReplicationTargetDataSourceRepresentation = map[string]interface{}{ + "availability_domain": acctest.Representation{RepType: acctest.Required, Create: `${data.oci_identity_availability_domains.test_availability_domains.availability_domains.0.name}`}, + "compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id_for_static_resource}`}, + "display_name": acctest.Representation{RepType: acctest.Optional, Create: `replication-terraform-test`}, + "id": acctest.Representation{RepType: acctest.Optional, Create: `${var.replication_target_id}`}, + "state": acctest.Representation{RepType: acctest.Optional, Create: `ACTIVE`}, + } + + FileStorageReplicationTargetResourceConfig = AvailabilityDomainConfig +) + +// issue-routing-tag: file_storage/default +func TestFileStorageReplicationTargetResource_basic(t *testing.T) { + httpreplay.SetScenario("TestFileStorageReplicationTargetResource_basic") + defer httpreplay.SaveScenario() + + config := acctest.ProviderTestConfig() + + replicationTargetId := utils.GetEnvSettingWithBlankDefault("replication_target_id") + replicationTargetIdVariableStr := fmt.Sprintf("variable \"replication_target_id\" { default = \"%s\" }\n", replicationTargetId) + + compartmentId := utils.GetEnvSettingWithBlankDefault("compartment_id_for_static_resource") + compartmentIdVariableStr := fmt.Sprintf("variable \"compartment_id_for_static_resource\" { default = \"%s\" }\n", compartmentId) + + datasourceName := "data.oci_file_storage_replication_targets.test_replication_targets" + singularDatasourceName := "data.oci_file_storage_replication_target.test_replication_target" + + acctest.SaveConfigContent("", "", "", t) + + acctest.ResourceTest(t, nil, []resource.TestStep{ + // verify datasource + { + Config: config + + acctest.GenerateDataSourceFromRepresentationMap("oci_file_storage_replication_targets", "test_replication_targets", acctest.Required, acctest.Create, FileStorageReplicationTargetDataSourceRepresentation) + + compartmentIdVariableStr + FileStorageReplicationTargetResourceConfig + replicationTargetIdVariableStr, + Check: acctest.ComposeAggregateTestCheckFuncWrapper( + resource.TestCheckResourceAttrSet(datasourceName, "availability_domain"), + resource.TestCheckResourceAttr(datasourceName, "compartment_id", compartmentId), + resource.TestCheckResourceAttrSet(datasourceName, "id"), + + resource.TestCheckResourceAttrSet(datasourceName, "replication_targets.#"), + resource.TestCheckResourceAttrSet(datasourceName, "replication_targets.0.availability_domain"), + resource.TestCheckResourceAttrSet(datasourceName, "replication_targets.0.compartment_id"), + resource.TestCheckResourceAttr(datasourceName, "replication_targets.0.display_name", "replication-terraform-test"), + resource.TestCheckResourceAttrSet(datasourceName, "replication_targets.0.id"), + resource.TestCheckResourceAttrSet(datasourceName, "replication_targets.0.recovery_point_time"), + resource.TestCheckResourceAttr(datasourceName, "replication_targets.0.state", "ACTIVE"), + resource.TestCheckResourceAttrSet(datasourceName, "replication_targets.0.time_created"), + ), + }, + // verify singular datasource + { + Config: config + + acctest.GenerateDataSourceFromRepresentationMap("oci_file_storage_replication_target", "test_replication_target", acctest.Required, acctest.Create, FileStorageReplicationTargetSingularDataSourceRepresentation) + + compartmentIdVariableStr + FileStorageReplicationTargetResourceConfig + replicationTargetIdVariableStr, + Check: acctest.ComposeAggregateTestCheckFuncWrapper( + resource.TestCheckResourceAttrSet(singularDatasourceName, "replication_target_id"), + + resource.TestCheckResourceAttrSet(singularDatasourceName, "availability_domain"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "compartment_id"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "delta_progress"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "delta_status"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "display_name"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "id"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "last_snapshot_id"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "recovery_point_time"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "replication_id"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "source_id"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "state"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "target_id"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "time_created"), + ), + }, + }) +} + +func init() { + if acctest.DependencyGraph == nil { + acctest.InitDependencyGraph() + } + if !acctest.InSweeperExcludeList("FileStorageReplicationTarget") { + resource.AddTestSweepers("FileStorageReplicationTarget", &resource.Sweeper{ + Name: "FileStorageReplicationTarget", + Dependencies: acctest.DependencyGraph["replicationTarget"], + F: sweepFileStorageReplicationTargetResource, + }) + } +} + +func sweepFileStorageReplicationTargetResource(compartment string) error { + fileStorageClient := acctest.GetTestClients(&schema.ResourceData{}).FileStorageClient() + replicationTargetIds, err := getFileStorageReplicationTargetIds(compartment) + if err != nil { + return err + } + for _, replicationTargetId := range replicationTargetIds { + if ok := acctest.SweeperDefaultResourceId[replicationTargetId]; !ok { + deleteReplicationTargetRequest := oci_file_storage.DeleteReplicationTargetRequest{} + + deleteReplicationTargetRequest.ReplicationTargetId = &replicationTargetId + + deleteReplicationTargetRequest.RequestMetadata.RetryPolicy = tfresource.GetRetryPolicy(true, "file_storage") + _, error := fileStorageClient.DeleteReplicationTarget(context.Background(), deleteReplicationTargetRequest) + if error != nil { + fmt.Printf("Error deleting ReplicationTarget %s %s, It is possible that the resource is already deleted. Please verify manually \n", replicationTargetId, error) + continue + } + acctest.WaitTillCondition(acctest.TestAccProvider, &replicationTargetId, FileStorageReplicationTargetSweepWaitCondition, time.Duration(3*time.Minute), + FileStorageReplicationTargetSweepResponseFetchOperation, "file_storage", true) + } + } + return nil +} + +func getFileStorageReplicationTargetIds(compartment string) ([]string, error) { + ids := acctest.GetResourceIdsToSweep(compartment, "ReplicationTargetId") + if ids != nil { + return ids, nil + } + var resourceIds []string + compartmentId := compartment + fileStorageClient := acctest.GetTestClients(&schema.ResourceData{}).FileStorageClient() + + listReplicationTargetsRequest := oci_file_storage.ListReplicationTargetsRequest{} + listReplicationTargetsRequest.CompartmentId = &compartmentId + + availabilityDomains, err := acctest.GetAvalabilityDomains(compartment) + if err != nil { + return resourceIds, fmt.Errorf("Error getting availabilityDomains required for ReplicationTarget list for compartment id : %s , %s \n", compartmentId, err) + } + for _, availabilityDomainName := range availabilityDomains { + listReplicationTargetsRequest.AvailabilityDomain = &availabilityDomainName + + listReplicationTargetsRequest.LifecycleState = oci_file_storage.ListReplicationTargetsLifecycleStateActive + listReplicationTargetsResponse, err := fileStorageClient.ListReplicationTargets(context.Background(), listReplicationTargetsRequest) + + if err != nil { + return resourceIds, fmt.Errorf("Error getting ReplicationTarget list for compartment id : %s , %s \n", compartmentId, err) + } + for _, replicationTarget := range listReplicationTargetsResponse.Items { + id := *replicationTarget.Id + resourceIds = append(resourceIds, id) + acctest.AddResourceIdToSweeperResourceIdMap(compartmentId, "ReplicationTargetId", id) + } + + } + return resourceIds, nil +} + +func FileStorageReplicationTargetSweepWaitCondition(response common.OCIOperationResponse) bool { + // Only stop if the resource is available beyond 3 mins. As there could be an issue for the sweeper to delete the resource and manual intervention required. + if replicationTargetResponse, ok := response.Response.(oci_file_storage.GetReplicationTargetResponse); ok { + return replicationTargetResponse.LifecycleState != oci_file_storage.ReplicationTargetLifecycleStateDeleted + } + return false +} + +func FileStorageReplicationTargetSweepResponseFetchOperation(client *tf_client.OracleClients, resourceId *string, retryPolicy *common.RetryPolicy) error { + _, err := client.FileStorageClient().GetReplicationTarget(context.Background(), oci_file_storage.GetReplicationTargetRequest{ + ReplicationTargetId: resourceId, + RequestMetadata: common.RequestMetadata{ + RetryPolicy: retryPolicy, + }, + }) + return err +} diff --git a/internal/integrationtest/file_storage_replication_test.go b/internal/integrationtest/file_storage_replication_test.go new file mode 100644 index 00000000000..0671434ad37 --- /dev/null +++ b/internal/integrationtest/file_storage_replication_test.go @@ -0,0 +1,394 @@ +// Copyright (c) 2017, 2021, Oracle and/or its affiliates. All rights reserved. +// Licensed under the Mozilla Public License v2.0 + +package integrationtest + +import ( + "context" + "fmt" + "strconv" + "testing" + "time" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + "github.com/oracle/oci-go-sdk/v65/common" + oci_file_storage "github.com/oracle/oci-go-sdk/v65/filestorage" + + "github.com/oracle/terraform-provider-oci/httpreplay" + "github.com/oracle/terraform-provider-oci/internal/acctest" + tf_client "github.com/oracle/terraform-provider-oci/internal/client" + "github.com/oracle/terraform-provider-oci/internal/resourcediscovery" + "github.com/oracle/terraform-provider-oci/internal/tfresource" + "github.com/oracle/terraform-provider-oci/internal/utils" +) + +var ( + FileStorageReplicationRequiredOnlyResource = FileStorageReplicationResourceDependencies + + acctest.GenerateResourceFromRepresentationMap("oci_file_storage_replication", "test_replication", acctest.Required, acctest.Create, FileStorageReplicationRepresentation) + + FileStorageReplicationSingularDataSourceRepresentation = map[string]interface{}{ + "replication_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_file_storage_replication.test_replication.id}`}, + } + + FileStorageReplicationDataSourceRepresentation = map[string]interface{}{ + "availability_domain": acctest.Representation{RepType: acctest.Required, Create: `${data.oci_identity_availability_domains.test_availability_domains.availability_domains.0.name}`}, + "compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`}, + "display_name": acctest.Representation{RepType: acctest.Optional, Create: `replication-policy-1`, Update: `displayName2`}, + "file_system_id": acctest.Representation{RepType: acctest.Optional, Create: `${oci_file_storage_file_system.test_file_system_source.id}`}, + "id": acctest.Representation{RepType: acctest.Optional, Create: `${oci_file_storage_replication.test_replication.id}`}, + "state": acctest.Representation{RepType: acctest.Optional, Create: `ACTIVE`}, + "filter": acctest.RepresentationGroup{RepType: acctest.Required, Group: FileStorageReplicationDataSourceFilterRepresentation}} + FileStorageReplicationDataSourceFilterRepresentation = map[string]interface{}{ + "name": acctest.Representation{RepType: acctest.Required, Create: `id`}, + "values": acctest.Representation{RepType: acctest.Required, Create: []string{`${oci_file_storage_replication.test_replication.id}`}}, + } + + FileStorageReplicationRepresentation = map[string]interface{}{ + "compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`}, + "source_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_file_storage_file_system.test_file_system_source.id}`}, + "target_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_file_storage_file_system.test_file_system_target.id}`}, + "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")}`}, + "display_name": acctest.Representation{RepType: acctest.Optional, Create: `replication-policy-1`, Update: `displayName2`}, + "freeform_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"Department": "Finance"}, Update: map[string]string{"Department": "Accounting"}}, + "replication_interval": acctest.Representation{RepType: acctest.Optional, Create: `15`, Update: `16`}, + "lifecycle": acctest.RepresentationGroup{RepType: acctest.Required, Group: ignoreDefinedTagsDifferencesRepresentation}, + } + + FileStorageReplicationResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_file_storage_file_system", "test_file_system_source", acctest.Required, acctest.Create, FileStorageFileSystemRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_file_storage_file_system", "test_file_system_target", acctest.Required, acctest.Create, FileStorageFileSystemRepresentation) + + AvailabilityDomainConfig + + DefinedTagsDependencies + + FileStorageReplicationResourceConfig = FileStorageReplicationResourceDependencies + + acctest.GenerateResourceFromRepresentationMap("oci_file_storage_replication", "test_replication", acctest.Optional, acctest.Update, FileStorageReplicationRepresentation) +) + +// issue-routing-tag: file_storage/default +func TestFileStorageReplicationResource_basic(t *testing.T) { + httpreplay.SetScenario("TestFileStorageReplicationResource_basic") + defer httpreplay.SaveScenario() + + config := acctest.ProviderTestConfig() + + compartmentId := utils.GetEnvSettingWithBlankDefault("compartment_ocid") + compartmentIdVariableStr := fmt.Sprintf("variable \"compartment_id\" { default = \"%s\" }\n", compartmentId) + + compartmentIdU := utils.GetEnvSettingWithDefault("compartment_id_for_update", compartmentId) + compartmentIdUVariableStr := fmt.Sprintf("variable \"compartment_id_for_update\" { default = \"%s\" }\n", compartmentIdU) + + resourceName := "oci_file_storage_replication.test_replication" + datasourceName := "data.oci_file_storage_replications.test_replications" + singularDatasourceName := "data.oci_file_storage_replication.test_replication" + + var resId, resId2 string + // 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. + acctest.SaveConfigContent(config+compartmentIdVariableStr+FileStorageReplicationResourceDependencies+ + acctest.GenerateResourceFromRepresentationMap("oci_file_storage_replication", "test_replication", acctest.Optional, acctest.Create, FileStorageReplicationRepresentation), "filestorage", "replication", t) + + acctest.ResourceTest(t, testAccCheckFileStorageReplicationDestroy, []resource.TestStep{ + // verify Create + { + Config: config + compartmentIdVariableStr + FileStorageReplicationResourceDependencies + + acctest.GenerateResourceFromRepresentationMap("oci_file_storage_replication", "test_replication", acctest.Required, acctest.Create, FileStorageReplicationRepresentation), + Check: acctest.ComposeAggregateTestCheckFuncWrapper( + resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId), + resource.TestCheckResourceAttrSet(resourceName, "source_id"), + resource.TestCheckResourceAttrSet(resourceName, "target_id"), + + func(s *terraform.State) (err error) { + resId, err = acctest.FromInstanceState(s, resourceName, "id") + return err + }, + ), + }, + + // delete before next Create + { + Config: config + compartmentIdVariableStr + FileStorageReplicationResourceDependencies, + }, + // verify Create with optionals + { + Config: config + compartmentIdVariableStr + FileStorageReplicationResourceDependencies + + acctest.GenerateResourceFromRepresentationMap("oci_file_storage_replication", "test_replication", acctest.Optional, acctest.Create, FileStorageReplicationRepresentation), + Check: acctest.ComposeAggregateTestCheckFuncWrapper( + resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId), + resource.TestCheckResourceAttr(resourceName, "display_name", "replication-policy-1"), + resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "1"), + resource.TestCheckResourceAttrSet(resourceName, "id"), + resource.TestCheckResourceAttr(resourceName, "replication_interval", "15"), + resource.TestCheckResourceAttrSet(resourceName, "replication_target_id"), + resource.TestCheckResourceAttrSet(resourceName, "source_id"), + resource.TestCheckResourceAttrSet(resourceName, "state"), + resource.TestCheckResourceAttrSet(resourceName, "target_id"), + resource.TestCheckResourceAttrSet(resourceName, "time_created"), + + func(s *terraform.State) (err error) { + resId, err = acctest.FromInstanceState(s, resourceName, "id") + if isEnableExportCompartment, _ := strconv.ParseBool(utils.GetEnvSettingWithDefault("enable_export_compartment", "true")); isEnableExportCompartment { + if errExport := resourcediscovery.TestExportCompartmentWithResourceName(&resId, &compartmentId, resourceName); errExport != nil { + return errExport + } + } + return err + }, + ), + }, + + // verify Update to the compartment (the compartment will be switched back in the next step) + { + Config: config + compartmentIdVariableStr + compartmentIdUVariableStr + FileStorageReplicationResourceDependencies + + acctest.GenerateResourceFromRepresentationMap("oci_file_storage_replication", "test_replication", acctest.Optional, acctest.Create, + acctest.RepresentationCopyWithNewProperties(FileStorageReplicationRepresentation, map[string]interface{}{ + "compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id_for_update}`}, + })), + Check: acctest.ComposeAggregateTestCheckFuncWrapper( + resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentIdU), + resource.TestCheckResourceAttr(resourceName, "display_name", "replication-policy-1"), + resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "1"), + resource.TestCheckResourceAttrSet(resourceName, "id"), + resource.TestCheckResourceAttr(resourceName, "replication_interval", "15"), + resource.TestCheckResourceAttrSet(resourceName, "replication_target_id"), + resource.TestCheckResourceAttrSet(resourceName, "source_id"), + resource.TestCheckResourceAttrSet(resourceName, "state"), + resource.TestCheckResourceAttrSet(resourceName, "target_id"), + resource.TestCheckResourceAttrSet(resourceName, "time_created"), + + func(s *terraform.State) (err error) { + resId2, err = acctest.FromInstanceState(s, resourceName, "id") + if resId != resId2 { + return fmt.Errorf("resource recreated when it was supposed to be updated") + } + return err + }, + ), + }, + + // verify updates to updatable parameters + { + Config: config + compartmentIdVariableStr + FileStorageReplicationResourceDependencies + + acctest.GenerateResourceFromRepresentationMap("oci_file_storage_replication", "test_replication", acctest.Optional, acctest.Update, FileStorageReplicationRepresentation), + Check: acctest.ComposeAggregateTestCheckFuncWrapper( + resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId), + resource.TestCheckResourceAttr(resourceName, "display_name", "displayName2"), + resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "1"), + resource.TestCheckResourceAttrSet(resourceName, "id"), + resource.TestCheckResourceAttr(resourceName, "replication_interval", "16"), + resource.TestCheckResourceAttrSet(resourceName, "replication_target_id"), + resource.TestCheckResourceAttrSet(resourceName, "source_id"), + resource.TestCheckResourceAttrSet(resourceName, "state"), + resource.TestCheckResourceAttrSet(resourceName, "target_id"), + resource.TestCheckResourceAttrSet(resourceName, "time_created"), + + func(s *terraform.State) (err error) { + resId2, err = acctest.FromInstanceState(s, resourceName, "id") + if resId != resId2 { + return fmt.Errorf("Resource recreated when it was supposed to be updated.") + } + return err + }, + ), + }, + // verify datasource + { + Config: config + + acctest.GenerateDataSourceFromRepresentationMap("oci_file_storage_replications", "test_replications", acctest.Optional, acctest.Update, FileStorageReplicationDataSourceRepresentation) + + compartmentIdVariableStr + FileStorageReplicationResourceDependencies + + acctest.GenerateResourceFromRepresentationMap("oci_file_storage_replication", "test_replication", acctest.Optional, acctest.Update, FileStorageReplicationRepresentation), + Check: acctest.ComposeAggregateTestCheckFuncWrapper( + resource.TestCheckResourceAttrSet(datasourceName, "availability_domain"), + resource.TestCheckResourceAttr(datasourceName, "compartment_id", compartmentId), + resource.TestCheckResourceAttr(datasourceName, "display_name", "displayName2"), + resource.TestCheckResourceAttrSet(datasourceName, "file_system_id"), + resource.TestCheckResourceAttrSet(datasourceName, "id"), + resource.TestCheckResourceAttr(datasourceName, "state", "ACTIVE"), + + resource.TestCheckResourceAttr(datasourceName, "replications.#", "1"), + resource.TestCheckResourceAttrSet(datasourceName, "replications.0.availability_domain"), + resource.TestCheckResourceAttr(datasourceName, "replications.0.compartment_id", compartmentId), + resource.TestCheckResourceAttr(datasourceName, "replications.0.display_name", "displayName2"), + resource.TestCheckResourceAttr(datasourceName, "replications.0.freeform_tags.%", "1"), + resource.TestCheckResourceAttrSet(datasourceName, "replications.0.id"), + resource.TestCheckResourceAttrSet(datasourceName, "replications.0.recovery_point_time"), + resource.TestCheckResourceAttr(datasourceName, "replications.0.replication_interval", "16"), + resource.TestCheckResourceAttrSet(datasourceName, "replications.0.state"), + resource.TestCheckResourceAttrSet(datasourceName, "replications.0.time_created"), + ), + }, + // verify singular datasource + { + PreConfig: acctest.WaitTillCondition(acctest.TestAccProvider, &resId, replicationCheckWaitCondition, time.Duration(10*time.Minute), + FileStorageReplicationSweepResponseFetchOperation, "file_storage", true), + Config: config + + acctest.GenerateDataSourceFromRepresentationMap("oci_file_storage_replication", "test_replication", acctest.Required, acctest.Create, FileStorageReplicationSingularDataSourceRepresentation) + + compartmentIdVariableStr + FileStorageReplicationResourceConfig, + Check: acctest.ComposeAggregateTestCheckFuncWrapper( + resource.TestCheckResourceAttrSet(singularDatasourceName, "replication_id"), + + resource.TestCheckResourceAttrSet(singularDatasourceName, "availability_domain"), + resource.TestCheckResourceAttr(singularDatasourceName, "compartment_id", compartmentId), + resource.TestCheckResourceAttrSet(singularDatasourceName, "delta_progress"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "delta_status"), + resource.TestCheckResourceAttr(singularDatasourceName, "display_name", "displayName2"), + resource.TestCheckResourceAttr(singularDatasourceName, "freeform_tags.%", "1"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "id"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "last_snapshot_id"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "recovery_point_time"), + resource.TestCheckResourceAttr(singularDatasourceName, "replication_interval", "16"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "replication_target_id"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "state"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "time_created"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "source_id"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "target_id"), + ), + }, + // verify resource import + { + Config: config + FileStorageReplicationRequiredOnlyResource, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{}, + ResourceName: resourceName, + }, + }) +} + +func testAccCheckFileStorageReplicationDestroy(s *terraform.State) error { + noResourceFound := true + client := acctest.TestAccProvider.Meta().(*tf_client.OracleClients).FileStorageClient() + for _, rs := range s.RootModule().Resources { + if rs.Type == "oci_file_storage_replication" { + noResourceFound = false + request := oci_file_storage.GetReplicationRequest{} + + tmp := rs.Primary.ID + request.ReplicationId = &tmp + + request.RequestMetadata.RetryPolicy = tfresource.GetRetryPolicy(true, "file_storage") + + response, err := client.GetReplication(context.Background(), request) + + if err == nil { + deletedLifecycleStates := map[string]bool{ + string(oci_file_storage.ReplicationLifecycleStateDeleted): true, + } + if _, ok := deletedLifecycleStates[string(response.LifecycleState)]; !ok { + //resource lifecycle state is not in expected deleted lifecycle states. + return fmt.Errorf("resource lifecycle state: %s is not in expected deleted lifecycle states", response.LifecycleState) + } + //resource lifecycle state is in expected deleted lifecycle states. continue with next one. + continue + } + + //Verify that exception is for '404 not found'. + if failure, isServiceError := common.IsServiceError(err); !isServiceError || failure.GetHTTPStatusCode() != 404 { + return err + } + } + } + if noResourceFound { + return fmt.Errorf("at least one resource was expected from the state file, but could not be found") + } + + return nil +} + +func init() { + if acctest.DependencyGraph == nil { + acctest.InitDependencyGraph() + } + if !acctest.InSweeperExcludeList("FileStorageReplication") { + resource.AddTestSweepers("FileStorageReplication", &resource.Sweeper{ + Name: "FileStorageReplication", + Dependencies: acctest.DependencyGraph["replication"], + F: sweepFileStorageReplicationResource, + }) + } +} + +func sweepFileStorageReplicationResource(compartment string) error { + fileStorageClient := acctest.GetTestClients(&schema.ResourceData{}).FileStorageClient() + replicationIds, err := getFileStorageReplicationIds(compartment) + if err != nil { + return err + } + for _, replicationId := range replicationIds { + if ok := acctest.SweeperDefaultResourceId[replicationId]; !ok { + deleteReplicationRequest := oci_file_storage.DeleteReplicationRequest{} + + deleteReplicationRequest.ReplicationId = &replicationId + + deleteReplicationRequest.RequestMetadata.RetryPolicy = tfresource.GetRetryPolicy(true, "file_storage") + _, error := fileStorageClient.DeleteReplication(context.Background(), deleteReplicationRequest) + if error != nil { + fmt.Printf("Error deleting Replication %s %s, It is possible that the resource is already deleted. Please verify manually \n", replicationId, error) + continue + } + acctest.WaitTillCondition(acctest.TestAccProvider, &replicationId, FileStorageReplicationSweepWaitCondition, time.Duration(3*time.Minute), + FileStorageReplicationSweepResponseFetchOperation, "file_storage", true) + } + } + return nil +} + +func getFileStorageReplicationIds(compartment string) ([]string, error) { + ids := acctest.GetResourceIdsToSweep(compartment, "ReplicationId") + if ids != nil { + return ids, nil + } + var resourceIds []string + compartmentId := compartment + fileStorageClient := acctest.GetTestClients(&schema.ResourceData{}).FileStorageClient() + + listReplicationsRequest := oci_file_storage.ListReplicationsRequest{} + listReplicationsRequest.CompartmentId = &compartmentId + + availabilityDomains, err := acctest.GetAvalabilityDomains(compartment) + if err != nil { + return resourceIds, fmt.Errorf("Error getting availabilityDomains required for Replication list for compartment id : %s , %s \n", compartmentId, err) + } + for _, availabilityDomainName := range availabilityDomains { + listReplicationsRequest.AvailabilityDomain = &availabilityDomainName + + listReplicationsRequest.LifecycleState = oci_file_storage.ListReplicationsLifecycleStateActive + listReplicationsResponse, err := fileStorageClient.ListReplications(context.Background(), listReplicationsRequest) + + if err != nil { + return resourceIds, fmt.Errorf("Error getting Replication list for compartment id : %s , %s \n", compartmentId, err) + } + for _, replication := range listReplicationsResponse.Items { + id := *replication.Id + resourceIds = append(resourceIds, id) + acctest.AddResourceIdToSweeperResourceIdMap(compartmentId, "ReplicationId", id) + } + + } + return resourceIds, nil +} + +func FileStorageReplicationSweepWaitCondition(response common.OCIOperationResponse) bool { + // Only stop if the resource is available beyond 3 mins. As there could be an issue for the sweeper to delete the resource and manual intervention required. + if replicationResponse, ok := response.Response.(oci_file_storage.GetReplicationResponse); ok { + return replicationResponse.LifecycleState != oci_file_storage.ReplicationLifecycleStateDeleted + } + return false +} + +func replicationCheckWaitCondition(response common.OCIOperationResponse) bool { + if replicationCheckResponse, ok := response.Response.(oci_file_storage.GetReplicationResponse); ok { + return replicationCheckResponse.DeltaStatus != oci_file_storage.ReplicationDeltaStatusApplying + } + return false +} + +func FileStorageReplicationSweepResponseFetchOperation(client *tf_client.OracleClients, resourceId *string, retryPolicy *common.RetryPolicy) error { + _, err := client.FileStorageClient().GetReplication(context.Background(), oci_file_storage.GetReplicationRequest{ + ReplicationId: resourceId, + RequestMetadata: common.RequestMetadata{ + RetryPolicy: retryPolicy, + }, + }) + return err +} diff --git a/internal/integrationtest/file_storage_snapshot_test.go b/internal/integrationtest/file_storage_snapshot_test.go index 860267c1b3d..99d6b76591f 100644 --- a/internal/integrationtest/file_storage_snapshot_test.go +++ b/internal/integrationtest/file_storage_snapshot_test.go @@ -49,6 +49,7 @@ var ( "name": acctest.Representation{RepType: acctest.Required, Create: `snapshot-1`}, "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")}`}, "freeform_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"Department": "Finance"}, Update: map[string]string{"Department": "Accounting"}}, + "lifecycle": acctest.RepresentationGroup{RepType: acctest.Required, Group: ignoreDefinedTagsDifferencesRepresentation}, } FileStorageSnapshotResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_file_storage_file_system", "test_file_system", acctest.Required, acctest.Create, FileStorageFileSystemRepresentation) + @@ -157,6 +158,8 @@ func TestFileStorageSnapshotResource_basic(t *testing.T) { resource.TestCheckResourceAttrSet(datasourceName, "snapshots.0.is_clone_source"), resource.TestCheckResourceAttr(datasourceName, "snapshots.0.name", "snapshot-1"), resource.TestCheckResourceAttrSet(datasourceName, "snapshots.0.provenance_id"), + resource.TestCheckResourceAttrSet(datasourceName, "snapshots.0.snapshot_time"), + resource.TestCheckResourceAttrSet(datasourceName, "snapshots.0.snapshot_type"), resource.TestCheckResourceAttrSet(datasourceName, "snapshots.0.state"), resource.TestCheckResourceAttrSet(datasourceName, "snapshots.0.time_created"), ), @@ -174,6 +177,8 @@ func TestFileStorageSnapshotResource_basic(t *testing.T) { resource.TestCheckResourceAttrSet(singularDatasourceName, "is_clone_source"), resource.TestCheckResourceAttr(singularDatasourceName, "name", "snapshot-1"), resource.TestCheckResourceAttrSet(singularDatasourceName, "provenance_id"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "snapshot_time"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "snapshot_type"), resource.TestCheckResourceAttrSet(singularDatasourceName, "state"), resource.TestCheckResourceAttrSet(singularDatasourceName, "time_created"), ), diff --git a/internal/service/file_storage/file_storage_export.go b/internal/service/file_storage/file_storage_export.go index 8e32daf560c..1a1244ef02e 100644 --- a/internal/service/file_storage/file_storage_export.go +++ b/internal/service/file_storage/file_storage_export.go @@ -57,6 +57,17 @@ var exportFileStorageSnapshotHints = &tf_export.TerraformResourceHints{ }, } +var exportFileStorageReplicationHints = &tf_export.TerraformResourceHints{ + ResourceClass: "oci_file_storage_replication", + DatasourceClass: "oci_file_storage_replications", + DatasourceItemsAttr: "replications", + ResourceAbbreviation: "replication", + RequireResourceRefresh: true, + DiscoverableLifecycleStates: []string{ + string(oci_file_storage.ReplicationLifecycleStateActive), + }, +} + var fileStorageResourceGraph = tf_export.TerraformResourceGraph{ "oci_identity_compartment": { {TerraformResourceHints: exportFileStorageExportHints}, diff --git a/internal/service/file_storage/file_storage_file_system_resource.go b/internal/service/file_storage/file_storage_file_system_resource.go index 67dfd7b756c..249ecc44efa 100644 --- a/internal/service/file_storage/file_storage_file_system_resource.go +++ b/internal/service/file_storage/file_storage_file_system_resource.go @@ -77,6 +77,10 @@ func FileStorageFileSystemResource() *schema.Resource { Type: schema.TypeBool, Computed: true, }, + "is_targetable": { + Type: schema.TypeBool, + Computed: true, + }, "lifecycle_details": { Type: schema.TypeString, Computed: true, @@ -85,6 +89,10 @@ func FileStorageFileSystemResource() *schema.Resource { Type: schema.TypeString, Computed: true, }, + "replication_target_id": { + Type: schema.TypeString, + Computed: true, + }, "source_details": { Type: schema.TypeList, Computed: true, @@ -345,6 +353,10 @@ func (s *FileStorageFileSystemResourceCrud) SetData() error { s.D.Set("is_hydrated", *s.Res.IsHydrated) } + if s.Res.IsTargetable != nil { + s.D.Set("is_targetable", *s.Res.IsTargetable) + } + if s.Res.KmsKeyId != nil { s.D.Set("kms_key_id", *s.Res.KmsKeyId) } @@ -357,6 +369,10 @@ func (s *FileStorageFileSystemResourceCrud) SetData() error { s.D.Set("metered_bytes", strconv.FormatInt(*s.Res.MeteredBytes, 10)) } + if s.Res.ReplicationTargetId != nil { + s.D.Set("replication_target_id", *s.Res.ReplicationTargetId) + } + if s.Res.SourceDetails != nil { s.D.Set("source_details", []interface{}{FileSystemSourceDetailsToMap(s.Res.SourceDetails)}) } else { diff --git a/internal/service/file_storage/file_storage_replication_data_source.go b/internal/service/file_storage/file_storage_replication_data_source.go new file mode 100644 index 00000000000..2419ccc178b --- /dev/null +++ b/internal/service/file_storage/file_storage_replication_data_source.go @@ -0,0 +1,130 @@ +// Copyright (c) 2017, 2021, Oracle and/or its affiliates. All rights reserved. +// Licensed under the Mozilla Public License v2.0 + +package file_storage + +import ( + "context" + "strconv" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + oci_file_storage "github.com/oracle/oci-go-sdk/v65/filestorage" + + "github.com/oracle/terraform-provider-oci/internal/client" + "github.com/oracle/terraform-provider-oci/internal/tfresource" +) + +func FileStorageReplicationDataSource() *schema.Resource { + fieldMap := make(map[string]*schema.Schema) + fieldMap["replication_id"] = &schema.Schema{ + Type: schema.TypeString, + Required: true, + } + return tfresource.GetSingularDataSourceItemSchema(FileStorageReplicationResource(), fieldMap, readSingularFileStorageReplication) +} + +func readSingularFileStorageReplication(d *schema.ResourceData, m interface{}) error { + sync := &FileStorageReplicationDataSourceCrud{} + sync.D = d + sync.Client = m.(*client.OracleClients).FileStorageClient() + + return tfresource.ReadResource(sync) +} + +type FileStorageReplicationDataSourceCrud struct { + D *schema.ResourceData + Client *oci_file_storage.FileStorageClient + Res *oci_file_storage.GetReplicationResponse +} + +func (s *FileStorageReplicationDataSourceCrud) VoidState() { + s.D.SetId("") +} + +func (s *FileStorageReplicationDataSourceCrud) Get() error { + request := oci_file_storage.GetReplicationRequest{} + + if replicationId, ok := s.D.GetOkExists("replication_id"); ok { + tmp := replicationId.(string) + request.ReplicationId = &tmp + } + + request.RequestMetadata.RetryPolicy = tfresource.GetRetryPolicy(false, "file_storage") + + response, err := s.Client.GetReplication(context.Background(), request) + if err != nil { + return err + } + + s.Res = &response + return nil +} + +func (s *FileStorageReplicationDataSourceCrud) SetData() error { + if s.Res == nil { + return nil + } + + s.D.SetId(*s.Res.Id) + + if s.Res.AvailabilityDomain != nil { + s.D.Set("availability_domain", *s.Res.AvailabilityDomain) + } + + if s.Res.CompartmentId != nil { + s.D.Set("compartment_id", *s.Res.CompartmentId) + } + + if s.Res.DefinedTags != nil { + s.D.Set("defined_tags", tfresource.DefinedTagsToMap(s.Res.DefinedTags)) + } + + if s.Res.DeltaProgress != nil { + s.D.Set("delta_progress", strconv.FormatInt(*s.Res.DeltaProgress, 10)) + } + + s.D.Set("delta_status", s.Res.DeltaStatus) + + if s.Res.DisplayName != nil { + s.D.Set("display_name", *s.Res.DisplayName) + } + + s.D.Set("freeform_tags", s.Res.FreeformTags) + s.D.Set("freeform_tags", s.Res.FreeformTags) + + if s.Res.LastSnapshotId != nil { + s.D.Set("last_snapshot_id", *s.Res.LastSnapshotId) + } + + if s.Res.LifecycleDetails != nil { + s.D.Set("lifecycle_details", *s.Res.LifecycleDetails) + } + + if s.Res.RecoveryPointTime != nil { + s.D.Set("recovery_point_time", s.Res.RecoveryPointTime.String()) + } + + if s.Res.ReplicationInterval != nil { + s.D.Set("replication_interval", strconv.FormatInt(*s.Res.ReplicationInterval, 10)) + } + + if s.Res.ReplicationTargetId != nil { + s.D.Set("replication_target_id", *s.Res.ReplicationTargetId) + } + + if s.Res.SourceId != nil { + s.D.Set("source_id", *s.Res.SourceId) + } + + s.D.Set("state", s.Res.LifecycleState) + + if s.Res.TargetId != nil { + s.D.Set("target_id", *s.Res.TargetId) + } + + if s.Res.TimeCreated != nil { + s.D.Set("time_created", s.Res.TimeCreated.String()) + } + + return nil +} diff --git a/internal/service/file_storage/file_storage_replication_resource.go b/internal/service/file_storage/file_storage_replication_resource.go new file mode 100644 index 00000000000..60e7265c7bb --- /dev/null +++ b/internal/service/file_storage/file_storage_replication_resource.go @@ -0,0 +1,406 @@ +// Copyright (c) 2017, 2021, Oracle and/or its affiliates. All rights reserved. +// Licensed under the Mozilla Public License v2.0 + +package file_storage + +import ( + "context" + "fmt" + "strconv" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + + oci_file_storage "github.com/oracle/oci-go-sdk/v65/filestorage" + + "github.com/oracle/terraform-provider-oci/internal/client" + "github.com/oracle/terraform-provider-oci/internal/tfresource" +) + +func FileStorageReplicationResource() *schema.Resource { + return &schema.Resource{ + Importer: &schema.ResourceImporter{ + State: schema.ImportStatePassthrough, + }, + Timeouts: tfresource.DefaultTimeout, + Create: createFileStorageReplication, + Read: readFileStorageReplication, + Update: updateFileStorageReplication, + Delete: deleteFileStorageReplication, + Schema: map[string]*schema.Schema{ + // Required + "compartment_id": { + Type: schema.TypeString, + Required: true, + }, + "source_id": { + Type: schema.TypeString, + Required: true, + ForceNew: true, + }, + "target_id": { + Type: schema.TypeString, + Required: true, + ForceNew: true, + }, + + // Optional + "defined_tags": { + Type: schema.TypeMap, + Optional: true, + Computed: true, + DiffSuppressFunc: tfresource.DefinedTagsDiffSuppressFunction, + Elem: schema.TypeString, + }, + "display_name": { + Type: schema.TypeString, + Optional: true, + Computed: true, + }, + "freeform_tags": { + Type: schema.TypeMap, + Optional: true, + Computed: true, + Elem: schema.TypeString, + }, + "replication_interval": { + Type: schema.TypeString, + Optional: true, + Computed: true, + ValidateFunc: tfresource.ValidateInt64TypeString, + DiffSuppressFunc: tfresource.Int64StringDiffSuppressFunction, + }, + + // Computed + "availability_domain": { + Type: schema.TypeString, + Computed: true, + }, + "delta_progress": { + Type: schema.TypeString, + Computed: true, + }, + "delta_status": { + Type: schema.TypeString, + Computed: true, + }, + "last_snapshot_id": { + Type: schema.TypeString, + Computed: true, + }, + "lifecycle_details": { + Type: schema.TypeString, + Computed: true, + }, + "recovery_point_time": { + Type: schema.TypeString, + Computed: true, + }, + "replication_target_id": { + Type: schema.TypeString, + Computed: true, + }, + "state": { + Type: schema.TypeString, + Computed: true, + }, + "time_created": { + Type: schema.TypeString, + Computed: true, + }, + }, + } +} + +func createFileStorageReplication(d *schema.ResourceData, m interface{}) error { + sync := &FileStorageReplicationResourceCrud{} + sync.D = d + sync.Client = m.(*client.OracleClients).FileStorageClient() + + return tfresource.CreateResource(d, sync) +} + +func readFileStorageReplication(d *schema.ResourceData, m interface{}) error { + sync := &FileStorageReplicationResourceCrud{} + sync.D = d + sync.Client = m.(*client.OracleClients).FileStorageClient() + + return tfresource.ReadResource(sync) +} + +func updateFileStorageReplication(d *schema.ResourceData, m interface{}) error { + sync := &FileStorageReplicationResourceCrud{} + sync.D = d + sync.Client = m.(*client.OracleClients).FileStorageClient() + + return tfresource.UpdateResource(d, sync) +} + +func deleteFileStorageReplication(d *schema.ResourceData, m interface{}) error { + sync := &FileStorageReplicationResourceCrud{} + sync.D = d + sync.Client = m.(*client.OracleClients).FileStorageClient() + sync.DisableNotFoundRetries = true + + return tfresource.DeleteResource(d, sync) +} + +type FileStorageReplicationResourceCrud struct { + tfresource.BaseCrud + Client *oci_file_storage.FileStorageClient + Res *oci_file_storage.Replication + DisableNotFoundRetries bool +} + +func (s *FileStorageReplicationResourceCrud) ID() string { + return *s.Res.Id +} + +func (s *FileStorageReplicationResourceCrud) CreatedPending() []string { + return []string{ + string(oci_file_storage.ReplicationLifecycleStateCreating), + } +} + +func (s *FileStorageReplicationResourceCrud) CreatedTarget() []string { + return []string{ + string(oci_file_storage.ReplicationLifecycleStateActive), + } +} + +func (s *FileStorageReplicationResourceCrud) DeletedPending() []string { + return []string{ + string(oci_file_storage.ReplicationLifecycleStateDeleting), + } +} + +func (s *FileStorageReplicationResourceCrud) DeletedTarget() []string { + return []string{ + string(oci_file_storage.ReplicationLifecycleStateDeleted), + } +} + +func (s *FileStorageReplicationResourceCrud) Create() error { + request := oci_file_storage.CreateReplicationRequest{} + + if compartmentId, ok := s.D.GetOkExists("compartment_id"); ok { + tmp := compartmentId.(string) + request.CompartmentId = &tmp + } + + if definedTags, ok := s.D.GetOkExists("defined_tags"); ok { + convertedDefinedTags, err := tfresource.MapToDefinedTags(definedTags.(map[string]interface{})) + if err != nil { + return err + } + request.DefinedTags = convertedDefinedTags + } + + if displayName, ok := s.D.GetOkExists("display_name"); ok { + tmp := displayName.(string) + request.DisplayName = &tmp + } + + if freeformTags, ok := s.D.GetOkExists("freeform_tags"); ok { + request.FreeformTags = tfresource.ObjectMapToStringMap(freeformTags.(map[string]interface{})) + } + + if replicationInterval, ok := s.D.GetOkExists("replication_interval"); ok { + tmp := replicationInterval.(string) + tmpInt64, err := strconv.ParseInt(tmp, 10, 64) + if err != nil { + return fmt.Errorf("unable to convert replicationInterval string: %s to an int64 and encountered error: %v", tmp, err) + } + request.ReplicationInterval = &tmpInt64 + } + + if sourceId, ok := s.D.GetOkExists("source_id"); ok { + tmp := sourceId.(string) + request.SourceId = &tmp + } + + if targetId, ok := s.D.GetOkExists("target_id"); ok { + tmp := targetId.(string) + request.TargetId = &tmp + } + + request.RequestMetadata.RetryPolicy = tfresource.GetRetryPolicy(s.DisableNotFoundRetries, "file_storage") + + response, err := s.Client.CreateReplication(context.Background(), request) + if err != nil { + return err + } + + s.Res = &response.Replication + return nil +} + +func (s *FileStorageReplicationResourceCrud) Get() error { + request := oci_file_storage.GetReplicationRequest{} + + tmp := s.D.Id() + request.ReplicationId = &tmp + + request.RequestMetadata.RetryPolicy = tfresource.GetRetryPolicy(s.DisableNotFoundRetries, "file_storage") + + response, err := s.Client.GetReplication(context.Background(), request) + if err != nil { + return err + } + + s.Res = &response.Replication + return nil +} + +func (s *FileStorageReplicationResourceCrud) Update() error { + if compartment, ok := s.D.GetOkExists("compartment_id"); ok && s.D.HasChange("compartment_id") { + oldRaw, newRaw := s.D.GetChange("compartment_id") + if newRaw != "" && oldRaw != "" { + err := s.updateCompartment(compartment) + if err != nil { + return err + } + } + } + request := oci_file_storage.UpdateReplicationRequest{} + + if definedTags, ok := s.D.GetOkExists("defined_tags"); ok { + convertedDefinedTags, err := tfresource.MapToDefinedTags(definedTags.(map[string]interface{})) + if err != nil { + return err + } + request.DefinedTags = convertedDefinedTags + } + + if displayName, ok := s.D.GetOkExists("display_name"); ok { + tmp := displayName.(string) + request.DisplayName = &tmp + } + + if freeformTags, ok := s.D.GetOkExists("freeform_tags"); ok { + request.FreeformTags = tfresource.ObjectMapToStringMap(freeformTags.(map[string]interface{})) + } + + tmp := s.D.Id() + request.ReplicationId = &tmp + + if replicationInterval, ok := s.D.GetOkExists("replication_interval"); ok { + tmp := replicationInterval.(string) + tmpInt64, err := strconv.ParseInt(tmp, 10, 64) + if err != nil { + return fmt.Errorf("unable to convert replicationInterval string: %s to an int64 and encountered error: %v", tmp, err) + } + request.ReplicationInterval = &tmpInt64 + } + + request.RequestMetadata.RetryPolicy = tfresource.GetRetryPolicy(s.DisableNotFoundRetries, "file_storage") + + response, err := s.Client.UpdateReplication(context.Background(), request) + if err != nil { + return err + } + + s.Res = &response.Replication + return nil +} + +func (s *FileStorageReplicationResourceCrud) Delete() error { + request := oci_file_storage.DeleteReplicationRequest{} + + if deleteMode, ok := s.D.GetOkExists("delete_mode"); ok { + request.DeleteMode = oci_file_storage.DeleteReplicationDeleteModeEnum(deleteMode.(string)) + } + + tmp := s.D.Id() + request.ReplicationId = &tmp + + request.RequestMetadata.RetryPolicy = tfresource.GetRetryPolicy(s.DisableNotFoundRetries, "file_storage") + + _, err := s.Client.DeleteReplication(context.Background(), request) + return err +} + +func (s *FileStorageReplicationResourceCrud) SetData() error { + if s.Res.AvailabilityDomain != nil { + s.D.Set("availability_domain", *s.Res.AvailabilityDomain) + } + + if s.Res.CompartmentId != nil { + s.D.Set("compartment_id", *s.Res.CompartmentId) + } + + if s.Res.DefinedTags != nil { + s.D.Set("defined_tags", tfresource.DefinedTagsToMap(s.Res.DefinedTags)) + } + + if s.Res.DeltaProgress != nil { + s.D.Set("delta_progress", strconv.FormatInt(*s.Res.DeltaProgress, 10)) + } + + s.D.Set("delta_status", s.Res.DeltaStatus) + + if s.Res.DisplayName != nil { + s.D.Set("display_name", *s.Res.DisplayName) + } + + s.D.Set("freeform_tags", s.Res.FreeformTags) + s.D.Set("freeform_tags", s.Res.FreeformTags) + + if s.Res.LastSnapshotId != nil { + s.D.Set("last_snapshot_id", *s.Res.LastSnapshotId) + } + + if s.Res.LifecycleDetails != nil { + s.D.Set("lifecycle_details", *s.Res.LifecycleDetails) + } + + if s.Res.RecoveryPointTime != nil { + s.D.Set("recovery_point_time", s.Res.RecoveryPointTime.String()) + } + + if s.Res.ReplicationInterval != nil { + s.D.Set("replication_interval", strconv.FormatInt(*s.Res.ReplicationInterval, 10)) + } + + if s.Res.ReplicationTargetId != nil { + s.D.Set("replication_target_id", *s.Res.ReplicationTargetId) + } + + if s.Res.SourceId != nil { + s.D.Set("source_id", *s.Res.SourceId) + } + + s.D.Set("state", s.Res.LifecycleState) + + if s.Res.TargetId != nil { + s.D.Set("target_id", *s.Res.TargetId) + } + + if s.Res.TimeCreated != nil { + s.D.Set("time_created", s.Res.TimeCreated.String()) + } + + return nil +} + +func (s *FileStorageReplicationResourceCrud) updateCompartment(compartment interface{}) error { + changeCompartmentRequest := oci_file_storage.ChangeReplicationCompartmentRequest{} + + compartmentTmp := compartment.(string) + changeCompartmentRequest.CompartmentId = &compartmentTmp + + idTmp := s.D.Id() + changeCompartmentRequest.ReplicationId = &idTmp + + changeCompartmentRequest.RequestMetadata.RetryPolicy = tfresource.GetRetryPolicy(s.DisableNotFoundRetries, "file_storage") + + _, err := s.Client.ChangeReplicationCompartment(context.Background(), changeCompartmentRequest) + if err != nil { + return err + } + + if waitErr := tfresource.WaitForUpdatedState(s.D, s); waitErr != nil { + return waitErr + } + + return nil +} diff --git a/internal/service/file_storage/file_storage_replication_target_data_source.go b/internal/service/file_storage/file_storage_replication_target_data_source.go new file mode 100644 index 00000000000..386e5e77b50 --- /dev/null +++ b/internal/service/file_storage/file_storage_replication_target_data_source.go @@ -0,0 +1,192 @@ +// Copyright (c) 2017, 2021, Oracle and/or its affiliates. All rights reserved. +// Licensed under the Mozilla Public License v2.0 + +package file_storage + +import ( + "context" + "strconv" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + oci_file_storage "github.com/oracle/oci-go-sdk/v65/filestorage" + + "github.com/oracle/terraform-provider-oci/internal/client" + "github.com/oracle/terraform-provider-oci/internal/tfresource" +) + +func FileStorageReplicationTargetDataSource() *schema.Resource { + return &schema.Resource{ + Read: readSingularFileStorageReplicationTarget, + Schema: map[string]*schema.Schema{ + "replication_target_id": { + Type: schema.TypeString, + Required: true, + }, + // Computed + "availability_domain": { + Type: schema.TypeString, + Computed: true, + }, + "compartment_id": { + Type: schema.TypeString, + Computed: true, + }, + "defined_tags": { + Type: schema.TypeMap, + Computed: true, + Elem: schema.TypeString, + }, + "delta_progress": { + Type: schema.TypeString, + Computed: true, + }, + "delta_status": { + Type: schema.TypeString, + Computed: true, + }, + "display_name": { + Type: schema.TypeString, + Computed: true, + }, + "freeform_tags": { + Type: schema.TypeMap, + Computed: true, + Elem: schema.TypeString, + }, + "last_snapshot_id": { + Type: schema.TypeString, + Computed: true, + }, + "lifecycle_details": { + Type: schema.TypeString, + Computed: true, + }, + "recovery_point_time": { + Type: schema.TypeString, + Computed: true, + }, + "replication_id": { + Type: schema.TypeString, + Computed: true, + }, + "source_id": { + Type: schema.TypeString, + Computed: true, + }, + "state": { + Type: schema.TypeString, + Computed: true, + }, + "target_id": { + Type: schema.TypeString, + Computed: true, + }, + "time_created": { + Type: schema.TypeString, + Computed: true, + }, + }, + } +} + +func readSingularFileStorageReplicationTarget(d *schema.ResourceData, m interface{}) error { + sync := &FileStorageReplicationTargetDataSourceCrud{} + sync.D = d + sync.Client = m.(*client.OracleClients).FileStorageClient() + + return tfresource.ReadResource(sync) +} + +type FileStorageReplicationTargetDataSourceCrud struct { + D *schema.ResourceData + Client *oci_file_storage.FileStorageClient + Res *oci_file_storage.GetReplicationTargetResponse +} + +func (s *FileStorageReplicationTargetDataSourceCrud) VoidState() { + s.D.SetId("") +} + +func (s *FileStorageReplicationTargetDataSourceCrud) Get() error { + request := oci_file_storage.GetReplicationTargetRequest{} + + if replicationTargetId, ok := s.D.GetOkExists("replication_target_id"); ok { + tmp := replicationTargetId.(string) + request.ReplicationTargetId = &tmp + } + + request.RequestMetadata.RetryPolicy = tfresource.GetRetryPolicy(false, "file_storage") + + response, err := s.Client.GetReplicationTarget(context.Background(), request) + if err != nil { + return err + } + + s.Res = &response + return nil +} + +func (s *FileStorageReplicationTargetDataSourceCrud) SetData() error { + if s.Res == nil { + return nil + } + + s.D.SetId(*s.Res.Id) + + if s.Res.AvailabilityDomain != nil { + s.D.Set("availability_domain", *s.Res.AvailabilityDomain) + } + + if s.Res.CompartmentId != nil { + s.D.Set("compartment_id", *s.Res.CompartmentId) + } + + if s.Res.DefinedTags != nil { + s.D.Set("defined_tags", tfresource.DefinedTagsToMap(s.Res.DefinedTags)) + } + + if s.Res.DeltaProgress != nil { + s.D.Set("delta_progress", strconv.FormatInt(*s.Res.DeltaProgress, 10)) + } + + s.D.Set("delta_status", s.Res.DeltaStatus) + + if s.Res.DisplayName != nil { + s.D.Set("display_name", *s.Res.DisplayName) + } + + s.D.Set("freeform_tags", s.Res.FreeformTags) + s.D.Set("freeform_tags", s.Res.FreeformTags) + + if s.Res.LastSnapshotId != nil { + s.D.Set("last_snapshot_id", *s.Res.LastSnapshotId) + } + + if s.Res.LifecycleDetails != nil { + s.D.Set("lifecycle_details", *s.Res.LifecycleDetails) + } + + if s.Res.RecoveryPointTime != nil { + s.D.Set("recovery_point_time", s.Res.RecoveryPointTime.String()) + } + + if s.Res.ReplicationId != nil { + s.D.Set("replication_id", *s.Res.ReplicationId) + } + + if s.Res.SourceId != nil { + s.D.Set("source_id", *s.Res.SourceId) + } + + s.D.Set("state", s.Res.LifecycleState) + + if s.Res.TargetId != nil { + s.D.Set("target_id", *s.Res.TargetId) + } + + if s.Res.TimeCreated != nil { + s.D.Set("time_created", s.Res.TimeCreated.String()) + } + + return nil +} diff --git a/internal/service/file_storage/file_storage_replication_targets_data_source.go b/internal/service/file_storage/file_storage_replication_targets_data_source.go new file mode 100644 index 00000000000..55e5a95dca4 --- /dev/null +++ b/internal/service/file_storage/file_storage_replication_targets_data_source.go @@ -0,0 +1,247 @@ +// Copyright (c) 2017, 2021, Oracle and/or its affiliates. All rights reserved. +// Licensed under the Mozilla Public License v2.0 + +package file_storage + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + oci_file_storage "github.com/oracle/oci-go-sdk/v65/filestorage" + + "github.com/oracle/terraform-provider-oci/internal/client" + "github.com/oracle/terraform-provider-oci/internal/tfresource" +) + +func FileStorageReplicationTargetsDataSource() *schema.Resource { + return &schema.Resource{ + Read: readFileStorageReplicationTargets, + Schema: map[string]*schema.Schema{ + "filter": tfresource.DataSourceFiltersSchema(), + "availability_domain": { + Type: schema.TypeString, + Required: true, + }, + "compartment_id": { + Type: schema.TypeString, + Required: true, + }, + "display_name": { + Type: schema.TypeString, + Optional: true, + }, + "id": { + Type: schema.TypeString, + Optional: true, + }, + "state": { + Type: schema.TypeString, + Optional: true, + }, + "replication_targets": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + // Required + + // Optional + + // Computed + "availability_domain": { + Type: schema.TypeString, + Computed: true, + }, + "compartment_id": { + Type: schema.TypeString, + Computed: true, + }, + "defined_tags": { + Type: schema.TypeMap, + Computed: true, + Elem: schema.TypeString, + }, + "delta_progress": { + Type: schema.TypeString, + Computed: true, + }, + "delta_status": { + Type: schema.TypeString, + Computed: true, + }, + "display_name": { + Type: schema.TypeString, + Computed: true, + }, + "freeform_tags": { + Type: schema.TypeMap, + Computed: true, + Elem: schema.TypeString, + }, + "id": { + Type: schema.TypeString, + Computed: true, + }, + "last_snapshot_id": { + Type: schema.TypeString, + Computed: true, + }, + "lifecycle_details": { + Type: schema.TypeString, + Computed: true, + }, + "recovery_point_time": { + Type: schema.TypeString, + Computed: true, + }, + "replication_id": { + Type: schema.TypeString, + Computed: true, + }, + "source_id": { + Type: schema.TypeString, + Computed: true, + }, + "state": { + Type: schema.TypeString, + Computed: true, + }, + "target_id": { + Type: schema.TypeString, + Computed: true, + }, + "time_created": { + Type: schema.TypeString, + Computed: true, + }, + }, + }, + }, + }, + } +} + +func readFileStorageReplicationTargets(d *schema.ResourceData, m interface{}) error { + sync := &FileStorageReplicationTargetsDataSourceCrud{} + sync.D = d + sync.Client = m.(*client.OracleClients).FileStorageClient() + + return tfresource.ReadResource(sync) +} + +type FileStorageReplicationTargetsDataSourceCrud struct { + D *schema.ResourceData + Client *oci_file_storage.FileStorageClient + Res *oci_file_storage.ListReplicationTargetsResponse +} + +func (s *FileStorageReplicationTargetsDataSourceCrud) VoidState() { + s.D.SetId("") +} + +func (s *FileStorageReplicationTargetsDataSourceCrud) Get() error { + request := oci_file_storage.ListReplicationTargetsRequest{} + + if availabilityDomain, ok := s.D.GetOkExists("availability_domain"); ok { + tmp := availabilityDomain.(string) + request.AvailabilityDomain = &tmp + } + + if compartmentId, ok := s.D.GetOkExists("compartment_id"); ok { + tmp := compartmentId.(string) + request.CompartmentId = &tmp + } + + if displayName, ok := s.D.GetOkExists("display_name"); ok { + tmp := displayName.(string) + request.DisplayName = &tmp + } + + if id, ok := s.D.GetOkExists("id"); ok { + tmp := id.(string) + request.Id = &tmp + } + + if state, ok := s.D.GetOkExists("state"); ok { + request.LifecycleState = oci_file_storage.ListReplicationTargetsLifecycleStateEnum(state.(string)) + } + + request.RequestMetadata.RetryPolicy = tfresource.GetRetryPolicy(false, "file_storage") + + response, err := s.Client.ListReplicationTargets(context.Background(), request) + if err != nil { + return err + } + + s.Res = &response + request.Page = s.Res.OpcNextPage + + for request.Page != nil { + listResponse, err := s.Client.ListReplicationTargets(context.Background(), request) + if err != nil { + return err + } + + s.Res.Items = append(s.Res.Items, listResponse.Items...) + request.Page = listResponse.OpcNextPage + } + + return nil +} + +func (s *FileStorageReplicationTargetsDataSourceCrud) SetData() error { + if s.Res == nil { + return nil + } + + s.D.SetId(tfresource.GenerateDataSourceHashID("FileStorageReplicationTargetsDataSource-", FileStorageReplicationTargetsDataSource(), s.D)) + resources := []map[string]interface{}{} + + for _, r := range s.Res.Items { + replicationTarget := map[string]interface{}{ + "availability_domain": *r.AvailabilityDomain, + "compartment_id": *r.CompartmentId, + } + + if r.DefinedTags != nil { + replicationTarget["defined_tags"] = tfresource.DefinedTagsToMap(r.DefinedTags) + } + + if r.DisplayName != nil { + replicationTarget["display_name"] = *r.DisplayName + } + + replicationTarget["freeform_tags"] = r.FreeformTags + replicationTarget["freeform_tags"] = r.FreeformTags + + if r.Id != nil { + replicationTarget["id"] = *r.Id + } + + if r.LifecycleDetails != nil { + replicationTarget["lifecycle_details"] = *r.LifecycleDetails + } + + if r.RecoveryPointTime != nil { + replicationTarget["recovery_point_time"] = r.RecoveryPointTime.String() + } + + replicationTarget["state"] = r.LifecycleState + + if r.TimeCreated != nil { + replicationTarget["time_created"] = r.TimeCreated.String() + } + + resources = append(resources, replicationTarget) + } + + if f, fOk := s.D.GetOkExists("filter"); fOk { + resources = tfresource.ApplyFilters(f.(*schema.Set), resources, FileStorageReplicationTargetsDataSource().Schema["replication_targets"].Elem.(*schema.Resource).Schema) + } + + if err := s.D.Set("replication_targets", resources); err != nil { + return err + } + + return nil +} diff --git a/internal/service/file_storage/file_storage_replications_data_source.go b/internal/service/file_storage/file_storage_replications_data_source.go new file mode 100644 index 00000000000..2d15390532d --- /dev/null +++ b/internal/service/file_storage/file_storage_replications_data_source.go @@ -0,0 +1,187 @@ +// Copyright (c) 2017, 2021, Oracle and/or its affiliates. All rights reserved. +// Licensed under the Mozilla Public License v2.0 + +package file_storage + +import ( + "context" + "strconv" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + oci_file_storage "github.com/oracle/oci-go-sdk/v65/filestorage" + + "github.com/oracle/terraform-provider-oci/internal/client" + "github.com/oracle/terraform-provider-oci/internal/tfresource" +) + +func FileStorageReplicationsDataSource() *schema.Resource { + return &schema.Resource{ + Read: readFileStorageReplications, + Schema: map[string]*schema.Schema{ + "filter": tfresource.DataSourceFiltersSchema(), + "availability_domain": { + Type: schema.TypeString, + Required: true, + }, + "compartment_id": { + Type: schema.TypeString, + Required: true, + }, + "display_name": { + Type: schema.TypeString, + Optional: true, + }, + "file_system_id": { + Type: schema.TypeString, + Optional: true, + }, + "id": { + Type: schema.TypeString, + Optional: true, + }, + "state": { + Type: schema.TypeString, + Optional: true, + }, + "replications": { + Type: schema.TypeList, + Computed: true, + Elem: tfresource.GetDataSourceItemSchema(FileStorageReplicationResource()), + }, + }, + } +} + +func readFileStorageReplications(d *schema.ResourceData, m interface{}) error { + sync := &FileStorageReplicationsDataSourceCrud{} + sync.D = d + sync.Client = m.(*client.OracleClients).FileStorageClient() + + return tfresource.ReadResource(sync) +} + +type FileStorageReplicationsDataSourceCrud struct { + D *schema.ResourceData + Client *oci_file_storage.FileStorageClient + Res *oci_file_storage.ListReplicationsResponse +} + +func (s *FileStorageReplicationsDataSourceCrud) VoidState() { + s.D.SetId("") +} + +func (s *FileStorageReplicationsDataSourceCrud) Get() error { + request := oci_file_storage.ListReplicationsRequest{} + + if availabilityDomain, ok := s.D.GetOkExists("availability_domain"); ok { + tmp := availabilityDomain.(string) + request.AvailabilityDomain = &tmp + } + + if compartmentId, ok := s.D.GetOkExists("compartment_id"); ok { + tmp := compartmentId.(string) + request.CompartmentId = &tmp + } + + if displayName, ok := s.D.GetOkExists("display_name"); ok { + tmp := displayName.(string) + request.DisplayName = &tmp + } + + if fileSystemId, ok := s.D.GetOkExists("file_system_id"); ok { + tmp := fileSystemId.(string) + request.FileSystemId = &tmp + } + + if id, ok := s.D.GetOkExists("id"); ok { + tmp := id.(string) + request.Id = &tmp + } + + if state, ok := s.D.GetOkExists("state"); ok { + request.LifecycleState = oci_file_storage.ListReplicationsLifecycleStateEnum(state.(string)) + } + + request.RequestMetadata.RetryPolicy = tfresource.GetRetryPolicy(false, "file_storage") + + response, err := s.Client.ListReplications(context.Background(), request) + if err != nil { + return err + } + + s.Res = &response + request.Page = s.Res.OpcNextPage + + for request.Page != nil { + listResponse, err := s.Client.ListReplications(context.Background(), request) + if err != nil { + return err + } + + s.Res.Items = append(s.Res.Items, listResponse.Items...) + request.Page = listResponse.OpcNextPage + } + + return nil +} + +func (s *FileStorageReplicationsDataSourceCrud) SetData() error { + if s.Res == nil { + return nil + } + + s.D.SetId(tfresource.GenerateDataSourceHashID("FileStorageReplicationsDataSource-", FileStorageReplicationsDataSource(), s.D)) + resources := []map[string]interface{}{} + + for _, r := range s.Res.Items { + replication := map[string]interface{}{ + "availability_domain": *r.AvailabilityDomain, + "compartment_id": *r.CompartmentId, + } + + if r.DefinedTags != nil { + replication["defined_tags"] = tfresource.DefinedTagsToMap(r.DefinedTags) + } + + if r.DisplayName != nil { + replication["display_name"] = *r.DisplayName + } + + replication["freeform_tags"] = r.FreeformTags + replication["freeform_tags"] = r.FreeformTags + + if r.Id != nil { + replication["id"] = *r.Id + } + + if r.LifecycleDetails != nil { + replication["lifecycle_details"] = *r.LifecycleDetails + } + + if r.RecoveryPointTime != nil { + replication["recovery_point_time"] = r.RecoveryPointTime.String() + } + + if r.ReplicationInterval != nil { + replication["replication_interval"] = strconv.FormatInt(*r.ReplicationInterval, 10) + } + + replication["state"] = r.LifecycleState + + if r.TimeCreated != nil { + replication["time_created"] = r.TimeCreated.String() + } + + resources = append(resources, replication) + } + + if f, fOk := s.D.GetOkExists("filter"); fOk { + resources = tfresource.ApplyFilters(f.(*schema.Set), resources, FileStorageReplicationsDataSource().Schema["replications"].Elem.(*schema.Resource).Schema) + } + + if err := s.D.Set("replications", resources); err != nil { + return err + } + + return nil +} diff --git a/internal/service/file_storage/file_storage_snapshot_data_source.go b/internal/service/file_storage/file_storage_snapshot_data_source.go index bdf3b1084fa..0a9ebc20a93 100644 --- a/internal/service/file_storage/file_storage_snapshot_data_source.go +++ b/internal/service/file_storage/file_storage_snapshot_data_source.go @@ -92,6 +92,12 @@ func (s *FileStorageSnapshotDataSourceCrud) SetData() error { s.D.Set("provenance_id", *s.Res.ProvenanceId) } + if s.Res.SnapshotTime != nil { + s.D.Set("snapshot_time", s.Res.SnapshotTime.String()) + } + + s.D.Set("snapshot_type", s.Res.SnapshotType) + s.D.Set("state", s.Res.LifecycleState) if s.Res.TimeCreated != nil { diff --git a/internal/service/file_storage/file_storage_snapshot_resource.go b/internal/service/file_storage/file_storage_snapshot_resource.go index fd81c1c299d..ba23ea91dd2 100644 --- a/internal/service/file_storage/file_storage_snapshot_resource.go +++ b/internal/service/file_storage/file_storage_snapshot_resource.go @@ -65,6 +65,14 @@ func FileStorageSnapshotResource() *schema.Resource { Type: schema.TypeString, Computed: true, }, + "snapshot_time": { + Type: schema.TypeString, + Computed: true, + }, + "snapshot_type": { + Type: schema.TypeString, + Computed: true, + }, "state": { Type: schema.TypeString, Computed: true, @@ -270,6 +278,12 @@ func (s *FileStorageSnapshotResourceCrud) SetData() error { s.D.Set("provenance_id", *s.Res.ProvenanceId) } + if s.Res.SnapshotTime != nil { + s.D.Set("snapshot_time", s.Res.SnapshotTime.String()) + } + + s.D.Set("snapshot_type", s.Res.SnapshotType) + s.D.Set("state", s.Res.LifecycleState) if s.Res.TimeCreated != nil { diff --git a/internal/service/file_storage/file_storage_snapshots_data_source.go b/internal/service/file_storage/file_storage_snapshots_data_source.go index 0d51b70759f..5bb3778726b 100644 --- a/internal/service/file_storage/file_storage_snapshots_data_source.go +++ b/internal/service/file_storage/file_storage_snapshots_data_source.go @@ -136,6 +136,12 @@ func (s *FileStorageSnapshotsDataSourceCrud) SetData() error { snapshot["provenance_id"] = *r.ProvenanceId } + if r.SnapshotTime != nil { + snapshot["snapshot_time"] = r.SnapshotTime.String() + } + + snapshot["snapshot_type"] = r.SnapshotType + snapshot["state"] = r.LifecycleState if r.TimeCreated != nil { diff --git a/internal/service/file_storage/register_datasource.go b/internal/service/file_storage/register_datasource.go index 68d45b1010d..4ee397f185c 100644 --- a/internal/service/file_storage/register_datasource.go +++ b/internal/service/file_storage/register_datasource.go @@ -10,6 +10,10 @@ func RegisterDatasource() { tfresource.RegisterDatasource("oci_file_storage_exports", FileStorageExportsDataSource()) tfresource.RegisterDatasource("oci_file_storage_file_systems", FileStorageFileSystemsDataSource()) tfresource.RegisterDatasource("oci_file_storage_mount_targets", FileStorageMountTargetsDataSource()) + tfresource.RegisterDatasource("oci_file_storage_replication", FileStorageReplicationDataSource()) + tfresource.RegisterDatasource("oci_file_storage_replication_target", FileStorageReplicationTargetDataSource()) + tfresource.RegisterDatasource("oci_file_storage_replication_targets", FileStorageReplicationTargetsDataSource()) + tfresource.RegisterDatasource("oci_file_storage_replications", FileStorageReplicationsDataSource()) tfresource.RegisterDatasource("oci_file_storage_snapshot", FileStorageSnapshotDataSource()) tfresource.RegisterDatasource("oci_file_storage_snapshots", FileStorageSnapshotsDataSource()) } diff --git a/internal/service/file_storage/register_resource.go b/internal/service/file_storage/register_resource.go index 29fcbfc9809..795e63c9516 100644 --- a/internal/service/file_storage/register_resource.go +++ b/internal/service/file_storage/register_resource.go @@ -10,5 +10,6 @@ func RegisterResource() { tfresource.RegisterResource("oci_file_storage_export_set", FileStorageExportSetResource()) tfresource.RegisterResource("oci_file_storage_file_system", FileStorageFileSystemResource()) tfresource.RegisterResource("oci_file_storage_mount_target", FileStorageMountTargetResource()) + tfresource.RegisterResource("oci_file_storage_replication", FileStorageReplicationResource()) tfresource.RegisterResource("oci_file_storage_snapshot", FileStorageSnapshotResource()) } diff --git a/website/docs/d/file_storage_file_systems.html.markdown b/website/docs/d/file_storage_file_systems.html.markdown index fed16c19693..12082ba9c11 100644 --- a/website/docs/d/file_storage_file_systems.html.markdown +++ b/website/docs/d/file_storage_file_systems.html.markdown @@ -38,8 +38,8 @@ The following arguments are supported: * `compartment_id` - (Required) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment. * `display_name` - (Optional) A user-friendly name. It does not have to be unique, and it is changeable. Example: `My resource` * `id` - (Optional) Filter results by [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). Must be an OCID of the correct type for the resouce type. -* `parent_file_system_id` - (Optional) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the file system that contains the source snapshot of a cloned file system. See [Cloning a File System](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/cloningafilesystem.htm). -* `source_snapshot_id` - (Optional) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the snapshot used to create a cloned file system. See [Cloning a File System](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/cloningafilesystem.htm). +* `parent_file_system_id` - (Optional) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the file system that contains the source snapshot of a cloned file system. See [Cloning a File System](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/cloningFS.htm). +* `source_snapshot_id` - (Optional) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the snapshot used to create a cloned file system. See [Cloning a File System](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/cloningFS.htm). * `state` - (Optional) Filter results by the specified lifecycle state. Must be a valid state for the resource type. @@ -59,14 +59,16 @@ The following attributes are exported: * `display_name` - A user-friendly name. It does not have to be unique, and it is changeable. Avoid entering confidential information. Example: `My file system` * `freeform_tags` - Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Department": "Finance"}` * `id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the file system. -* `is_clone_parent` - Specifies whether the file system has been cloned. See [Cloning a File System](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/cloningafilesystem.htm). -* `is_hydrated` - Specifies whether the data has finished copying from the source to the clone. Hydration can take up to several hours to complete depending on the size of the source. The source and clone remain available during hydration, but there may be some performance impact. See [Cloning a File System](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/cloningafilesystem.htm#hydration). +* `is_clone_parent` - Specifies whether the file system has been cloned. See [Cloning a File System](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/cloningFS.htm). +* `is_hydrated` - Specifies whether the data has finished copying from the source to the clone. Hydration can take up to several hours to complete depending on the size of the source. The source and clone remain available during hydration, but there may be some performance impact. See [Cloning a File System](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/cloningFS.htm#hydration). +* `is_targetable` - Specifies whether the file system can be used as a target file system for replication. For more information, see [Using Replication](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/using-replication.htm). * `kms_key_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the KMS key used to encrypt the encryption keys associated with this file system. * `lifecycle_details` - Additional information about the current 'lifecycleState'. * `metered_bytes` - The number of bytes consumed by the file system, including any snapshots. This number reflects the metered size of the file system and is updated asynchronously with respect to updates to the file system. For more information, see [File System Usage and Metering](https://docs.cloud.oracle.com/iaas/Content/File/Concepts/FSutilization.htm). +* `replication_target_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the replication target associated with the file system. Empty if the file system is not being used as target in a replication. * `source_details` - Source information for the file system. - * `parent_file_system_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the file system that contains the source snapshot of a cloned file system. See [Cloning a File System](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/cloningafilesystem.htm). - * `source_snapshot_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the source snapshot used to create a cloned file system. See [Cloning a File System](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/cloningafilesystem.htm). + * `parent_file_system_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the file system that contains the source snapshot of a cloned file system. See [Cloning a File System](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/cloningFS.htm). + * `source_snapshot_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the source snapshot used to create a cloned file system. See [Cloning a File System](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/cloningFS.htm). * `state` - The current state of the file system. * `time_created` - The date and time the file system was created, expressed in [RFC 3339](https://tools.ietf.org/rfc/rfc3339) timestamp format. Example: `2016-08-25T21:10:29.600Z` diff --git a/website/docs/d/file_storage_replication.html.markdown b/website/docs/d/file_storage_replication.html.markdown new file mode 100644 index 00000000000..c06146552cb --- /dev/null +++ b/website/docs/d/file_storage_replication.html.markdown @@ -0,0 +1,52 @@ +--- +subcategory: "File Storage" +layout: "oci" +page_title: "Oracle Cloud Infrastructure: oci_file_storage_replication" +sidebar_current: "docs-oci-datasource-file_storage-replication" +description: |- + Provides details about a specific Replication in Oracle Cloud Infrastructure File Storage service +--- + +# Data Source: oci_file_storage_replication +This data source provides details about a specific Replication resource in Oracle Cloud Infrastructure File Storage service. + +Gets the specified replication's information. + +## Example Usage + +```hcl +data "oci_file_storage_replication" "test_replication" { + #Required + replication_id = oci_file_storage_replication.test_replication.id +} +``` + +## Argument Reference + +The following arguments are supported: + +* `replication_id` - (Required) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the replication. + + +## Attributes Reference + +The following attributes are exported: + +* `availability_domain` - The availability domain the replication is in. The replication must be in the same availability domain as the source file system. Example: `Uocm:PHX-AD-1` +* `compartment_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment that contains the replication. +* `defined_tags` - Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Operations.CostCenter": "42"}` +* `delta_progress` - Percentage progress of the current replication cycle. +* `delta_status` - The current state of the snapshot during replication operations. +* `display_name` - A user-friendly name. It does not have to be unique, and it is changeable. Avoid entering confidential information. Example: `My replication` +* `freeform_tags` - Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Department": "Finance"}` +* `id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the replication. +* `last_snapshot_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the last snapshot that has been replicated completely. Empty if the copy of the initial snapshot is not complete. +* `lifecycle_details` - Additional information about the current 'lifecycleState'. +* `recovery_point_time` - The [`snapshotTime`](https://docs.cloud.oracle.com/iaas/api/#/en/iaas/latest/Snapshot/snapshotTime) of the most recent recoverable replication snapshot in [RFC 3339](https://tools.ietf.org/rfc/rfc3339) timestamp format. Example: `2021-04-04T20:01:29.100Z` +* `replication_interval` - Duration in minutes between replication snapshots. +* `replication_target_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the [`ReplicationTarget`](https://docs.cloud.oracle.com/iaas/api/#/en/iaas/latest/ReplicationTarget). +* `source_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the source file system. +* `state` - The current state of this replication. This resource can be in a `FAILED` state if replication target is deleted instead of the replication resource. +* `target_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the target file system. +* `time_created` - The date and time the replication was created in [RFC 3339](https://tools.ietf.org/rfc/rfc3339) timestamp format. Example: `2021-01-04T20:01:29.100Z` + diff --git a/website/docs/d/file_storage_replication_target.html.markdown b/website/docs/d/file_storage_replication_target.html.markdown new file mode 100644 index 00000000000..cafa4fdf2dc --- /dev/null +++ b/website/docs/d/file_storage_replication_target.html.markdown @@ -0,0 +1,51 @@ +--- +subcategory: "File Storage" +layout: "oci" +page_title: "Oracle Cloud Infrastructure: oci_file_storage_replication_target" +sidebar_current: "docs-oci-datasource-file_storage-replication_target" +description: |- + Provides details about a specific Replication Target in Oracle Cloud Infrastructure File Storage service +--- + +# Data Source: oci_file_storage_replication_target +This data source provides details about a specific Replication Target resource in Oracle Cloud Infrastructure File Storage service. + +Gets the specified replication target's information. + +## Example Usage + +```hcl +data "oci_file_storage_replication_target" "test_replication_target" { + #Required + replication_target_id = oci_file_storage_replication_target.test_replication_target.id +} +``` + +## Argument Reference + +The following arguments are supported: + +* `replication_target_id` - (Required) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the replication target. + + +## Attributes Reference + +The following attributes are exported: + +* `availability_domain` - The availability domain the replication target is in. Must be in the same availability domain as the target file system. Example: `Uocm:PHX-AD-1` +* `compartment_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment that contains the replication. +* `defined_tags` - Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Operations.CostCenter": "42"}` +* `delta_progress` - Percentage progress of the current replication cycle. +* `delta_status` - The current state of the snapshot during replication operations. +* `display_name` - A user-friendly name. This name is same as the replication display name for the associated resource. Example: `My Replication` +* `freeform_tags` - Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Department": "Finance"}` +* `id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the replication target. +* `last_snapshot_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the last snapshot snapshot which was completely applied to the target file system. Empty while the initial snapshot is being applied. +* `lifecycle_details` - Additional information about the current `lifecycleState`. +* `recovery_point_time` - The snapshotTime of the most recent recoverable replication snapshot in [RFC 3339](https://tools.ietf.org/rfc/rfc3339) timestamp format. Example: `2021-04-04T20:01:29.100Z` +* `replication_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of replication. +* `source_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of source filesystem. +* `state` - The current state of this replication. +* `target_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of target filesystem. +* `time_created` - The date and time the replication target was created in target region. in [RFC 3339](https://tools.ietf.org/rfc/rfc3339) timestamp format. Example: `2021-01-04T20:01:29.100Z` + diff --git a/website/docs/d/file_storage_replication_targets.html.markdown b/website/docs/d/file_storage_replication_targets.html.markdown new file mode 100644 index 00000000000..3dafe036c9c --- /dev/null +++ b/website/docs/d/file_storage_replication_targets.html.markdown @@ -0,0 +1,68 @@ +--- +subcategory: "File Storage" +layout: "oci" +page_title: "Oracle Cloud Infrastructure: oci_file_storage_replication_targets" +sidebar_current: "docs-oci-datasource-file_storage-replication_targets" +description: |- + Provides the list of Replication Targets in Oracle Cloud Infrastructure File Storage service +--- + +# Data Source: oci_file_storage_replication_targets +This data source provides the list of Replication Targets in Oracle Cloud Infrastructure File Storage service. + +Lists the replication target resources in the specified compartment. + + +## Example Usage + +```hcl +data "oci_file_storage_replication_targets" "test_replication_targets" { + #Required + availability_domain = var.replication_target_availability_domain + compartment_id = var.compartment_id + + #Optional + display_name = var.replication_target_display_name + id = var.replication_target_id + state = var.replication_target_state +} +``` + +## Argument Reference + +The following arguments are supported: + +* `availability_domain` - (Required) The name of the availability domain. Example: `Uocm:PHX-AD-1` +* `compartment_id` - (Required) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment. +* `display_name` - (Optional) A user-friendly name. It does not have to be unique, and it is changeable. Example: `My resource` +* `id` - (Optional) Filter results by [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). Must be an OCID of the correct type for the resouce type. +* `state` - (Optional) Filter results by the specified lifecycle state. Must be a valid state for the resource type. + + +## Attributes Reference + +The following attributes are exported: + +* `replication_targets` - The list of replication_targets. + +### ReplicationTarget Reference + +The following attributes are exported: + +* `availability_domain` - The availability domain the replication target is in. Must be in the same availability domain as the target file system. Example: `Uocm:PHX-AD-1` +* `compartment_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment that contains the replication. +* `defined_tags` - Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Operations.CostCenter": "42"}` +* `delta_progress` - Percentage progress of the current replication cycle. +* `delta_status` - The current state of the snapshot during replication operations. +* `display_name` - A user-friendly name. This name is same as the replication display name for the associated resource. Example: `My Replication` +* `freeform_tags` - Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Department": "Finance"}` +* `id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the replication target. +* `last_snapshot_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the last snapshot snapshot which was completely applied to the target file system. Empty while the initial snapshot is being applied. +* `lifecycle_details` - Additional information about the current `lifecycleState`. +* `recovery_point_time` - The snapshotTime of the most recent recoverable replication snapshot in [RFC 3339](https://tools.ietf.org/rfc/rfc3339) timestamp format. Example: `2021-04-04T20:01:29.100Z` +* `replication_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of replication. +* `source_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of source filesystem. +* `state` - The current state of this replication. +* `target_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of target filesystem. +* `time_created` - The date and time the replication target was created in target region. in [RFC 3339](https://tools.ietf.org/rfc/rfc3339) timestamp format. Example: `2021-01-04T20:01:29.100Z` + diff --git a/website/docs/d/file_storage_replications.html.markdown b/website/docs/d/file_storage_replications.html.markdown new file mode 100644 index 00000000000..8aa669bf83a --- /dev/null +++ b/website/docs/d/file_storage_replications.html.markdown @@ -0,0 +1,71 @@ +--- +subcategory: "File Storage" +layout: "oci" +page_title: "Oracle Cloud Infrastructure: oci_file_storage_replications" +sidebar_current: "docs-oci-datasource-file_storage-replications" +description: |- + Provides the list of Replications in Oracle Cloud Infrastructure File Storage service +--- + +# Data Source: oci_file_storage_replications +This data source provides the list of Replications in Oracle Cloud Infrastructure File Storage service. + +Lists the replication resources in the specified compartment. + + +## Example Usage + +```hcl +data "oci_file_storage_replications" "test_replications" { + #Required + availability_domain = var.replication_availability_domain + compartment_id = var.compartment_id + + #Optional + display_name = var.replication_display_name + file_system_id = oci_file_storage_file_system.test_file_system.id + id = var.replication_id + state = var.replication_state +} +``` + +## Argument Reference + +The following arguments are supported: + +* `availability_domain` - (Required) The name of the availability domain. Example: `Uocm:PHX-AD-1` +* `compartment_id` - (Required) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment. +* `display_name` - (Optional) A user-friendly name. It does not have to be unique, and it is changeable. Example: `My resource` +* `file_system_id` - (Optional) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the source file system. +* `id` - (Optional) Filter results by [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). Must be an OCID of the correct type for the resouce type. +* `state` - (Optional) Filter results by the specified lifecycle state. Must be a valid state for the resource type. + + +## Attributes Reference + +The following attributes are exported: + +* `replications` - The list of replications. + +### Replication Reference + +The following attributes are exported: + +* `availability_domain` - The availability domain the replication is in. The replication must be in the same availability domain as the source file system. Example: `Uocm:PHX-AD-1` +* `compartment_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment that contains the replication. +* `defined_tags` - Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Operations.CostCenter": "42"}` +* `delta_progress` - Percentage progress of the current replication cycle. +* `delta_status` - The current state of the snapshot during replication operations. +* `display_name` - A user-friendly name. It does not have to be unique, and it is changeable. Avoid entering confidential information. Example: `My replication` +* `freeform_tags` - Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Department": "Finance"}` +* `id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the replication. +* `last_snapshot_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the last snapshot that has been replicated completely. Empty if the copy of the initial snapshot is not complete. +* `lifecycle_details` - Additional information about the current 'lifecycleState'. +* `recovery_point_time` - The [`snapshotTime`](https://docs.cloud.oracle.com/iaas/api/#/en/iaas/latest/Snapshot/snapshotTime) of the most recent recoverable replication snapshot in [RFC 3339](https://tools.ietf.org/rfc/rfc3339) timestamp format. Example: `2021-04-04T20:01:29.100Z` +* `replication_interval` - Duration in minutes between replication snapshots. +* `replication_target_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the [`ReplicationTarget`](https://docs.cloud.oracle.com/iaas/api/#/en/iaas/latest/ReplicationTarget). +* `source_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the source file system. +* `state` - The current state of this replication. This resource can be in a `FAILED` state if replication target is deleted instead of the replication resource. +* `target_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the target file system. +* `time_created` - The date and time the replication was created in [RFC 3339](https://tools.ietf.org/rfc/rfc3339) timestamp format. Example: `2021-01-04T20:01:29.100Z` + diff --git a/website/docs/d/file_storage_snapshot.html.markdown b/website/docs/d/file_storage_snapshot.html.markdown index 814b891e404..46f8a216997 100644 --- a/website/docs/d/file_storage_snapshot.html.markdown +++ b/website/docs/d/file_storage_snapshot.html.markdown @@ -36,14 +36,21 @@ The following attributes are exported: * `file_system_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the file system from which the snapshot was created. * `freeform_tags` - Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Department": "Finance"}` * `id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the snapshot. -* `is_clone_source` - Specifies whether the snapshot has been cloned. See [Cloning a File System](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/cloningafilesystem.htm). -* `lifecycle_details` - Additional information about the current 'lifecycleState'. +* `is_clone_source` - Specifies whether the snapshot has been cloned. See [Cloning a File System](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/cloningFS.htm). +* `lifecycle_details` - Additional information about the current `lifecycleState`. * `name` - Name of the snapshot. This value is immutable. Avoid entering confidential information. Example: `Sunday` -* `provenance_id` - An [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) identifying the parent from which this snapshot was cloned. If this snapshot was not cloned, then the `provenanceId` is the same as the snapshot `id` value. If this snapshot was cloned, then the `provenanceId` value is the parent's `provenanceId`. See [Cloning a File System](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/cloningafilesystem.htm). +* `provenance_id` - An [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) identifying the parent from which this snapshot was cloned. If this snapshot was not cloned, then the `provenanceId` is the same as the snapshot `id` value. If this snapshot was cloned, then the `provenanceId` value is the parent's `provenanceId`. See [Cloning a File System](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/cloningFS.htm). +* `snapshot_time` - The date and time the snapshot was taken, expressed in [RFC 3339](https://tools.ietf.org/rfc/rfc3339) timestamp format. This value might be the same or different from `timeCreated` depending on the following factors: + * If the snapshot is created in the original file system directory. + * If the snapshot is cloned from a file system. + * If the snapshot is replicated from a file system. + + Example: `2020-08-25T21:10:29.600Z` +* `snapshot_type` - Specifies the generation type of the snapshot. * `state` - The current state of the snapshot. * `time_created` - The date and time the snapshot was created, expressed in [RFC 3339](https://tools.ietf.org/rfc/rfc3339) timestamp format. Example: `2016-08-25T21:10:29.600Z` diff --git a/website/docs/d/file_storage_snapshots.html.markdown b/website/docs/d/file_storage_snapshots.html.markdown index 8e9158e4421..5b666c1563f 100644 --- a/website/docs/d/file_storage_snapshots.html.markdown +++ b/website/docs/d/file_storage_snapshots.html.markdown @@ -49,14 +49,21 @@ The following attributes are exported: * `file_system_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the file system from which the snapshot was created. * `freeform_tags` - Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Department": "Finance"}` * `id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the snapshot. -* `is_clone_source` - Specifies whether the snapshot has been cloned. See [Cloning a File System](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/cloningafilesystem.htm). -* `lifecycle_details` - Additional information about the current 'lifecycleState'. +* `is_clone_source` - Specifies whether the snapshot has been cloned. See [Cloning a File System](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/cloningFS.htm). +* `lifecycle_details` - Additional information about the current `lifecycleState`. * `name` - Name of the snapshot. This value is immutable. Avoid entering confidential information. Example: `Sunday` -* `provenance_id` - An [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) identifying the parent from which this snapshot was cloned. If this snapshot was not cloned, then the `provenanceId` is the same as the snapshot `id` value. If this snapshot was cloned, then the `provenanceId` value is the parent's `provenanceId`. See [Cloning a File System](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/cloningafilesystem.htm). +* `provenance_id` - An [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) identifying the parent from which this snapshot was cloned. If this snapshot was not cloned, then the `provenanceId` is the same as the snapshot `id` value. If this snapshot was cloned, then the `provenanceId` value is the parent's `provenanceId`. See [Cloning a File System](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/cloningFS.htm). +* `snapshot_time` - The date and time the snapshot was taken, expressed in [RFC 3339](https://tools.ietf.org/rfc/rfc3339) timestamp format. This value might be the same or different from `timeCreated` depending on the following factors: + * If the snapshot is created in the original file system directory. + * If the snapshot is cloned from a file system. + * If the snapshot is replicated from a file system. + + Example: `2020-08-25T21:10:29.600Z` +* `snapshot_type` - Specifies the generation type of the snapshot. * `state` - The current state of the snapshot. * `time_created` - The date and time the snapshot was created, expressed in [RFC 3339](https://tools.ietf.org/rfc/rfc3339) timestamp format. Example: `2016-08-25T21:10:29.600Z` diff --git a/website/docs/guides/resource_discovery.html.markdown b/website/docs/guides/resource_discovery.html.markdown index ba74567b95f..530e0040ada 100644 --- a/website/docs/guides/resource_discovery.html.markdown +++ b/website/docs/guides/resource_discovery.html.markdown @@ -628,6 +628,7 @@ file_storage * oci\_file\_storage\_mount\_target * oci\_file\_storage\_export * oci\_file\_storage\_snapshot +* oci\_file\_storage\_replication functions diff --git a/website/docs/r/file_storage_file_system.html.markdown b/website/docs/r/file_storage_file_system.html.markdown index 94cb058f762..953d28fec30 100644 --- a/website/docs/r/file_storage_file_system.html.markdown +++ b/website/docs/r/file_storage_file_system.html.markdown @@ -35,7 +35,7 @@ Management Service API. All Oracle Cloud Infrastructure resources, including file systems, get an Oracle-assigned, unique ID called an Oracle -Cloud Identifier ([OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm)). +Cloud Identifier ([OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm)). When you create a resource, you can find its OCID in the response. You can also retrieve a resource's OCID by using a List API operation on that resource type or by viewing the resource in the Console. @@ -68,7 +68,7 @@ The following arguments are supported: * `display_name` - (Optional) (Updatable) A user-friendly name. It does not have to be unique, and it is changeable. Avoid entering confidential information. Example: `My file system` * `freeform_tags` - (Optional) (Updatable) Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Department": "Finance"}` * `kms_key_id` - (Optional) (Updatable) The OCID of KMS key used to encrypt the encryption keys associated with this file system. May be unset as a blank or deleted from the configuration to remove the KMS key. -* `source_snapshot_id` - (Optional) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the snapshot used to create a cloned file system. See [Cloning a File System](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/cloningafilesystem.htm). +* `source_snapshot_id` - (Optional) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the snapshot used to create a cloned file system. See [Cloning a File System](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/cloningFS.htm). ** IMPORTANT ** @@ -84,14 +84,16 @@ The following attributes are exported: * `display_name` - A user-friendly name. It does not have to be unique, and it is changeable. Avoid entering confidential information. Example: `My file system` * `freeform_tags` - Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Department": "Finance"}` * `id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the file system. -* `is_clone_parent` - Specifies whether the file system has been cloned. See [Cloning a File System](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/cloningafilesystem.htm). -* `is_hydrated` - Specifies whether the data has finished copying from the source to the clone. Hydration can take up to several hours to complete depending on the size of the source. The source and clone remain available during hydration, but there may be some performance impact. See [Cloning a File System](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/cloningafilesystem.htm#hydration). +* `is_clone_parent` - Specifies whether the file system has been cloned. See [Cloning a File System](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/cloningFS.htm). +* `is_hydrated` - Specifies whether the data has finished copying from the source to the clone. Hydration can take up to several hours to complete depending on the size of the source. The source and clone remain available during hydration, but there may be some performance impact. See [Cloning a File System](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/cloningFS.htm#hydration). +* `is_targetable` - Specifies whether the file system can be used as a target file system for replication. For more information, see [Using Replication](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/using-replication.htm). * `kms_key_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the KMS key used to encrypt the encryption keys associated with this file system. * `lifecycle_details` - Additional information about the current 'lifecycleState'. * `metered_bytes` - The number of bytes consumed by the file system, including any snapshots. This number reflects the metered size of the file system and is updated asynchronously with respect to updates to the file system. For more information, see [File System Usage and Metering](https://docs.cloud.oracle.com/iaas/Content/File/Concepts/FSutilization.htm). +* `replication_target_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the replication target associated with the file system. Empty if the file system is not being used as target in a replication. * `source_details` - Source information for the file system. - * `parent_file_system_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the file system that contains the source snapshot of a cloned file system. See [Cloning a File System](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/cloningafilesystem.htm). - * `source_snapshot_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the source snapshot used to create a cloned file system. See [Cloning a File System](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/cloningafilesystem.htm). + * `parent_file_system_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the file system that contains the source snapshot of a cloned file system. See [Cloning a File System](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/cloningFS.htm). + * `source_snapshot_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the source snapshot used to create a cloned file system. See [Cloning a File System](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/cloningFS.htm). * `state` - The current state of the file system. * `time_created` - The date and time the file system was created, expressed in [RFC 3339](https://tools.ietf.org/rfc/rfc3339) timestamp format. Example: `2016-08-25T21:10:29.600Z` diff --git a/website/docs/r/file_storage_mount_target.html.markdown b/website/docs/r/file_storage_mount_target.html.markdown index 75864723657..d063c50cd19 100644 --- a/website/docs/r/file_storage_mount_target.html.markdown +++ b/website/docs/r/file_storage_mount_target.html.markdown @@ -38,8 +38,8 @@ Management Service API. All Oracle Cloud Infrastructure Services resources, including mount targets, get an Oracle-assigned, unique ID called an -Oracle Cloud Identifier ([OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm)). -When you create a resource, you can find its OCID in the response. +Oracle Cloud Identifier ([OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm)). +When you create a resource, you can find its OCID in the response. You can also retrieve a resource's OCID by using a List API operation on that resource type, or by viewing the resource in the Console. @@ -74,10 +74,16 @@ The following arguments are supported: * `freeform_tags` - (Optional) (Updatable) Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Department": "Finance"}` * `hostname_label` - (Optional) The hostname for the mount target's IP address, used for DNS resolution. The value is the hostname portion of the private IP address's fully qualified domain name (FQDN). For example, `files-1` in the FQDN `files-1.subnet123.vcn1.oraclevcn.com`. Must be unique across all VNICs in the subnet and comply with [RFC 952](https://tools.ietf.org/html/rfc952) and [RFC 1123](https://tools.ietf.org/html/rfc1123). + Note: This attribute value is stored in the [PrivateIp](https://docs.cloud.oracle.com/en-us/iaas/api/#/en/iaas/20160918/PrivateIp/) resource, not in the `mountTarget` resource. To update the `hostnameLabel`, use `GetMountTarget` to obtain the [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the mount target's private IPs (`privateIpIds`). Then, you can use [UpdatePrivateIp](https://docs.cloud.oracle.com/en-us/iaas/api/#/en/iaas/20160918/PrivateIp/UpdatePrivateIp) to update the `hostnameLabel` value. + For more information, see [DNS in Your Virtual Cloud Network](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/dns.htm). Example: `files-1` -* `ip_address` - (Optional) A private IP address of your choice. Must be an available IP address within the subnet's CIDR. If you don't specify a value, Oracle automatically assigns a private IP address from the subnet. Example: `10.0.3.3` +* `ip_address` - (Optional) A private IP address of your choice. Must be an available IP address within the subnet's CIDR. If you don't specify a value, Oracle automatically assigns a private IP address from the subnet. + + Note: This attribute value is stored in the [PrivateIp](https://docs.cloud.oracle.com/en-us/iaas/api/#/en/iaas/20160918/PrivateIp/) resource, not in the `mountTarget` resource. To update the `ipAddress`, use `GetMountTarget` to obtain the [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the mount target's private IPs (`privateIpIds`). Then, you can use [UpdatePrivateIp](https://docs.cloud.oracle.com/en-us/iaas/api/#/en/iaas/20160918/PrivateIp/UpdatePrivateIp) to update the `ipAddress` value. + + Example: `10.0.3.3` * `nsg_ids` - (Optional) (Updatable) A list of Network Security Group [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) associated with this mount target. A maximum of 5 is allowed. Setting this to an empty array after the list is created removes the mount target from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm). * `subnet_id` - (Required) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the subnet in which to create the mount target. diff --git a/website/docs/r/file_storage_replication.html.markdown b/website/docs/r/file_storage_replication.html.markdown new file mode 100644 index 00000000000..eb1c109f218 --- /dev/null +++ b/website/docs/r/file_storage_replication.html.markdown @@ -0,0 +1,112 @@ +--- +subcategory: "File Storage" +layout: "oci" +page_title: "Oracle Cloud Infrastructure: oci_file_storage_replication" +sidebar_current: "docs-oci-resource-file_storage-replication" +description: |- + Provides the Replication resource in Oracle Cloud Infrastructure File Storage service +--- + +# oci_file_storage_replication +This resource provides the Replication resource in Oracle Cloud Infrastructure File Storage service. + +Creates a new replication in the specified compartment. +Replications are the primary resource that governs the policy of cross-region replication between source +and target file systems. Replications are associated with a secondary resource called a [`ReplicationTarget`](https://docs.cloud.oracle.com/iaas/api/#/en/iaas/latest/ReplicationTarget) +located in another availability domain. +The associated replication target resource is automatically created along with the replication resource. +The replication retrieves the delta of data between two snapshots of a source file system +and sends it to the associated `ReplicationTarget`, which retrieves the delta and applies it to the target +file system. +Only unexported file systems can be used as target file systems. +For more information, see [Using Replication](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/FSreplication.htm). + +For information about access control and compartments, see +[Overview of the IAM +Service](https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/overview.htm). + +For information about availability domains, see [Regions and +Availability Domains](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/regions.htm). +To get a list of availability domains, use the +`ListAvailabilityDomains` operation in the Identity and Access +Management Service API. + +All Oracle Cloud Infrastructure Services resources, including +replications, get an Oracle-assigned, unique ID called an +Oracle Cloud Identifier ([OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm)). +When you create a resource, you can find its OCID in the response. +You can also retrieve a resource's OCID by using a List API operation on that resource +type, or by viewing the resource in the Console. + + +## Example Usage + +```hcl +resource "oci_file_storage_replication" "test_replication" { + #Required + compartment_id = var.compartment_id + source_id = oci_file_storage_source.test_source.id + target_id = oci_cloud_guard_target.test_target.id + + #Optional + defined_tags = {"Operations.CostCenter"= "42"} + display_name = var.replication_display_name + freeform_tags = {"Department"= "Finance"} + replication_interval = var.replication_replication_interval +} +``` + +## Argument Reference + +The following arguments are supported: + +* `compartment_id` - (Required) (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment that contains the replication. +* `defined_tags` - (Optional) (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Operations.CostCenter": "42"}` +* `display_name` - (Optional) (Updatable) A user-friendly name. It does not have to be unique, and it is changeable. Avoid entering confidential information. An associated replication target will also created with the same `displayName`. Example: `My replication` +* `freeform_tags` - (Optional) (Updatable) Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Department": "Finance"}` +* `replication_interval` - (Optional) (Updatable) Duration in minutes between replication snapshots. +* `source_id` - (Required) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the source file system. +* `target_id` - (Required) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the target file system. + + +** IMPORTANT ** +Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values + +## Attributes Reference + +The following attributes are exported: + +* `availability_domain` - The availability domain the replication is in. The replication must be in the same availability domain as the source file system. Example: `Uocm:PHX-AD-1` +* `compartment_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment that contains the replication. +* `defined_tags` - Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Operations.CostCenter": "42"}` +* `delta_progress` - Percentage progress of the current replication cycle. +* `delta_status` - The current state of the snapshot during replication operations. +* `display_name` - A user-friendly name. It does not have to be unique, and it is changeable. Avoid entering confidential information. Example: `My replication` +* `freeform_tags` - Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Department": "Finance"}` +* `id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the replication. +* `last_snapshot_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the last snapshot that has been replicated completely. Empty if the copy of the initial snapshot is not complete. +* `lifecycle_details` - Additional information about the current 'lifecycleState'. +* `recovery_point_time` - The [`snapshotTime`](https://docs.cloud.oracle.com/iaas/api/#/en/iaas/latest/Snapshot/snapshotTime) of the most recent recoverable replication snapshot in [RFC 3339](https://tools.ietf.org/rfc/rfc3339) timestamp format. Example: `2021-04-04T20:01:29.100Z` +* `replication_interval` - Duration in minutes between replication snapshots. +* `replication_target_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the [`ReplicationTarget`](https://docs.cloud.oracle.com/iaas/api/#/en/iaas/latest/ReplicationTarget). +* `source_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the source file system. +* `state` - The current state of this replication. This resource can be in a `FAILED` state if replication target is deleted instead of the replication resource. +* `target_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the target file system. +* `time_created` - The date and time the replication was created in [RFC 3339](https://tools.ietf.org/rfc/rfc3339) timestamp format. Example: `2021-01-04T20:01:29.100Z` + +## Timeouts + +The `timeouts` block allows you to specify [timeouts](https://registry.terraform.io/providers/hashicorp/oci/latest/docs/guides/changing_timeouts) for certain operations: + * `create` - (Defaults to 20 minutes), when creating the Replication + * `update` - (Defaults to 20 minutes), when updating the Replication + * `delete` - (Defaults to 20 minutes), when destroying the Replication + + +## Import + +Replications can be imported using the `id`, e.g. + +``` +$ terraform import oci_file_storage_replication.test_replication "id" +``` + diff --git a/website/docs/r/file_storage_snapshot.html.markdown b/website/docs/r/file_storage_snapshot.html.markdown index 41a9a584e52..3281bfa9aba 100644 --- a/website/docs/r/file_storage_snapshot.html.markdown +++ b/website/docs/r/file_storage_snapshot.html.markdown @@ -53,14 +53,21 @@ The following attributes are exported: * `file_system_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the file system from which the snapshot was created. * `freeform_tags` - Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Department": "Finance"}` * `id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the snapshot. -* `is_clone_source` - Specifies whether the snapshot has been cloned. See [Cloning a File System](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/cloningafilesystem.htm). -* `lifecycle_details` - Additional information about the current 'lifecycleState'. +* `is_clone_source` - Specifies whether the snapshot has been cloned. See [Cloning a File System](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/cloningFS.htm). +* `lifecycle_details` - Additional information about the current `lifecycleState`. * `name` - Name of the snapshot. This value is immutable. Avoid entering confidential information. Example: `Sunday` -* `provenance_id` - An [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) identifying the parent from which this snapshot was cloned. If this snapshot was not cloned, then the `provenanceId` is the same as the snapshot `id` value. If this snapshot was cloned, then the `provenanceId` value is the parent's `provenanceId`. See [Cloning a File System](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/cloningafilesystem.htm). +* `provenance_id` - An [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) identifying the parent from which this snapshot was cloned. If this snapshot was not cloned, then the `provenanceId` is the same as the snapshot `id` value. If this snapshot was cloned, then the `provenanceId` value is the parent's `provenanceId`. See [Cloning a File System](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/cloningFS.htm). +* `snapshot_time` - The date and time the snapshot was taken, expressed in [RFC 3339](https://tools.ietf.org/rfc/rfc3339) timestamp format. This value might be the same or different from `timeCreated` depending on the following factors: + * If the snapshot is created in the original file system directory. + * If the snapshot is cloned from a file system. + * If the snapshot is replicated from a file system. + + Example: `2020-08-25T21:10:29.600Z` +* `snapshot_type` - Specifies the generation type of the snapshot. * `state` - The current state of the snapshot. * `time_created` - The date and time the snapshot was created, expressed in [RFC 3339](https://tools.ietf.org/rfc/rfc3339) timestamp format. Example: `2016-08-25T21:10:29.600Z` From ee2a11b43e9f1fa93e947de9e693f9bf22e27402 Mon Sep 17 00:00:00 2001 From: rashik_bhasin Date: Fri, 30 Sep 2022 16:04:50 +0530 Subject: [PATCH 12/17] Vendored - oci-go-sdk v65.23.0 changes for existing & new services --- go.mod | 2 +- .../oracle/oci-go-sdk/v65/bastion/bastion.go | 6 + .../v65/bastion/bastion_dns_proxy_status.go | 56 +++++ .../oci-go-sdk/v65/bastion/bastion_summary.go | 6 + .../v65/bastion/create_bastion_details.go | 6 + ...warding_session_target_resource_details.go | 51 ++++ ...ged_ssh_session_target_resource_details.go | 9 +- ...warding_session_target_resource_details.go | 12 +- .../create_session_target_resource_details.go | 18 +- ...warding_session_target_resource_details.go | 51 ++++ ...ged_ssh_session_target_resource_details.go | 9 +- ...warding_session_target_resource_details.go | 12 +- .../oci-go-sdk/v65/bastion/session_type.go | 16 +- .../v65/bastion/target_resource_details.go | 18 +- .../oracle/oci-go-sdk/v65/common/regions.go | 6 + .../oracle/oci-go-sdk/v65/common/regions.json | 6 + .../v65/datascience/datascience_client.go | 2 +- ...cloud_importable_compute_entity_summary.go | 1 + ...ged_external_host_configuration_summary.go | 1 + .../opsi/em_managed_external_host_insight.go | 1 + ...m_managed_external_host_insight_summary.go | 1 + ...ght_resource_capacity_trend_aggregation.go | 5 +- .../exadata_insight_resource_statistics.go | 5 +- .../v65/opsi/host_configuration_summary.go | 5 + .../v65/opsi/host_cpu_statistics.go | 2 +- .../oci-go-sdk/v65/opsi/host_details.go | 1 + .../host_importable_agent_entity_summary.go | 1 + .../v65/opsi/host_memory_statistics.go | 2 +- ...ost_resource_capacity_trend_aggregation.go | 2 +- .../v65/opsi/host_resource_statistics.go | 2 +- .../oci-go-sdk/v65/opsi/instance_metrics.go | 5 +- ...st_host_configurations_request_response.go | 1 + .../list_host_insights_request_response.go | 1 + .../list_hosted_entities_request_response.go | 1 + ...anaged_cloud_host_configuration_summary.go | 222 ++++++++++++++++++ .../opsi/macs_managed_cloud_host_insight.go | 1 + ...macs_managed_cloud_host_insight_summary.go | 1 + ...ged_external_host_configuration_summary.go | 1 + .../macs_managed_external_host_insight.go | 1 + ...s_managed_external_host_insight_summary.go | 1 + .../v65/opsi/opsi_configurations.go | 49 ++++ .../opsi/opsi_operationsinsights_client.go | 60 +++++ ...pe_comanaged_host_configuration_summary.go | 1 + .../resource_capacity_trend_aggregation.go | 7 +- .../v65/opsi/resource_statistics.go | 7 +- .../v65/opsi/resource_usage_summary.go | 5 +- .../opsi/resource_usage_trend_aggregation.go | 5 +- ...base_insight_resource_usage_aggregation.go | 5 +- ...data_insight_resource_usage_aggregation.go | 5 +- ...esource_capacity_trend_request_response.go | 1 + ...esource_forecast_trend_request_response.go | 1 + ...ht_resource_statistics_request_response.go | 1 + ...host_insight_resource_usage_aggregation.go | 2 +- ...insight_resource_usage_request_response.go | 1 + ...t_resource_usage_trend_request_response.go | 1 + ...ce_utilization_insight_request_response.go | 1 + ...ht_top_processes_usage_request_response.go | 145 ++++++++++++ ..._processes_usage_trend_request_response.go | 3 + ...insights_top_processes_usage_collection.go | 44 ++++ .../v65/opsi/tablespace_usage_trend.go | 2 +- .../v65/opsi/top_processes_usage.go | 62 +++++ vendor/modules.txt | 2 +- 62 files changed, 882 insertions(+), 78 deletions(-) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v65/bastion/bastion_dns_proxy_status.go create mode 100644 vendor/github.com/oracle/oci-go-sdk/v65/bastion/create_dynamic_port_forwarding_session_target_resource_details.go create mode 100644 vendor/github.com/oracle/oci-go-sdk/v65/bastion/dynamic_port_forwarding_session_target_resource_details.go create mode 100644 vendor/github.com/oracle/oci-go-sdk/v65/opsi/macs_managed_cloud_host_configuration_summary.go create mode 100644 vendor/github.com/oracle/oci-go-sdk/v65/opsi/opsi_configurations.go create mode 100644 vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_host_insight_top_processes_usage_request_response.go create mode 100644 vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_host_insights_top_processes_usage_collection.go create mode 100644 vendor/github.com/oracle/oci-go-sdk/v65/opsi/top_processes_usage.go diff --git a/go.mod b/go.mod index 0f1f77c6d05..5e38020cc87 100644 --- a/go.mod +++ b/go.mod @@ -76,6 +76,6 @@ require ( ) // Uncomment this line to get OCI Go SDK from local source instead of github -//replace github.com/oracle/oci-go-sdk => ../../oracle/oci-go-sdk +replace github.com/oracle/oci-go-sdk/v65 v65.22.0 => ./vendor/github.com/oracle/oci-go-sdk go 1.17 diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/bastion/bastion.go b/vendor/github.com/oracle/oci-go-sdk/v65/bastion/bastion.go index 05e4bb33b9d..40108acf9b4 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/bastion/bastion.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/bastion/bastion.go @@ -61,6 +61,9 @@ type Bastion struct { // The maximum number of active sessions allowed on the bastion. MaxSessionsAllowed *int `mandatory:"false" json:"maxSessionsAllowed"` + // The current dns proxy status of the bastion. + DnsProxyStatus BastionDnsProxyStatusEnum `mandatory:"false" json:"dnsProxyStatus,omitempty"` + // The time the bastion was updated. Format is defined by RFC3339 (https://tools.ietf.org/html/rfc3339). // Example: `2020-01-25T21:10:29.600Z` TimeUpdated *common.SDKTime `mandatory:"false" json:"timeUpdated"` @@ -94,6 +97,9 @@ func (m Bastion) ValidateEnumValue() (bool, error) { errMessage = append(errMessage, fmt.Sprintf("unsupported enum value for LifecycleState: %s. Supported values are: %s.", m.LifecycleState, strings.Join(GetBastionLifecycleStateEnumStringValues(), ","))) } + if _, ok := GetMappingBastionDnsProxyStatusEnum(string(m.DnsProxyStatus)); !ok && m.DnsProxyStatus != "" { + errMessage = append(errMessage, fmt.Sprintf("unsupported enum value for DnsProxyStatus: %s. Supported values are: %s.", m.DnsProxyStatus, strings.Join(GetBastionDnsProxyStatusEnumStringValues(), ","))) + } if len(errMessage) > 0 { return true, fmt.Errorf(strings.Join(errMessage, "\n")) } diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/bastion/bastion_dns_proxy_status.go b/vendor/github.com/oracle/oci-go-sdk/v65/bastion/bastion_dns_proxy_status.go new file mode 100644 index 00000000000..508b0fbb185 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v65/bastion/bastion_dns_proxy_status.go @@ -0,0 +1,56 @@ +// Copyright (c) 2016, 2018, 2022, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Bastion API +// +// Use the Bastion API to provide restricted and time-limited access to target resources that don't have public endpoints. Bastions let authorized users connect from specific IP addresses to target resources using Secure Shell (SSH) sessions. For more information, see the Bastion documentation (https://docs.cloud.oracle.com/iaas/Content/Bastion/home.htm). +// + +package bastion + +import ( + "strings" +) + +// BastionDnsProxyStatusEnum Enum with underlying type: string +type BastionDnsProxyStatusEnum string + +// Set of constants representing the allowable values for BastionDnsProxyStatusEnum +const ( + BastionDnsProxyStatusDisabled BastionDnsProxyStatusEnum = "DISABLED" + BastionDnsProxyStatusEnabled BastionDnsProxyStatusEnum = "ENABLED" +) + +var mappingBastionDnsProxyStatusEnum = map[string]BastionDnsProxyStatusEnum{ + "DISABLED": BastionDnsProxyStatusDisabled, + "ENABLED": BastionDnsProxyStatusEnabled, +} + +var mappingBastionDnsProxyStatusEnumLowerCase = map[string]BastionDnsProxyStatusEnum{ + "disabled": BastionDnsProxyStatusDisabled, + "enabled": BastionDnsProxyStatusEnabled, +} + +// GetBastionDnsProxyStatusEnumValues Enumerates the set of values for BastionDnsProxyStatusEnum +func GetBastionDnsProxyStatusEnumValues() []BastionDnsProxyStatusEnum { + values := make([]BastionDnsProxyStatusEnum, 0) + for _, v := range mappingBastionDnsProxyStatusEnum { + values = append(values, v) + } + return values +} + +// GetBastionDnsProxyStatusEnumStringValues Enumerates the set of values in String for BastionDnsProxyStatusEnum +func GetBastionDnsProxyStatusEnumStringValues() []string { + return []string{ + "DISABLED", + "ENABLED", + } +} + +// GetMappingBastionDnsProxyStatusEnum performs case Insensitive comparison on enum value and return the desired enum +func GetMappingBastionDnsProxyStatusEnum(val string) (BastionDnsProxyStatusEnum, bool) { + enum, ok := mappingBastionDnsProxyStatusEnumLowerCase[strings.ToLower(val)] + return enum, ok +} diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/bastion/bastion_summary.go b/vendor/github.com/oracle/oci-go-sdk/v65/bastion/bastion_summary.go index c03c76d2de8..7dcf4c6eda5 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/bastion/bastion_summary.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/bastion/bastion_summary.go @@ -43,6 +43,9 @@ type BastionSummary struct { // The current state of the bastion. LifecycleState BastionLifecycleStateEnum `mandatory:"true" json:"lifecycleState"` + // The current dns proxy status of the bastion. + DnsProxyStatus BastionDnsProxyStatusEnum `mandatory:"false" json:"dnsProxyStatus,omitempty"` + // The time the bastion was updated. Format is defined by RFC3339 (https://tools.ietf.org/html/rfc3339). // Example: `2020-01-25T21:10:29.600Z` TimeUpdated *common.SDKTime `mandatory:"false" json:"timeUpdated"` @@ -76,6 +79,9 @@ func (m BastionSummary) ValidateEnumValue() (bool, error) { errMessage = append(errMessage, fmt.Sprintf("unsupported enum value for LifecycleState: %s. Supported values are: %s.", m.LifecycleState, strings.Join(GetBastionLifecycleStateEnumStringValues(), ","))) } + if _, ok := GetMappingBastionDnsProxyStatusEnum(string(m.DnsProxyStatus)); !ok && m.DnsProxyStatus != "" { + errMessage = append(errMessage, fmt.Sprintf("unsupported enum value for DnsProxyStatus: %s. Supported values are: %s.", m.DnsProxyStatus, strings.Join(GetBastionDnsProxyStatusEnumStringValues(), ","))) + } if len(errMessage) > 0 { return true, fmt.Errorf(strings.Join(errMessage, "\n")) } diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/bastion/create_bastion_details.go b/vendor/github.com/oracle/oci-go-sdk/v65/bastion/create_bastion_details.go index 92ecc3e97dc..0ad17cf4833 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/bastion/create_bastion_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/bastion/create_bastion_details.go @@ -42,6 +42,9 @@ type CreateBastionDetails struct { // The maximum amount of time that any session on the bastion can remain active. MaxSessionTtlInSeconds *int `mandatory:"false" json:"maxSessionTtlInSeconds"` + // The desired dns proxy status of the bastion. + DnsProxyStatus BastionDnsProxyStatusEnum `mandatory:"false" json:"dnsProxyStatus,omitempty"` + // Simple key-value pair that is applied without any predefined name, type or scope. Exists for cross-compatibility only. // Example: `{"bar-key": "value"}` FreeformTags map[string]string `mandatory:"false" json:"freeformTags"` @@ -61,6 +64,9 @@ func (m CreateBastionDetails) String() string { func (m CreateBastionDetails) ValidateEnumValue() (bool, error) { errMessage := []string{} + if _, ok := GetMappingBastionDnsProxyStatusEnum(string(m.DnsProxyStatus)); !ok && m.DnsProxyStatus != "" { + errMessage = append(errMessage, fmt.Sprintf("unsupported enum value for DnsProxyStatus: %s. Supported values are: %s.", m.DnsProxyStatus, strings.Join(GetBastionDnsProxyStatusEnumStringValues(), ","))) + } if len(errMessage) > 0 { return true, fmt.Errorf(strings.Join(errMessage, "\n")) } diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/bastion/create_dynamic_port_forwarding_session_target_resource_details.go b/vendor/github.com/oracle/oci-go-sdk/v65/bastion/create_dynamic_port_forwarding_session_target_resource_details.go new file mode 100644 index 00000000000..9c72e2a178a --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v65/bastion/create_dynamic_port_forwarding_session_target_resource_details.go @@ -0,0 +1,51 @@ +// Copyright (c) 2016, 2018, 2022, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Bastion API +// +// Use the Bastion API to provide restricted and time-limited access to target resources that don't have public endpoints. Bastions let authorized users connect from specific IP addresses to target resources using Secure Shell (SSH) sessions. For more information, see the Bastion documentation (https://docs.cloud.oracle.com/iaas/Content/Bastion/home.htm). +// + +package bastion + +import ( + "encoding/json" + "fmt" + "github.com/oracle/oci-go-sdk/v65/common" + "strings" +) + +// CreateDynamicPortForwardingSessionTargetResourceDetails Details about a dynamic port forwarding session for a target subnet. +type CreateDynamicPortForwardingSessionTargetResourceDetails struct { +} + +func (m CreateDynamicPortForwardingSessionTargetResourceDetails) String() string { + return common.PointerString(m) +} + +// ValidateEnumValue returns an error when providing an unsupported enum value +// This function is being called during constructing API request process +// Not recommended for calling this function directly +func (m CreateDynamicPortForwardingSessionTargetResourceDetails) ValidateEnumValue() (bool, error) { + errMessage := []string{} + + if len(errMessage) > 0 { + return true, fmt.Errorf(strings.Join(errMessage, "\n")) + } + return false, nil +} + +// MarshalJSON marshals to json representation +func (m CreateDynamicPortForwardingSessionTargetResourceDetails) MarshalJSON() (buff []byte, e error) { + type MarshalTypeCreateDynamicPortForwardingSessionTargetResourceDetails CreateDynamicPortForwardingSessionTargetResourceDetails + s := struct { + DiscriminatorParam string `json:"sessionType"` + MarshalTypeCreateDynamicPortForwardingSessionTargetResourceDetails + }{ + "DYNAMIC_PORT_FORWARDING", + (MarshalTypeCreateDynamicPortForwardingSessionTargetResourceDetails)(m), + } + + return json.Marshal(&s) +} diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/bastion/create_managed_ssh_session_target_resource_details.go b/vendor/github.com/oracle/oci-go-sdk/v65/bastion/create_managed_ssh_session_target_resource_details.go index fb8d46e1e7a..e2f2f07c492 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/bastion/create_managed_ssh_session_target_resource_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/bastion/create_managed_ssh_session_target_resource_details.go @@ -25,16 +25,11 @@ type CreateManagedSshSessionTargetResourceDetails struct { // The unique identifier (OCID) of the target resource (a Compute instance, for example) that the session connects to. TargetResourceId *string `mandatory:"true" json:"targetResourceId"` - // The port number to connect to on the target resource. - TargetResourcePort *int `mandatory:"false" json:"targetResourcePort"` - // The private IP address of the target resource that the session connects to. TargetResourcePrivateIpAddress *string `mandatory:"false" json:"targetResourcePrivateIpAddress"` -} -//GetTargetResourcePort returns TargetResourcePort -func (m CreateManagedSshSessionTargetResourceDetails) GetTargetResourcePort() *int { - return m.TargetResourcePort + // The port number to connect to on the target resource. + TargetResourcePort *int `mandatory:"false" json:"targetResourcePort"` } func (m CreateManagedSshSessionTargetResourceDetails) String() string { diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/bastion/create_port_forwarding_session_target_resource_details.go b/vendor/github.com/oracle/oci-go-sdk/v65/bastion/create_port_forwarding_session_target_resource_details.go index 84ba96f3d1f..42770928458 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/bastion/create_port_forwarding_session_target_resource_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/bastion/create_port_forwarding_session_target_resource_details.go @@ -19,19 +19,17 @@ import ( // CreatePortForwardingSessionTargetResourceDetails Details about a port forwarding session for a target resource. type CreatePortForwardingSessionTargetResourceDetails struct { - // The port number to connect to on the target resource. - TargetResourcePort *int `mandatory:"false" json:"targetResourcePort"` - // The unique identifier (OCID) of the target resource (a Compute instance, for example) that the session connects to. TargetResourceId *string `mandatory:"false" json:"targetResourceId"` // The private IP address of the target resource that the session connects to. TargetResourcePrivateIpAddress *string `mandatory:"false" json:"targetResourcePrivateIpAddress"` -} -//GetTargetResourcePort returns TargetResourcePort -func (m CreatePortForwardingSessionTargetResourceDetails) GetTargetResourcePort() *int { - return m.TargetResourcePort + // The Fully Qualified Domain Name of the target resource that the session connects to. + TargetResourceFqdn *string `mandatory:"false" json:"targetResourceFqdn"` + + // The port number to connect to on the target resource. + TargetResourcePort *int `mandatory:"false" json:"targetResourcePort"` } func (m CreatePortForwardingSessionTargetResourceDetails) String() string { diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/bastion/create_session_target_resource_details.go b/vendor/github.com/oracle/oci-go-sdk/v65/bastion/create_session_target_resource_details.go index 30cf2d56792..ae0e77ba650 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/bastion/create_session_target_resource_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/bastion/create_session_target_resource_details.go @@ -18,15 +18,11 @@ import ( // CreateSessionTargetResourceDetails Details about a bastion session's target resource. type CreateSessionTargetResourceDetails interface { - - // The port number to connect to on the target resource. - GetTargetResourcePort() *int } type createsessiontargetresourcedetails struct { - JsonData []byte - TargetResourcePort *int `mandatory:"false" json:"targetResourcePort"` - SessionType string `json:"sessionType"` + JsonData []byte + SessionType string `json:"sessionType"` } // UnmarshalJSON unmarshals json @@ -40,7 +36,6 @@ func (m *createsessiontargetresourcedetails) UnmarshalJSON(data []byte) error { if err != nil { return err } - m.TargetResourcePort = s.Model.TargetResourcePort m.SessionType = s.Model.SessionType return err @@ -59,6 +54,10 @@ func (m *createsessiontargetresourcedetails) UnmarshalPolymorphicJSON(data []byt mm := CreateManagedSshSessionTargetResourceDetails{} err = json.Unmarshal(data, &mm) return mm, err + case "DYNAMIC_PORT_FORWARDING": + mm := CreateDynamicPortForwardingSessionTargetResourceDetails{} + err = json.Unmarshal(data, &mm) + return mm, err case "PORT_FORWARDING": mm := CreatePortForwardingSessionTargetResourceDetails{} err = json.Unmarshal(data, &mm) @@ -68,11 +67,6 @@ func (m *createsessiontargetresourcedetails) UnmarshalPolymorphicJSON(data []byt } } -//GetTargetResourcePort returns TargetResourcePort -func (m createsessiontargetresourcedetails) GetTargetResourcePort() *int { - return m.TargetResourcePort -} - func (m createsessiontargetresourcedetails) String() string { return common.PointerString(m) } diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/bastion/dynamic_port_forwarding_session_target_resource_details.go b/vendor/github.com/oracle/oci-go-sdk/v65/bastion/dynamic_port_forwarding_session_target_resource_details.go new file mode 100644 index 00000000000..ab864de03fa --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v65/bastion/dynamic_port_forwarding_session_target_resource_details.go @@ -0,0 +1,51 @@ +// Copyright (c) 2016, 2018, 2022, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Bastion API +// +// Use the Bastion API to provide restricted and time-limited access to target resources that don't have public endpoints. Bastions let authorized users connect from specific IP addresses to target resources using Secure Shell (SSH) sessions. For more information, see the Bastion documentation (https://docs.cloud.oracle.com/iaas/Content/Bastion/home.htm). +// + +package bastion + +import ( + "encoding/json" + "fmt" + "github.com/oracle/oci-go-sdk/v65/common" + "strings" +) + +// DynamicPortForwardingSessionTargetResourceDetails Details about a dynamic port forwarding session for a target subnet. +type DynamicPortForwardingSessionTargetResourceDetails struct { +} + +func (m DynamicPortForwardingSessionTargetResourceDetails) String() string { + return common.PointerString(m) +} + +// ValidateEnumValue returns an error when providing an unsupported enum value +// This function is being called during constructing API request process +// Not recommended for calling this function directly +func (m DynamicPortForwardingSessionTargetResourceDetails) ValidateEnumValue() (bool, error) { + errMessage := []string{} + + if len(errMessage) > 0 { + return true, fmt.Errorf(strings.Join(errMessage, "\n")) + } + return false, nil +} + +// MarshalJSON marshals to json representation +func (m DynamicPortForwardingSessionTargetResourceDetails) MarshalJSON() (buff []byte, e error) { + type MarshalTypeDynamicPortForwardingSessionTargetResourceDetails DynamicPortForwardingSessionTargetResourceDetails + s := struct { + DiscriminatorParam string `json:"sessionType"` + MarshalTypeDynamicPortForwardingSessionTargetResourceDetails + }{ + "DYNAMIC_PORT_FORWARDING", + (MarshalTypeDynamicPortForwardingSessionTargetResourceDetails)(m), + } + + return json.Marshal(&s) +} diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/bastion/managed_ssh_session_target_resource_details.go b/vendor/github.com/oracle/oci-go-sdk/v65/bastion/managed_ssh_session_target_resource_details.go index 96ae9fba73e..b7a863dc5c3 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/bastion/managed_ssh_session_target_resource_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/bastion/managed_ssh_session_target_resource_details.go @@ -19,9 +19,6 @@ import ( // ManagedSshSessionTargetResourceDetails Details about a managed SSH session for a target resource. type ManagedSshSessionTargetResourceDetails struct { - // The port number to connect to on the target resource. - TargetResourcePort *int `mandatory:"true" json:"targetResourcePort"` - // The name of the user on the target resource operating system that the session uses for the connection. TargetResourceOperatingSystemUserName *string `mandatory:"true" json:"targetResourceOperatingSystemUserName"` @@ -33,11 +30,9 @@ type ManagedSshSessionTargetResourceDetails struct { // The private IP address of the target resource that the session connects to. TargetResourcePrivateIpAddress *string `mandatory:"false" json:"targetResourcePrivateIpAddress"` -} -//GetTargetResourcePort returns TargetResourcePort -func (m ManagedSshSessionTargetResourceDetails) GetTargetResourcePort() *int { - return m.TargetResourcePort + // The port number to connect to on the target resource. + TargetResourcePort *int `mandatory:"false" json:"targetResourcePort"` } func (m ManagedSshSessionTargetResourceDetails) String() string { diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/bastion/port_forwarding_session_target_resource_details.go b/vendor/github.com/oracle/oci-go-sdk/v65/bastion/port_forwarding_session_target_resource_details.go index 416b7337af8..307feb7b4ef 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/bastion/port_forwarding_session_target_resource_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/bastion/port_forwarding_session_target_resource_details.go @@ -19,9 +19,6 @@ import ( // PortForwardingSessionTargetResourceDetails Details about a port forwarding session for a target resource. type PortForwardingSessionTargetResourceDetails struct { - // The port number to connect to on the target resource. - TargetResourcePort *int `mandatory:"true" json:"targetResourcePort"` - // The unique identifier (OCID) of the target resource (a Compute instance, for example) that the session connects to. TargetResourceId *string `mandatory:"false" json:"targetResourceId"` @@ -30,11 +27,12 @@ type PortForwardingSessionTargetResourceDetails struct { // The display name of the target Compute instance that the session connects to. TargetResourceDisplayName *string `mandatory:"false" json:"targetResourceDisplayName"` -} -//GetTargetResourcePort returns TargetResourcePort -func (m PortForwardingSessionTargetResourceDetails) GetTargetResourcePort() *int { - return m.TargetResourcePort + // The Fully Qualified Domain Name of the target resource that the session connects to. + TargetResourceFqdn *string `mandatory:"false" json:"targetResourceFqdn"` + + // The port number to connect to on the target resource. + TargetResourcePort *int `mandatory:"false" json:"targetResourcePort"` } func (m PortForwardingSessionTargetResourceDetails) String() string { diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/bastion/session_type.go b/vendor/github.com/oracle/oci-go-sdk/v65/bastion/session_type.go index 0a98f8dfa4f..237f9551933 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/bastion/session_type.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/bastion/session_type.go @@ -18,18 +18,21 @@ type SessionTypeEnum string // Set of constants representing the allowable values for SessionTypeEnum const ( - SessionTypeManagedSsh SessionTypeEnum = "MANAGED_SSH" - SessionTypePortForwarding SessionTypeEnum = "PORT_FORWARDING" + SessionTypeManagedSsh SessionTypeEnum = "MANAGED_SSH" + SessionTypePortForwarding SessionTypeEnum = "PORT_FORWARDING" + SessionTypeDynamicPortForwarding SessionTypeEnum = "DYNAMIC_PORT_FORWARDING" ) var mappingSessionTypeEnum = map[string]SessionTypeEnum{ - "MANAGED_SSH": SessionTypeManagedSsh, - "PORT_FORWARDING": SessionTypePortForwarding, + "MANAGED_SSH": SessionTypeManagedSsh, + "PORT_FORWARDING": SessionTypePortForwarding, + "DYNAMIC_PORT_FORWARDING": SessionTypeDynamicPortForwarding, } var mappingSessionTypeEnumLowerCase = map[string]SessionTypeEnum{ - "managed_ssh": SessionTypeManagedSsh, - "port_forwarding": SessionTypePortForwarding, + "managed_ssh": SessionTypeManagedSsh, + "port_forwarding": SessionTypePortForwarding, + "dynamic_port_forwarding": SessionTypeDynamicPortForwarding, } // GetSessionTypeEnumValues Enumerates the set of values for SessionTypeEnum @@ -46,6 +49,7 @@ func GetSessionTypeEnumStringValues() []string { return []string{ "MANAGED_SSH", "PORT_FORWARDING", + "DYNAMIC_PORT_FORWARDING", } } diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/bastion/target_resource_details.go b/vendor/github.com/oracle/oci-go-sdk/v65/bastion/target_resource_details.go index 46be1e94cb5..6dc7dbdf3e6 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/bastion/target_resource_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/bastion/target_resource_details.go @@ -18,15 +18,11 @@ import ( // TargetResourceDetails Details about a bastion session's target resource. type TargetResourceDetails interface { - - // The port number to connect to on the target resource. - GetTargetResourcePort() *int } type targetresourcedetails struct { - JsonData []byte - TargetResourcePort *int `mandatory:"true" json:"targetResourcePort"` - SessionType string `json:"sessionType"` + JsonData []byte + SessionType string `json:"sessionType"` } // UnmarshalJSON unmarshals json @@ -40,7 +36,6 @@ func (m *targetresourcedetails) UnmarshalJSON(data []byte) error { if err != nil { return err } - m.TargetResourcePort = s.Model.TargetResourcePort m.SessionType = s.Model.SessionType return err @@ -55,6 +50,10 @@ func (m *targetresourcedetails) UnmarshalPolymorphicJSON(data []byte) (interface var err error switch m.SessionType { + case "DYNAMIC_PORT_FORWARDING": + mm := DynamicPortForwardingSessionTargetResourceDetails{} + err = json.Unmarshal(data, &mm) + return mm, err case "MANAGED_SSH": mm := ManagedSshSessionTargetResourceDetails{} err = json.Unmarshal(data, &mm) @@ -68,11 +67,6 @@ func (m *targetresourcedetails) UnmarshalPolymorphicJSON(data []byte) (interface } } -//GetTargetResourcePort returns TargetResourcePort -func (m targetresourcedetails) GetTargetResourcePort() *int { - return m.TargetResourcePort -} - func (m targetresourcedetails) String() string { return common.PointerString(m) } diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/common/regions.go b/vendor/github.com/oracle/oci-go-sdk/v65/common/regions.go index cc205900475..7144455b3e8 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/common/regions.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/common/regions.go @@ -92,6 +92,8 @@ const ( RegionMEDccMuscat1 Region = "me-dcc-muscat-1" //RegionAPDccCanberra1 region Canberra RegionAPDccCanberra1 Region = "ap-dcc-canberra-1" + //RegionEUDccMilan1 region Milan + RegionEUDccMilan1 Region = "eu-dcc-milan-1" ) var shortNameRegion = map[string]Region{ @@ -139,6 +141,7 @@ var shortNameRegion = map[string]Region{ "ukb": RegionAPIbaraki1, "mct": RegionMEDccMuscat1, "wga": RegionAPDccCanberra1, + "bgy": RegionEUDccMilan1, } var realm = map[string]string{ @@ -149,6 +152,7 @@ var realm = map[string]string{ "oc8": "oraclecloud8.com", "oc9": "oraclecloud9.com", "oc10": "oraclecloud10.com", + "oc14": "oraclecloud14.com", } var regionRealm = map[Region]string{ @@ -202,4 +206,6 @@ var regionRealm = map[Region]string{ RegionMEDccMuscat1: "oc9", RegionAPDccCanberra1: "oc10", + + RegionEUDccMilan1: "oc14", } diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/common/regions.json b/vendor/github.com/oracle/oci-go-sdk/v65/common/regions.json index 823126049ae..c9510260bba 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/common/regions.json +++ b/vendor/github.com/oracle/oci-go-sdk/v65/common/regions.json @@ -262,5 +262,11 @@ "realmDomainComponent": "oraclecloud.com", "regionIdentifier": "eu-madrid-1", "realmKey": "oc1" + }, + { + "regionKey": "bgy", + "realmDomainComponent": "oraclecloud14.com", + "regionIdentifier": "eu-dcc-milan-1", + "realmKey": "oc14" } ] \ No newline at end of file diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/datascience/datascience_client.go b/vendor/github.com/oracle/oci-go-sdk/v65/datascience/datascience_client.go index dc45490b6c2..12fdbe35830 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/datascience/datascience_client.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/datascience/datascience_client.go @@ -3819,4 +3819,4 @@ func (client DataScienceClient) updateProject(ctx context.Context, request commo err = common.UnmarshalResponse(httpResponse, &response) return response, err -} \ No newline at end of file +} diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/cloud_importable_compute_entity_summary.go b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/cloud_importable_compute_entity_summary.go index 3ba2ab27b18..54ea4c6507b 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/cloud_importable_compute_entity_summary.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/cloud_importable_compute_entity_summary.go @@ -35,6 +35,7 @@ type CloudImportableComputeEntitySummary struct { // Platform type. // Supported platformType(s) for MACS-managed external host insight: [LINUX]. + // Supported platformType(s) for MACS-managed cloud host insight: [LINUX]. // Supported platformType(s) for EM-managed external host insight: [LINUX, SOLARIS, SUNOS, ZLINUX]. PlatformType CloudImportableComputeEntitySummaryPlatformTypeEnum `mandatory:"true" json:"platformType"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/em_managed_external_host_configuration_summary.go b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/em_managed_external_host_configuration_summary.go index 6f0443f1a42..87862bcec19 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/em_managed_external_host_configuration_summary.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/em_managed_external_host_configuration_summary.go @@ -87,6 +87,7 @@ type EmManagedExternalHostConfigurationSummary struct { // Platform type. // Supported platformType(s) for MACS-managed external host insight: [LINUX]. + // Supported platformType(s) for MACS-managed cloud host insight: [LINUX]. // Supported platformType(s) for EM-managed external host insight: [LINUX, SOLARIS, SUNOS, ZLINUX]. PlatformType HostConfigurationSummaryPlatformTypeEnum `mandatory:"true" json:"platformType"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/em_managed_external_host_insight.go b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/em_managed_external_host_insight.go index cbfdee079ac..8225b6c940e 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/em_managed_external_host_insight.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/em_managed_external_host_insight.go @@ -89,6 +89,7 @@ type EmManagedExternalHostInsight struct { // Platform type. // Supported platformType(s) for MACS-managed external host insight: [LINUX]. + // Supported platformType(s) for MACS-managed cloud host insight: [LINUX]. // Supported platformType(s) for EM-managed external host insight: [LINUX, SOLARIS, SUNOS, ZLINUX]. PlatformType EmManagedExternalHostInsightPlatformTypeEnum `mandatory:"false" json:"platformType,omitempty"` diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/em_managed_external_host_insight_summary.go b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/em_managed_external_host_insight_summary.go index c1a46c7f890..15f4d1f152a 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/em_managed_external_host_insight_summary.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/em_managed_external_host_insight_summary.go @@ -86,6 +86,7 @@ type EmManagedExternalHostInsightSummary struct { // Platform type. // Supported platformType(s) for MACS-managed external host insight: [LINUX]. + // Supported platformType(s) for MACS-managed cloud host insight: [LINUX]. // Supported platformType(s) for EM-managed external host insight: [LINUX, SOLARIS, SUNOS, ZLINUX]. PlatformType EmManagedExternalHostInsightSummaryPlatformTypeEnum `mandatory:"false" json:"platformType,omitempty"` diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/exadata_insight_resource_capacity_trend_aggregation.go b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/exadata_insight_resource_capacity_trend_aggregation.go index 444c861cfd3..448c1905a96 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/exadata_insight_resource_capacity_trend_aggregation.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/exadata_insight_resource_capacity_trend_aggregation.go @@ -23,8 +23,11 @@ type ExadataInsightResourceCapacityTrendAggregation struct { // The timestamp in which the current sampling period ends in RFC 3339 format. EndTimestamp *common.SDKTime `mandatory:"true" json:"endTimestamp"` - // The maximum allocated amount of the resource metric type (CPU, STORAGE). + // The maximum allocated amount of the resource metric type (CPU, STORAGE) for a set of databases. Capacity *float64 `mandatory:"true" json:"capacity"` + + // The maximum host CPUs (cores x threads/core) on the underlying infrastructure. This only applies to CPU and does not not apply for Autonomous Databases. + TotalHostCapacity *float64 `mandatory:"false" json:"totalHostCapacity"` } func (m ExadataInsightResourceCapacityTrendAggregation) String() string { diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/exadata_insight_resource_statistics.go b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/exadata_insight_resource_statistics.go index 7086b6fb57e..48177d08d20 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/exadata_insight_resource_statistics.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/exadata_insight_resource_statistics.go @@ -23,7 +23,7 @@ type ExadataInsightResourceStatistics struct { // Total amount used of the resource metric type (CPU, STORAGE). Usage *float64 `mandatory:"true" json:"usage"` - // The maximum allocated amount of the resource metric type (CPU, STORAGE). + // The maximum allocated amount of the resource metric type (CPU, STORAGE) for a set of databases. Capacity *float64 `mandatory:"true" json:"capacity"` // Resource utilization in percentage @@ -32,6 +32,9 @@ type ExadataInsightResourceStatistics struct { // Change in resource utilization in percentage UsageChangePercent *float64 `mandatory:"true" json:"usageChangePercent"` + // The maximum host CPUs (cores x threads/core) on the underlying infrastructure. This only applies to CPU and does not not apply for Autonomous Databases. + TotalHostCapacity *float64 `mandatory:"false" json:"totalHostCapacity"` + // Array of instance metrics InstanceMetrics []InstanceMetrics `mandatory:"false" json:"instanceMetrics"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/host_configuration_summary.go b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/host_configuration_summary.go index 7bdcb1d5b83..54c340e4975 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/host_configuration_summary.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/host_configuration_summary.go @@ -32,6 +32,7 @@ type HostConfigurationSummary interface { // Platform type. // Supported platformType(s) for MACS-managed external host insight: [LINUX]. + // Supported platformType(s) for MACS-managed cloud host insight: [LINUX]. // Supported platformType(s) for EM-managed external host insight: [LINUX, SOLARIS, SUNOS, ZLINUX]. GetPlatformType() HostConfigurationSummaryPlatformTypeEnum @@ -163,6 +164,10 @@ func (m *hostconfigurationsummary) UnmarshalPolymorphicJSON(data []byte) (interf mm := EmManagedExternalHostConfigurationSummary{} err = json.Unmarshal(data, &mm) return mm, err + case "MACS_MANAGED_CLOUD_HOST": + mm := MacsManagedCloudHostConfigurationSummary{} + err = json.Unmarshal(data, &mm) + return mm, err default: return *m, nil } diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/host_cpu_statistics.go b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/host_cpu_statistics.go index 2bd4dbd6b92..86e2dbbfe69 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/host_cpu_statistics.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/host_cpu_statistics.go @@ -24,7 +24,7 @@ type HostCpuStatistics struct { // Total amount used of the resource metric type (CPU, STORAGE). Usage *float64 `mandatory:"true" json:"usage"` - // The maximum allocated amount of the resource metric type (CPU, STORAGE). + // The maximum allocated amount of the resource metric type (CPU, STORAGE) for a set of databases. Capacity *float64 `mandatory:"true" json:"capacity"` // Resource utilization in percentage. diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/host_details.go b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/host_details.go index 236c0c8ee1b..3e1cdb90acc 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/host_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/host_details.go @@ -31,6 +31,7 @@ type HostDetails struct { // Platform type. // Supported platformType(s) for MACS-managed external host insight: [LINUX]. + // Supported platformType(s) for MACS-managed cloud host insight: [LINUX]. // Supported platformType(s) for EM-managed external host insight: [LINUX, SOLARIS, SUNOS, ZLINUX]. PlatformType HostDetailsPlatformTypeEnum `mandatory:"true" json:"platformType"` diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/host_importable_agent_entity_summary.go b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/host_importable_agent_entity_summary.go index 7849810f4dd..3238a87ba18 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/host_importable_agent_entity_summary.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/host_importable_agent_entity_summary.go @@ -32,6 +32,7 @@ type HostImportableAgentEntitySummary struct { // Platform type. // Supported platformType(s) for MACS-managed external host insight: [LINUX]. + // Supported platformType(s) for MACS-managed cloud host insight: [LINUX]. // Supported platformType(s) for EM-managed external host insight: [LINUX, SOLARIS, SUNOS, ZLINUX]. PlatformType HostImportableAgentEntitySummaryPlatformTypeEnum `mandatory:"true" json:"platformType"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/host_memory_statistics.go b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/host_memory_statistics.go index cf9cab87fbe..710c1900912 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/host_memory_statistics.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/host_memory_statistics.go @@ -24,7 +24,7 @@ type HostMemoryStatistics struct { // Total amount used of the resource metric type (CPU, STORAGE). Usage *float64 `mandatory:"true" json:"usage"` - // The maximum allocated amount of the resource metric type (CPU, STORAGE). + // The maximum allocated amount of the resource metric type (CPU, STORAGE) for a set of databases. Capacity *float64 `mandatory:"true" json:"capacity"` // Resource utilization in percentage. diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/host_resource_capacity_trend_aggregation.go b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/host_resource_capacity_trend_aggregation.go index e84acd07e6f..8d72bab0adb 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/host_resource_capacity_trend_aggregation.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/host_resource_capacity_trend_aggregation.go @@ -23,7 +23,7 @@ type HostResourceCapacityTrendAggregation struct { // The timestamp in which the current sampling period ends in RFC 3339 format. EndTimestamp *common.SDKTime `mandatory:"true" json:"endTimestamp"` - // The maximum allocated amount of the resource metric type (CPU, STORAGE). + // The maximum allocated amount of the resource metric type (CPU, STORAGE) for a set of databases. Capacity *float64 `mandatory:"true" json:"capacity"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/host_resource_statistics.go b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/host_resource_statistics.go index c84d1824c22..10fdfe4791b 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/host_resource_statistics.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/host_resource_statistics.go @@ -24,7 +24,7 @@ type HostResourceStatistics interface { // Total amount used of the resource metric type (CPU, STORAGE). GetUsage() *float64 - // The maximum allocated amount of the resource metric type (CPU, STORAGE). + // The maximum allocated amount of the resource metric type (CPU, STORAGE) for a set of databases. GetCapacity() *float64 // Resource utilization in percentage. diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/instance_metrics.go b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/instance_metrics.go index 162e97cd695..c4d5cf8faaf 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/instance_metrics.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/instance_metrics.go @@ -29,9 +29,12 @@ type InstanceMetrics struct { // Total amount used of the resource metric type (CPU, STORAGE). Usage *float64 `mandatory:"false" json:"usage"` - // The maximum allocated amount of the resource metric type (CPU, STORAGE). + // The maximum allocated amount of the resource metric type (CPU, STORAGE) for a set of databases. Capacity *float64 `mandatory:"false" json:"capacity"` + // The maximum host CPUs (cores x threads/core) on the underlying infrastructure. This only applies to CPU and does not not apply for Autonomous Databases. + TotalHostCapacity *float64 `mandatory:"false" json:"totalHostCapacity"` + // Resource utilization in percentage UtilizationPercent *float64 `mandatory:"false" json:"utilizationPercent"` diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/list_host_configurations_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/list_host_configurations_request_response.go index 8a0e9b3617b..e939e97c09a 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/list_host_configurations_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/list_host_configurations_request_response.go @@ -32,6 +32,7 @@ type ListHostConfigurationsRequest struct { // Filter by one or more platform types. // Supported platformType(s) for MACS-managed external host insight: [LINUX]. + // Supported platformType(s) for MACS-managed cloud host insight: [LINUX]. // Supported platformType(s) for EM-managed external host insight: [LINUX, SOLARIS, SUNOS, ZLINUX]. PlatformType []ListHostConfigurationsPlatformTypeEnum `contributesTo:"query" name:"platformType" omitEmpty:"true" collectionFormat:"multi"` diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/list_host_insights_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/list_host_insights_request_response.go index 7fe6413964b..cd6ffdcbe36 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/list_host_insights_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/list_host_insights_request_response.go @@ -36,6 +36,7 @@ type ListHostInsightsRequest struct { // Filter by one or more platform types. // Supported platformType(s) for MACS-managed external host insight: [LINUX]. + // Supported platformType(s) for MACS-managed cloud host insight: [LINUX]. // Supported platformType(s) for EM-managed external host insight: [LINUX, SOLARIS, SUNOS, ZLINUX]. PlatformType []ListHostInsightsPlatformTypeEnum `contributesTo:"query" name:"platformType" omitEmpty:"true" collectionFormat:"multi"` diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/list_hosted_entities_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/list_hosted_entities_request_response.go index 6540fcd75c1..95f664fc03d 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/list_hosted_entities_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/list_hosted_entities_request_response.go @@ -45,6 +45,7 @@ type ListHostedEntitiesRequest struct { // Filter by one or more platform types. // Supported platformType(s) for MACS-managed external host insight: [LINUX]. + // Supported platformType(s) for MACS-managed cloud host insight: [LINUX]. // Supported platformType(s) for EM-managed external host insight: [LINUX, SOLARIS, SUNOS, ZLINUX]. PlatformType []ListHostedEntitiesPlatformTypeEnum `contributesTo:"query" name:"platformType" omitEmpty:"true" collectionFormat:"multi"` diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/macs_managed_cloud_host_configuration_summary.go b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/macs_managed_cloud_host_configuration_summary.go new file mode 100644 index 00000000000..9a569de99bd --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/macs_managed_cloud_host_configuration_summary.go @@ -0,0 +1,222 @@ +// Copyright (c) 2016, 2018, 2022, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Operations Insights API +// +// Use the Operations Insights API to perform data extraction operations to obtain database +// resource utilization, performance statistics, and reference information. For more information, +// see About Oracle Cloud Infrastructure Operations Insights (https://docs.cloud.oracle.com/en-us/iaas/operations-insights/doc/operations-insights.html). +// + +package opsi + +import ( + "encoding/json" + "fmt" + "github.com/oracle/oci-go-sdk/v65/common" + "strings" +) + +// MacsManagedCloudHostConfigurationSummary Configuration Summary of a Macs Managed Cloud host. +type MacsManagedCloudHostConfigurationSummary struct { + + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the host insight resource. + HostInsightId *string `mandatory:"true" json:"hostInsightId"` + + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment. + CompartmentId *string `mandatory:"true" json:"compartmentId"` + + // The host name. The host name is unique amongst the hosts managed by the same management agent. + HostName *string `mandatory:"true" json:"hostName"` + + // Platform version. + PlatformVersion *string `mandatory:"true" json:"platformVersion"` + + // Platform vendor. + PlatformVendor *string `mandatory:"true" json:"platformVendor"` + + // Total CPU on this host. + TotalCpus *int `mandatory:"true" json:"totalCpus"` + + // Total amount of usable physical memory in gibabytes + TotalMemoryInGBs *float64 `mandatory:"true" json:"totalMemoryInGBs"` + + // CPU architechure + CpuArchitecture *string `mandatory:"true" json:"cpuArchitecture"` + + // Size of cache memory in megabytes. + CpuCacheInMBs *float64 `mandatory:"true" json:"cpuCacheInMBs"` + + // Name of the CPU vendor. + CpuVendor *string `mandatory:"true" json:"cpuVendor"` + + // Clock frequency of the processor in megahertz. + CpuFrequencyInMhz *float64 `mandatory:"true" json:"cpuFrequencyInMhz"` + + // Model name of processor. + CpuImplementation *string `mandatory:"true" json:"cpuImplementation"` + + // Number of cores per socket. + CoresPerSocket *int `mandatory:"true" json:"coresPerSocket"` + + // Number of total sockets. + TotalSockets *int `mandatory:"true" json:"totalSockets"` + + // Number of threads per socket. + ThreadsPerSocket *int `mandatory:"true" json:"threadsPerSocket"` + + // Indicates if hyper-threading is enabled or not + IsHyperThreadingEnabled *bool `mandatory:"true" json:"isHyperThreadingEnabled"` + + // Defined tags for this resource. Each key is predefined and scoped to a namespace. + // Example: `{"foo-namespace": {"bar-key": "value"}}` + DefinedTags map[string]map[string]interface{} `mandatory:"true" json:"definedTags"` + + // Simple key-value pair that is applied without any predefined name, type or scope. Exists for cross-compatibility only. + // Example: `{"bar-key": "value"}` + FreeformTags map[string]string `mandatory:"true" json:"freeformTags"` + + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Compute Instance + ComputeId *string `mandatory:"true" json:"computeId"` + + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Management Agent + ManagementAgentId *string `mandatory:"true" json:"managementAgentId"` + + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of External Database Connector + ConnectorId *string `mandatory:"false" json:"connectorId"` + + // Platform type. + // Supported platformType(s) for MACS-managed external host insight: [LINUX]. + // Supported platformType(s) for MACS-managed cloud host insight: [LINUX]. + // Supported platformType(s) for EM-managed external host insight: [LINUX, SOLARIS, SUNOS, ZLINUX]. + PlatformType HostConfigurationSummaryPlatformTypeEnum `mandatory:"true" json:"platformType"` +} + +//GetHostInsightId returns HostInsightId +func (m MacsManagedCloudHostConfigurationSummary) GetHostInsightId() *string { + return m.HostInsightId +} + +//GetCompartmentId returns CompartmentId +func (m MacsManagedCloudHostConfigurationSummary) GetCompartmentId() *string { + return m.CompartmentId +} + +//GetHostName returns HostName +func (m MacsManagedCloudHostConfigurationSummary) GetHostName() *string { + return m.HostName +} + +//GetPlatformType returns PlatformType +func (m MacsManagedCloudHostConfigurationSummary) GetPlatformType() HostConfigurationSummaryPlatformTypeEnum { + return m.PlatformType +} + +//GetPlatformVersion returns PlatformVersion +func (m MacsManagedCloudHostConfigurationSummary) GetPlatformVersion() *string { + return m.PlatformVersion +} + +//GetPlatformVendor returns PlatformVendor +func (m MacsManagedCloudHostConfigurationSummary) GetPlatformVendor() *string { + return m.PlatformVendor +} + +//GetTotalCpus returns TotalCpus +func (m MacsManagedCloudHostConfigurationSummary) GetTotalCpus() *int { + return m.TotalCpus +} + +//GetTotalMemoryInGBs returns TotalMemoryInGBs +func (m MacsManagedCloudHostConfigurationSummary) GetTotalMemoryInGBs() *float64 { + return m.TotalMemoryInGBs +} + +//GetCpuArchitecture returns CpuArchitecture +func (m MacsManagedCloudHostConfigurationSummary) GetCpuArchitecture() *string { + return m.CpuArchitecture +} + +//GetCpuCacheInMBs returns CpuCacheInMBs +func (m MacsManagedCloudHostConfigurationSummary) GetCpuCacheInMBs() *float64 { + return m.CpuCacheInMBs +} + +//GetCpuVendor returns CpuVendor +func (m MacsManagedCloudHostConfigurationSummary) GetCpuVendor() *string { + return m.CpuVendor +} + +//GetCpuFrequencyInMhz returns CpuFrequencyInMhz +func (m MacsManagedCloudHostConfigurationSummary) GetCpuFrequencyInMhz() *float64 { + return m.CpuFrequencyInMhz +} + +//GetCpuImplementation returns CpuImplementation +func (m MacsManagedCloudHostConfigurationSummary) GetCpuImplementation() *string { + return m.CpuImplementation +} + +//GetCoresPerSocket returns CoresPerSocket +func (m MacsManagedCloudHostConfigurationSummary) GetCoresPerSocket() *int { + return m.CoresPerSocket +} + +//GetTotalSockets returns TotalSockets +func (m MacsManagedCloudHostConfigurationSummary) GetTotalSockets() *int { + return m.TotalSockets +} + +//GetThreadsPerSocket returns ThreadsPerSocket +func (m MacsManagedCloudHostConfigurationSummary) GetThreadsPerSocket() *int { + return m.ThreadsPerSocket +} + +//GetIsHyperThreadingEnabled returns IsHyperThreadingEnabled +func (m MacsManagedCloudHostConfigurationSummary) GetIsHyperThreadingEnabled() *bool { + return m.IsHyperThreadingEnabled +} + +//GetDefinedTags returns DefinedTags +func (m MacsManagedCloudHostConfigurationSummary) GetDefinedTags() map[string]map[string]interface{} { + return m.DefinedTags +} + +//GetFreeformTags returns FreeformTags +func (m MacsManagedCloudHostConfigurationSummary) GetFreeformTags() map[string]string { + return m.FreeformTags +} + +func (m MacsManagedCloudHostConfigurationSummary) String() string { + return common.PointerString(m) +} + +// ValidateEnumValue returns an error when providing an unsupported enum value +// This function is being called during constructing API request process +// Not recommended for calling this function directly +func (m MacsManagedCloudHostConfigurationSummary) ValidateEnumValue() (bool, error) { + errMessage := []string{} + + if _, ok := GetMappingHostConfigurationSummaryPlatformTypeEnum(string(m.PlatformType)); !ok && m.PlatformType != "" { + errMessage = append(errMessage, fmt.Sprintf("unsupported enum value for PlatformType: %s. Supported values are: %s.", m.PlatformType, strings.Join(GetHostConfigurationSummaryPlatformTypeEnumStringValues(), ","))) + } + if len(errMessage) > 0 { + return true, fmt.Errorf(strings.Join(errMessage, "\n")) + } + return false, nil +} + +// MarshalJSON marshals to json representation +func (m MacsManagedCloudHostConfigurationSummary) MarshalJSON() (buff []byte, e error) { + type MarshalTypeMacsManagedCloudHostConfigurationSummary MacsManagedCloudHostConfigurationSummary + s := struct { + DiscriminatorParam string `json:"entitySource"` + MarshalTypeMacsManagedCloudHostConfigurationSummary + }{ + "MACS_MANAGED_CLOUD_HOST", + (MarshalTypeMacsManagedCloudHostConfigurationSummary)(m), + } + + return json.Marshal(&s) +} diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/macs_managed_cloud_host_insight.go b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/macs_managed_cloud_host_insight.go index e4df376bb16..a1bed4451c1 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/macs_managed_cloud_host_insight.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/macs_managed_cloud_host_insight.go @@ -74,6 +74,7 @@ type MacsManagedCloudHostInsight struct { // Platform type. // Supported platformType(s) for MACS-managed external host insight: [LINUX]. + // Supported platformType(s) for MACS-managed cloud host insight: [LINUX]. // Supported platformType(s) for EM-managed external host insight: [LINUX, SOLARIS, SUNOS, ZLINUX]. PlatformType MacsManagedCloudHostInsightPlatformTypeEnum `mandatory:"false" json:"platformType,omitempty"` diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/macs_managed_cloud_host_insight_summary.go b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/macs_managed_cloud_host_insight_summary.go index 6cd4d675126..eeb6564d3ba 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/macs_managed_cloud_host_insight_summary.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/macs_managed_cloud_host_insight_summary.go @@ -71,6 +71,7 @@ type MacsManagedCloudHostInsightSummary struct { // Platform type. // Supported platformType(s) for MACS-managed external host insight: [LINUX]. + // Supported platformType(s) for MACS-managed cloud host insight: [LINUX]. // Supported platformType(s) for EM-managed external host insight: [LINUX, SOLARIS, SUNOS, ZLINUX]. PlatformType MacsManagedCloudHostInsightSummaryPlatformTypeEnum `mandatory:"false" json:"platformType,omitempty"` diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/macs_managed_external_host_configuration_summary.go b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/macs_managed_external_host_configuration_summary.go index 19725255107..6ef23ec1920 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/macs_managed_external_host_configuration_summary.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/macs_managed_external_host_configuration_summary.go @@ -85,6 +85,7 @@ type MacsManagedExternalHostConfigurationSummary struct { // Platform type. // Supported platformType(s) for MACS-managed external host insight: [LINUX]. + // Supported platformType(s) for MACS-managed cloud host insight: [LINUX]. // Supported platformType(s) for EM-managed external host insight: [LINUX, SOLARIS, SUNOS, ZLINUX]. PlatformType HostConfigurationSummaryPlatformTypeEnum `mandatory:"true" json:"platformType"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/macs_managed_external_host_insight.go b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/macs_managed_external_host_insight.go index f6cc5b1abab..5c4d3f79d05 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/macs_managed_external_host_insight.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/macs_managed_external_host_insight.go @@ -71,6 +71,7 @@ type MacsManagedExternalHostInsight struct { // Platform type. // Supported platformType(s) for MACS-managed external host insight: [LINUX]. + // Supported platformType(s) for MACS-managed cloud host insight: [LINUX]. // Supported platformType(s) for EM-managed external host insight: [LINUX, SOLARIS, SUNOS, ZLINUX]. PlatformType MacsManagedExternalHostInsightPlatformTypeEnum `mandatory:"false" json:"platformType,omitempty"` diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/macs_managed_external_host_insight_summary.go b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/macs_managed_external_host_insight_summary.go index 6a994e18a17..c5632eeb451 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/macs_managed_external_host_insight_summary.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/macs_managed_external_host_insight_summary.go @@ -68,6 +68,7 @@ type MacsManagedExternalHostInsightSummary struct { // Platform type. // Supported platformType(s) for MACS-managed external host insight: [LINUX]. + // Supported platformType(s) for MACS-managed cloud host insight: [LINUX]. // Supported platformType(s) for EM-managed external host insight: [LINUX, SOLARIS, SUNOS, ZLINUX]. PlatformType MacsManagedExternalHostInsightSummaryPlatformTypeEnum `mandatory:"false" json:"platformType,omitempty"` diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/opsi_configurations.go b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/opsi_configurations.go new file mode 100644 index 00000000000..d99d6824e30 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/opsi_configurations.go @@ -0,0 +1,49 @@ +// Copyright (c) 2016, 2018, 2022, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Operations Insights API +// +// Use the Operations Insights API to perform data extraction operations to obtain database +// resource utilization, performance statistics, and reference information. For more information, +// see About Oracle Cloud Infrastructure Operations Insights (https://docs.cloud.oracle.com/en-us/iaas/operations-insights/doc/operations-insights.html). +// + +package opsi + +import ( + "fmt" + "github.com/oracle/oci-go-sdk/v65/common" + "strings" +) + +// OpsiConfigurations An OPSI configuration resource is a container for storing custom values for customizable configuration items exposed by Operations Insights. +// Operations Insights exposes different sets of customizable configuration items through different OPSI configuration types. +// UX_CONFIGURATION: OPSI configuration resource of this type can be created only once in each compartment. It is a compartment level singleton resource. +// When configuration values, for an OPSI configuration type that supports compartment level singleton (e.g: UX_CONFIGURATION) resource, are queried for a compartment, +// following will be the order of preference. +// 1. If the specified compartment has an OPSI configuration resource, first preference will be given to the custom values inside that. +// 2. If the root compartment has an OPSI configuration resource, it will be considered as applicable to all compartments of that tenency, +// hence second preference will be given to the custom values inside that. +// 3. Default configuration will be considered as a final fallback option. +type OpsiConfigurations struct { + + // OPSI Configuration Object. + OpsiConfigurations *interface{} `mandatory:"false" json:"opsiConfigurations"` +} + +func (m OpsiConfigurations) String() string { + return common.PointerString(m) +} + +// ValidateEnumValue returns an error when providing an unsupported enum value +// This function is being called during constructing API request process +// Not recommended for calling this function directly +func (m OpsiConfigurations) ValidateEnumValue() (bool, error) { + errMessage := []string{} + + if len(errMessage) > 0 { + return true, fmt.Errorf(strings.Join(errMessage, "\n")) + } + return false, nil +} diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/opsi_operationsinsights_client.go b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/opsi_operationsinsights_client.go index 8afe9a808cf..0aad720752a 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/opsi_operationsinsights_client.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/opsi_operationsinsights_client.go @@ -6659,6 +6659,66 @@ func (client OperationsInsightsClient) summarizeHostInsightResourceUtilizationIn return response, err } +// SummarizeHostInsightTopProcessesUsage Returns response with aggregated data (timestamp, usageData) for top processes on a specific date. +// Data is aggregated for the time specified and processes are sorted descendent by the process metric specified (CPU, MEMORY, VIRTUAL_MEMORY). +// hostInsightId, processMetric must be specified. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/opsi/SummarizeHostInsightTopProcessesUsage.go.html to see an example of how to use SummarizeHostInsightTopProcessesUsage API. +// A default retry strategy applies to this operation SummarizeHostInsightTopProcessesUsage() +func (client OperationsInsightsClient) SummarizeHostInsightTopProcessesUsage(ctx context.Context, request SummarizeHostInsightTopProcessesUsageRequest) (response SummarizeHostInsightTopProcessesUsageResponse, err error) { + var ociResponse common.OCIResponse + policy := common.DefaultRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } + if request.RetryPolicy() != nil { + policy = *request.RetryPolicy() + } + ociResponse, err = common.Retry(ctx, request, client.summarizeHostInsightTopProcessesUsage, policy) + if err != nil { + if ociResponse != nil { + if httpResponse := ociResponse.HTTPResponse(); httpResponse != nil { + opcRequestId := httpResponse.Header.Get("opc-request-id") + response = SummarizeHostInsightTopProcessesUsageResponse{RawResponse: httpResponse, OpcRequestId: &opcRequestId} + } else { + response = SummarizeHostInsightTopProcessesUsageResponse{} + } + } + return + } + if convertedResponse, ok := ociResponse.(SummarizeHostInsightTopProcessesUsageResponse); ok { + response = convertedResponse + } else { + err = fmt.Errorf("failed to convert OCIResponse into SummarizeHostInsightTopProcessesUsageResponse") + } + return +} + +// summarizeHostInsightTopProcessesUsage implements the OCIOperation interface (enables retrying operations) +func (client OperationsInsightsClient) summarizeHostInsightTopProcessesUsage(ctx context.Context, request common.OCIRequest, binaryReqBody *common.OCIReadSeekCloser, extraHeaders map[string]string) (common.OCIResponse, error) { + + httpRequest, err := request.HTTPRequest(http.MethodGet, "/hostInsights/topProcessesUsage", binaryReqBody, extraHeaders) + if err != nil { + return nil, err + } + + var response SummarizeHostInsightTopProcessesUsageResponse + var httpResponse *http.Response + httpResponse, err = client.Call(ctx, &httpRequest) + defer common.CloseBodyIfValid(httpResponse) + response.RawResponse = httpResponse + if err != nil { + apiReferenceLink := "https://docs.oracle.com/iaas/api/#/en/operations-insights/20200630/HostInsights/SummarizeHostInsightTopProcessesUsage" + err = common.PostProcessServiceError(err, "OperationsInsights", "SummarizeHostInsightTopProcessesUsage", apiReferenceLink) + return response, err + } + + err = common.UnmarshalResponse(httpResponse, &response) + return response, err +} + // SummarizeHostInsightTopProcessesUsageTrend Returns response with aggregated time series data (timeIntervalstart, timeIntervalEnd, commandArgs, usageData) for top processes. // Data is aggregated for the time period specified and proceses are sorted descendent by the proces metric specified (CPU, MEMORY, VIRTUAL_MEMORY). // HostInsight Id and Process metric must be specified diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/pe_comanaged_host_configuration_summary.go b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/pe_comanaged_host_configuration_summary.go index 9ed5b58c520..c21f5ce8ddd 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/pe_comanaged_host_configuration_summary.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/pe_comanaged_host_configuration_summary.go @@ -85,6 +85,7 @@ type PeComanagedHostConfigurationSummary struct { // Platform type. // Supported platformType(s) for MACS-managed external host insight: [LINUX]. + // Supported platformType(s) for MACS-managed cloud host insight: [LINUX]. // Supported platformType(s) for EM-managed external host insight: [LINUX, SOLARIS, SUNOS, ZLINUX]. PlatformType HostConfigurationSummaryPlatformTypeEnum `mandatory:"true" json:"platformType"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/resource_capacity_trend_aggregation.go b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/resource_capacity_trend_aggregation.go index 5842a877f68..87a75526674 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/resource_capacity_trend_aggregation.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/resource_capacity_trend_aggregation.go @@ -23,11 +23,14 @@ type ResourceCapacityTrendAggregation struct { // The timestamp in which the current sampling period ends in RFC 3339 format. EndTimestamp *common.SDKTime `mandatory:"true" json:"endTimestamp"` - // The maximum allocated amount of the resource metric type (CPU, STORAGE). + // The maximum allocated amount of the resource metric type (CPU, STORAGE) for a set of databases. Capacity *float64 `mandatory:"true" json:"capacity"` - // The base allocated amount of the resource metric type (CPU, STORAGE). + // The base allocated amount of the resource metric type (CPU, STORAGE) for a set of databases. BaseCapacity *float64 `mandatory:"true" json:"baseCapacity"` + + // The maximum host CPUs (cores x threads/core) on the underlying infrastructure. This only applies to CPU and does not not apply for Autonomous Databases. + TotalHostCapacity *float64 `mandatory:"false" json:"totalHostCapacity"` } func (m ResourceCapacityTrendAggregation) String() string { diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/resource_statistics.go b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/resource_statistics.go index 1f0dbe34ffe..b219a8bc97b 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/resource_statistics.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/resource_statistics.go @@ -23,7 +23,7 @@ type ResourceStatistics struct { // Total amount used of the resource metric type (CPU, STORAGE). Usage *float64 `mandatory:"true" json:"usage"` - // The maximum allocated amount of the resource metric type (CPU, STORAGE). + // The maximum allocated amount of the resource metric type (CPU, STORAGE) for a set of databases. Capacity *float64 `mandatory:"true" json:"capacity"` // Resource utilization in percentage @@ -32,7 +32,7 @@ type ResourceStatistics struct { // Change in resource utilization in percentage UsageChangePercent *float64 `mandatory:"true" json:"usageChangePercent"` - // The base allocated amount of the resource metric type (CPU, STORAGE). + // The base allocated amount of the resource metric type (CPU, STORAGE) for a set of databases. BaseCapacity *float64 `mandatory:"false" json:"baseCapacity"` // Indicates if auto scaling feature is enabled or disabled on a database. It will be false for all metrics other than CPU. @@ -40,6 +40,9 @@ type ResourceStatistics struct { // Array of instance metrics InstanceMetrics []InstanceMetrics `mandatory:"false" json:"instanceMetrics"` + + // The maximum host CPUs (cores x threads/core) on the underlying infrastructure. This only applies to CPU and does not not apply for Autonomous Databases. + TotalHostCapacity *float64 `mandatory:"false" json:"totalHostCapacity"` } func (m ResourceStatistics) String() string { diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/resource_usage_summary.go b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/resource_usage_summary.go index 133e033f58d..6b89589c915 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/resource_usage_summary.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/resource_usage_summary.go @@ -26,7 +26,7 @@ type ResourceUsageSummary struct { // Total amount used of the resource metric type (CPU, STORAGE). Usage *float64 `mandatory:"true" json:"usage"` - // The maximum allocated amount of the resource metric type (CPU, STORAGE). + // The maximum allocated amount of the resource metric type (CPU, STORAGE) for a set of databases. Capacity *float64 `mandatory:"true" json:"capacity"` // Resource utilization in percentage @@ -37,6 +37,9 @@ type ResourceUsageSummary struct { // The user-friendly name for the Exadata system. The name does not have to be unique. ExadataDisplayName *string `mandatory:"false" json:"exadataDisplayName"` + + // The maximum host CPUs (cores x threads/core) on the underlying infrastructure. This only applies to CPU and does not not apply for Autonomous Databases. + TotalHostCapacity *float64 `mandatory:"false" json:"totalHostCapacity"` } func (m ResourceUsageSummary) String() string { diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/resource_usage_trend_aggregation.go b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/resource_usage_trend_aggregation.go index 30f65a4bc4c..03e12463b6c 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/resource_usage_trend_aggregation.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/resource_usage_trend_aggregation.go @@ -26,8 +26,11 @@ type ResourceUsageTrendAggregation struct { // Total amount used of the resource metric type (CPU, STORAGE). Usage *float64 `mandatory:"true" json:"usage"` - // The maximum allocated amount of the resource metric type (CPU, STORAGE). + // The maximum allocated amount of the resource metric type (CPU, STORAGE) for a set of databases. Capacity *float64 `mandatory:"true" json:"capacity"` + + // The maximum host CPUs (cores x threads/core) on the underlying infrastructure. This only applies to CPU and does not not apply for Autonomous Databases. + TotalHostCapacity *float64 `mandatory:"false" json:"totalHostCapacity"` } func (m ResourceUsageTrendAggregation) String() string { diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_database_insight_resource_usage_aggregation.go b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_database_insight_resource_usage_aggregation.go index ad88d439abd..b0504375f60 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_database_insight_resource_usage_aggregation.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_database_insight_resource_usage_aggregation.go @@ -35,11 +35,14 @@ type SummarizeDatabaseInsightResourceUsageAggregation struct { // Total amount used of the resource metric type (CPU, STORAGE). Usage *float64 `mandatory:"true" json:"usage"` - // The maximum allocated amount of the resource metric type (CPU, STORAGE). + // The maximum allocated amount of the resource metric type (CPU, STORAGE) for a set of databases. Capacity *float64 `mandatory:"true" json:"capacity"` // Percentage change in resource usage during the current period calculated using linear regression functions UsageChangePercent *float64 `mandatory:"true" json:"usageChangePercent"` + + // The maximum host CPUs (cores x threads/core) on the underlying infrastructure. This only applies to CPU and does not not apply for Autonomous Databases. + TotalHostCapacity *float64 `mandatory:"false" json:"totalHostCapacity"` } func (m SummarizeDatabaseInsightResourceUsageAggregation) String() string { diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_exadata_insight_resource_usage_aggregation.go b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_exadata_insight_resource_usage_aggregation.go index 3d3f3799183..5e7d5b137f7 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_exadata_insight_resource_usage_aggregation.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_exadata_insight_resource_usage_aggregation.go @@ -38,11 +38,14 @@ type SummarizeExadataInsightResourceUsageAggregation struct { // Total amount used of the resource metric type (CPU, STORAGE). Usage *float64 `mandatory:"true" json:"usage"` - // The maximum allocated amount of the resource metric type (CPU, STORAGE). + // The maximum allocated amount of the resource metric type (CPU, STORAGE) for a set of databases. Capacity *float64 `mandatory:"true" json:"capacity"` // Percentage change in resource usage during the current period calculated using linear regression functions UsageChangePercent *float64 `mandatory:"true" json:"usageChangePercent"` + + // The maximum host CPUs (cores x threads/core) on the underlying infrastructure. This only applies to CPU and does not not apply for Autonomous Databases. + TotalHostCapacity *float64 `mandatory:"false" json:"totalHostCapacity"` } func (m SummarizeExadataInsightResourceUsageAggregation) String() string { diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_host_insight_resource_capacity_trend_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_host_insight_resource_capacity_trend_request_response.go index 028d3fd76c1..13661a99fed 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_host_insight_resource_capacity_trend_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_host_insight_resource_capacity_trend_request_response.go @@ -46,6 +46,7 @@ type SummarizeHostInsightResourceCapacityTrendRequest struct { // Filter by one or more platform types. // Supported platformType(s) for MACS-managed external host insight: [LINUX]. + // Supported platformType(s) for MACS-managed cloud host insight: [LINUX]. // Supported platformType(s) for EM-managed external host insight: [LINUX, SOLARIS, SUNOS, ZLINUX]. PlatformType []SummarizeHostInsightResourceCapacityTrendPlatformTypeEnum `contributesTo:"query" name:"platformType" omitEmpty:"true" collectionFormat:"multi"` diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_host_insight_resource_forecast_trend_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_host_insight_resource_forecast_trend_request_response.go index 83db5f8d9ae..1c5ecd9018d 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_host_insight_resource_forecast_trend_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_host_insight_resource_forecast_trend_request_response.go @@ -46,6 +46,7 @@ type SummarizeHostInsightResourceForecastTrendRequest struct { // Filter by one or more platform types. // Supported platformType(s) for MACS-managed external host insight: [LINUX]. + // Supported platformType(s) for MACS-managed cloud host insight: [LINUX]. // Supported platformType(s) for EM-managed external host insight: [LINUX, SOLARIS, SUNOS, ZLINUX]. PlatformType []SummarizeHostInsightResourceForecastTrendPlatformTypeEnum `contributesTo:"query" name:"platformType" omitEmpty:"true" collectionFormat:"multi"` diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_host_insight_resource_statistics_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_host_insight_resource_statistics_request_response.go index a649103b036..9a1cbb77f73 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_host_insight_resource_statistics_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_host_insight_resource_statistics_request_response.go @@ -46,6 +46,7 @@ type SummarizeHostInsightResourceStatisticsRequest struct { // Filter by one or more platform types. // Supported platformType(s) for MACS-managed external host insight: [LINUX]. + // Supported platformType(s) for MACS-managed cloud host insight: [LINUX]. // Supported platformType(s) for EM-managed external host insight: [LINUX, SOLARIS, SUNOS, ZLINUX]. PlatformType []SummarizeHostInsightResourceStatisticsPlatformTypeEnum `contributesTo:"query" name:"platformType" omitEmpty:"true" collectionFormat:"multi"` diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_host_insight_resource_usage_aggregation.go b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_host_insight_resource_usage_aggregation.go index a821bfefdc1..ac8219bfa8f 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_host_insight_resource_usage_aggregation.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_host_insight_resource_usage_aggregation.go @@ -35,7 +35,7 @@ type SummarizeHostInsightResourceUsageAggregation struct { // Total amount used of the resource metric type (CPU, STORAGE). Usage *float64 `mandatory:"true" json:"usage"` - // The maximum allocated amount of the resource metric type (CPU, STORAGE). + // The maximum allocated amount of the resource metric type (CPU, STORAGE) for a set of databases. Capacity *float64 `mandatory:"true" json:"capacity"` // Percentage change in resource usage during the current period calculated using linear regression functions diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_host_insight_resource_usage_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_host_insight_resource_usage_request_response.go index e8456f13c03..0e35b736170 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_host_insight_resource_usage_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_host_insight_resource_usage_request_response.go @@ -46,6 +46,7 @@ type SummarizeHostInsightResourceUsageRequest struct { // Filter by one or more platform types. // Supported platformType(s) for MACS-managed external host insight: [LINUX]. + // Supported platformType(s) for MACS-managed cloud host insight: [LINUX]. // Supported platformType(s) for EM-managed external host insight: [LINUX, SOLARIS, SUNOS, ZLINUX]. PlatformType []SummarizeHostInsightResourceUsagePlatformTypeEnum `contributesTo:"query" name:"platformType" omitEmpty:"true" collectionFormat:"multi"` diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_host_insight_resource_usage_trend_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_host_insight_resource_usage_trend_request_response.go index b69f5c5134d..35e1b9899e6 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_host_insight_resource_usage_trend_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_host_insight_resource_usage_trend_request_response.go @@ -46,6 +46,7 @@ type SummarizeHostInsightResourceUsageTrendRequest struct { // Filter by one or more platform types. // Supported platformType(s) for MACS-managed external host insight: [LINUX]. + // Supported platformType(s) for MACS-managed cloud host insight: [LINUX]. // Supported platformType(s) for EM-managed external host insight: [LINUX, SOLARIS, SUNOS, ZLINUX]. PlatformType []SummarizeHostInsightResourceUsageTrendPlatformTypeEnum `contributesTo:"query" name:"platformType" omitEmpty:"true" collectionFormat:"multi"` diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_host_insight_resource_utilization_insight_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_host_insight_resource_utilization_insight_request_response.go index cc8ac0078d2..b6e476aed9d 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_host_insight_resource_utilization_insight_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_host_insight_resource_utilization_insight_request_response.go @@ -46,6 +46,7 @@ type SummarizeHostInsightResourceUtilizationInsightRequest struct { // Filter by one or more platform types. // Supported platformType(s) for MACS-managed external host insight: [LINUX]. + // Supported platformType(s) for MACS-managed cloud host insight: [LINUX]. // Supported platformType(s) for EM-managed external host insight: [LINUX, SOLARIS, SUNOS, ZLINUX]. PlatformType []SummarizeHostInsightResourceUtilizationInsightPlatformTypeEnum `contributesTo:"query" name:"platformType" omitEmpty:"true" collectionFormat:"multi"` diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_host_insight_top_processes_usage_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_host_insight_top_processes_usage_request_response.go new file mode 100644 index 00000000000..5300163ffa8 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_host_insight_top_processes_usage_request_response.go @@ -0,0 +1,145 @@ +// Copyright (c) 2016, 2018, 2022, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +package opsi + +import ( + "fmt" + "github.com/oracle/oci-go-sdk/v65/common" + "net/http" + "strings" +) + +// SummarizeHostInsightTopProcessesUsageRequest wrapper for the SummarizeHostInsightTopProcessesUsage operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/opsi/SummarizeHostInsightTopProcessesUsage.go.html to see an example of how to use SummarizeHostInsightTopProcessesUsageRequest. +type SummarizeHostInsightTopProcessesUsageRequest struct { + + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment. + CompartmentId *string `mandatory:"true" contributesTo:"query" name:"compartmentId"` + + // Required OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the host insight resource. + Id *string `mandatory:"true" contributesTo:"query" name:"id"` + + // Host top processes resource metric sort options. + // Supported values are CPU, MEMORY, VIIRTUAL_MEMORY. + ResourceMetric *string `mandatory:"true" contributesTo:"query" name:"resourceMetric"` + + // Timestamp at which to gather the top processes. + // This will be top processes over the hour or over the day pending the time range passed into the query. + Timestamp *common.SDKTime `mandatory:"true" contributesTo:"query" name:"timestamp"` + + // Analysis start time in UTC in ISO 8601 format(inclusive). + // Example 2019-10-30T00:00:00Z (yyyy-MM-ddThh:mm:ssZ). + // The minimum allowed value is 2 years prior to the current day. + // timeIntervalStart and timeIntervalEnd parameters are used together. + // If analysisTimeInterval is specified, this parameter is ignored. + TimeIntervalStart *common.SDKTime `mandatory:"false" contributesTo:"query" name:"timeIntervalStart"` + + // Analysis end time in UTC in ISO 8601 format(exclusive). + // Example 2019-10-30T00:00:00Z (yyyy-MM-ddThh:mm:ssZ). + // timeIntervalStart and timeIntervalEnd are used together. + // If timeIntervalEnd is not specified, current time is used as timeIntervalEnd. + TimeIntervalEnd *common.SDKTime `mandatory:"false" contributesTo:"query" name:"timeIntervalEnd"` + + // For list pagination. The value of the `opc-next-page` response header from + // the previous "List" call. For important details about how pagination works, + // see List Pagination (https://docs.cloud.oracle.com/Content/API/Concepts/usingapi.htm#nine). + Page *string `mandatory:"false" contributesTo:"query" name:"page"` + + // For list pagination. The maximum number of results per page, or items to + // return in a paginated "List" call. + // For important details about how pagination works, see + // List Pagination (https://docs.cloud.oracle.com/Content/API/Concepts/usingapi.htm#nine). + // Example: `50` + Limit *int `mandatory:"false" contributesTo:"query" name:"limit"` + + // Unique Oracle-assigned identifier for the request. If you need to contact + // Oracle about a particular request, please provide the request ID. + OpcRequestId *string `mandatory:"false" contributesTo:"header" name:"opc-request-id"` + + // Specify time period in ISO 8601 format with respect to current time. + // Default is last 30 days represented by P30D. + // If timeInterval is specified, then timeIntervalStart and timeIntervalEnd will be ignored. + // Examples P90D (last 90 days), P4W (last 4 weeks), P2M (last 2 months), P1Y (last 12 months), . Maximum value allowed is 25 months prior to current time (P25M). + AnalysisTimeInterval *string `mandatory:"false" contributesTo:"query" name:"analysisTimeInterval"` + + // Filter by one or more host types. + // Possible values are CLOUD-HOST, EXTERNAL-HOST + HostType []string `contributesTo:"query" name:"hostType" collectionFormat:"multi"` + + // Optional OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the host (Compute Id) + HostId *string `mandatory:"false" contributesTo:"query" name:"hostId"` + + // Metadata about the request. This information will not be transmitted to the service, but + // represents information that the SDK will consume to drive retry behavior. + RequestMetadata common.RequestMetadata +} + +func (request SummarizeHostInsightTopProcessesUsageRequest) String() string { + return common.PointerString(request) +} + +// HTTPRequest implements the OCIRequest interface +func (request SummarizeHostInsightTopProcessesUsageRequest) HTTPRequest(method, path string, binaryRequestBody *common.OCIReadSeekCloser, extraHeaders map[string]string) (http.Request, error) { + + _, err := request.ValidateEnumValue() + if err != nil { + return http.Request{}, err + } + return common.MakeDefaultHTTPRequestWithTaggedStructAndExtraHeaders(method, path, request, extraHeaders) +} + +// BinaryRequestBody implements the OCIRequest interface +func (request SummarizeHostInsightTopProcessesUsageRequest) BinaryRequestBody() (*common.OCIReadSeekCloser, bool) { + + return nil, false + +} + +// RetryPolicy implements the OCIRetryableRequest interface. This retrieves the specified retry policy. +func (request SummarizeHostInsightTopProcessesUsageRequest) RetryPolicy() *common.RetryPolicy { + return request.RequestMetadata.RetryPolicy +} + +// ValidateEnumValue returns an error when providing an unsupported enum value +// This function is being called during constructing API request process +// Not recommended for calling this function directly +func (request SummarizeHostInsightTopProcessesUsageRequest) ValidateEnumValue() (bool, error) { + errMessage := []string{} + if len(errMessage) > 0 { + return true, fmt.Errorf(strings.Join(errMessage, "\n")) + } + return false, nil +} + +// SummarizeHostInsightTopProcessesUsageResponse wrapper for the SummarizeHostInsightTopProcessesUsage operation +type SummarizeHostInsightTopProcessesUsageResponse struct { + + // The underlying http response + RawResponse *http.Response + + // A list of SummarizeHostInsightsTopProcessesUsageCollection instances + SummarizeHostInsightsTopProcessesUsageCollection `presentIn:"body"` + + // Unique Oracle-assigned identifier for the request. If you need to contact + // Oracle about a particular request, please provide the request ID. + OpcRequestId *string `presentIn:"header" name:"opc-request-id"` + + // For pagination of a list of items. When paging through a list, if this header appears in the response, + // then a partial list might have been returned. Include this value as the `page` parameter for the + // subsequent GET request to get the next batch of items. + OpcNextPage *string `presentIn:"header" name:"opc-next-page"` +} + +func (response SummarizeHostInsightTopProcessesUsageResponse) String() string { + return common.PointerString(response) +} + +// HTTPResponse implements the OCIResponse interface +func (response SummarizeHostInsightTopProcessesUsageResponse) HTTPResponse() *http.Response { + return response.RawResponse +} diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_host_insight_top_processes_usage_trend_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_host_insight_top_processes_usage_trend_request_response.go index 4af986c15da..004d210619a 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_host_insight_top_processes_usage_trend_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_host_insight_top_processes_usage_trend_request_response.go @@ -70,6 +70,9 @@ type SummarizeHostInsightTopProcessesUsageTrendRequest struct { // Optional OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the host (Compute Id) HostId *string `mandatory:"false" contributesTo:"query" name:"hostId"` + // Unique identifier for a process. + ProcessHash *string `mandatory:"false" contributesTo:"query" name:"processHash"` + // Metadata about the request. This information will not be transmitted to the service, but // represents information that the SDK will consume to drive retry behavior. RequestMetadata common.RequestMetadata diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_host_insights_top_processes_usage_collection.go b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_host_insights_top_processes_usage_collection.go new file mode 100644 index 00000000000..6bf7fb95946 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/summarize_host_insights_top_processes_usage_collection.go @@ -0,0 +1,44 @@ +// Copyright (c) 2016, 2018, 2022, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Operations Insights API +// +// Use the Operations Insights API to perform data extraction operations to obtain database +// resource utilization, performance statistics, and reference information. For more information, +// see About Oracle Cloud Infrastructure Operations Insights (https://docs.cloud.oracle.com/en-us/iaas/operations-insights/doc/operations-insights.html). +// + +package opsi + +import ( + "fmt" + "github.com/oracle/oci-go-sdk/v65/common" + "strings" +) + +// SummarizeHostInsightsTopProcessesUsageCollection Top level response object. +type SummarizeHostInsightsTopProcessesUsageCollection struct { + + // The start timestamp that was passed into the request. + Timestamp *common.SDKTime `mandatory:"true" json:"timestamp"` + + // List of usage data samples for a top process on a specific date. + Items []TopProcessesUsage `mandatory:"true" json:"items"` +} + +func (m SummarizeHostInsightsTopProcessesUsageCollection) String() string { + return common.PointerString(m) +} + +// ValidateEnumValue returns an error when providing an unsupported enum value +// This function is being called during constructing API request process +// Not recommended for calling this function directly +func (m SummarizeHostInsightsTopProcessesUsageCollection) ValidateEnumValue() (bool, error) { + errMessage := []string{} + + if len(errMessage) > 0 { + return true, fmt.Errorf(strings.Join(errMessage, "\n")) + } + return false, nil +} diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/tablespace_usage_trend.go b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/tablespace_usage_trend.go index 6dd8df790df..23d26dd5041 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/tablespace_usage_trend.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/tablespace_usage_trend.go @@ -26,7 +26,7 @@ type TablespaceUsageTrend struct { // Total amount used of the resource metric type (CPU, STORAGE). Usage *float64 `mandatory:"true" json:"usage"` - // The maximum allocated amount of the resource metric type (CPU, STORAGE). + // The maximum allocated amount of the resource metric type (CPU, STORAGE) for a set of databases. Capacity *float64 `mandatory:"true" json:"capacity"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/opsi/top_processes_usage.go b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/top_processes_usage.go new file mode 100644 index 00000000000..6fdbe3aa8a1 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v65/opsi/top_processes_usage.go @@ -0,0 +1,62 @@ +// Copyright (c) 2016, 2018, 2022, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Operations Insights API +// +// Use the Operations Insights API to perform data extraction operations to obtain database +// resource utilization, performance statistics, and reference information. For more information, +// see About Oracle Cloud Infrastructure Operations Insights (https://docs.cloud.oracle.com/en-us/iaas/operations-insights/doc/operations-insights.html). +// + +package opsi + +import ( + "fmt" + "github.com/oracle/oci-go-sdk/v65/common" + "strings" +) + +// TopProcessesUsage Aggregated data for top processes on a specific date. +type TopProcessesUsage struct { + + // Command line and arguments used to launch process. + Command *string `mandatory:"true" json:"command"` + + // Unique identifier for a process. + ProcessHash *string `mandatory:"true" json:"processHash"` + + // Process CPU usage. + CpuUsage *float64 `mandatory:"true" json:"cpuUsage"` + + // Process CPU utilization percentage. + CpuUtilization *float64 `mandatory:"true" json:"cpuUtilization"` + + // Process memory utilization percentage. + MemoryUtilization *float64 `mandatory:"true" json:"memoryUtilization"` + + // Process virtual memory in Megabytes. + VirtualMemoryInMBs *float64 `mandatory:"true" json:"virtualMemoryInMBs"` + + // Procress physical memory in Megabytes. + PhysicalMemoryInMBs *float64 `mandatory:"true" json:"physicalMemoryInMBs"` + + // Maximum number of processes running at time of collection. + MaxProcessCount *int `mandatory:"true" json:"maxProcessCount"` +} + +func (m TopProcessesUsage) String() string { + return common.PointerString(m) +} + +// ValidateEnumValue returns an error when providing an unsupported enum value +// This function is being called during constructing API request process +// Not recommended for calling this function directly +func (m TopProcessesUsage) ValidateEnumValue() (bool, error) { + errMessage := []string{} + + if len(errMessage) > 0 { + return true, fmt.Errorf(strings.Join(errMessage, "\n")) + } + return false, nil +} diff --git a/vendor/modules.txt b/vendor/modules.txt index cce66986234..0811965ffcf 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -248,7 +248,7 @@ github.com/mitchellh/reflectwalk # github.com/oklog/run v1.0.0 ## explicit github.com/oklog/run -# github.com/oracle/oci-go-sdk/v65 v65.22.0 +# github.com/oracle/oci-go-sdk/v65 v65.22.0 => ./vendor/github.com/oracle/oci-go-sdk ## explicit; go 1.13 github.com/oracle/oci-go-sdk/v65/adm github.com/oracle/oci-go-sdk/v65/aianomalydetection From ff09c1f2405706a5fa10882258ecbb532c5d55b9 Mon Sep 17 00:00:00 2001 From: rashik_bhasin Date: Fri, 30 Sep 2022 17:05:09 +0530 Subject: [PATCH 13/17] Finalize changelog and release for version v4.96.0 --- CHANGELOG.md | 15 +++++++++++++++ internal/globalvar/version.go | 4 ++-- website/oci.erb | 15 +++++++++++++++ 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c67de1edbd0..2a04c70c14c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,18 @@ +## 4.96.0 (Unreleased) + +### Added +- Support for FSS : Support for cross region replication +- resource discovery for private DNS zones and rrsets +- Support for BDS - Start/Stop Cluster +- Support for OPSI Windows/Solaris support +- Support for OCI Bastions - DNS Support +- Generate terraform config for services with non zero resource only +- Id based RD without resourceType +- Support for EXACC Elastic Compute +### Bug Fix +- Support for repeated Deployments on each apply +- canaryStrategy code added to fix the issue + ## 4.95.0 (September 28, 2022) ### Added diff --git a/internal/globalvar/version.go b/internal/globalvar/version.go index cf2b2e5123c..9642e15d491 100644 --- a/internal/globalvar/version.go +++ b/internal/globalvar/version.go @@ -7,8 +7,8 @@ import ( "log" ) -const Version = "4.95.0" -const ReleaseDate = "2022-09-28" +const Version = "4.96.0" +const ReleaseDate = "2022-10-05" func PrintVersion() { log.Printf("[INFO] terraform-provider-oci %s\n", Version) diff --git a/website/oci.erb b/website/oci.erb index fc7566de4a6..ef08072247b 100644 --- a/website/oci.erb +++ b/website/oci.erb @@ -3547,6 +3547,18 @@
  • oci_file_storage_mount_targets
  • +
  • + oci_file_storage_replication +
  • +
  • + oci_file_storage_replication_target +
  • +
  • + oci_file_storage_replication_targets +
  • +
  • + oci_file_storage_replications +
  • oci_file_storage_snapshot
  • @@ -3570,6 +3582,9 @@
  • oci_file_storage_mount_target
  • +
  • + oci_file_storage_replication +
  • oci_file_storage_snapshot
  • From 347d3d48dbe4f42185e72e7d6f8606d732ae69f7 Mon Sep 17 00:00:00 2001 From: Lizzy Li Date: Mon, 3 Oct 2022 10:02:01 -0700 Subject: [PATCH 14/17] Exempted - Remove FSS replication feature release note from CHANGELOG --- CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2a04c70c14c..990f68d40c5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,6 @@ ## 4.96.0 (Unreleased) ### Added -- Support for FSS : Support for cross region replication - resource discovery for private DNS zones and rrsets - Support for BDS - Start/Stop Cluster - Support for OPSI Windows/Solaris support From f7f3d536fcd6ce180456032925aa6876b4b9597d Mon Sep 17 00:00:00 2001 From: Varun Date: Wed, 5 Oct 2022 06:18:25 +0000 Subject: [PATCH 15/17] Vendored - oci-go-sdk for release version v65 --- go.mod | 4 ++-- go.sum | 4 ++-- vendor/github.com/oracle/oci-go-sdk/v65/common/version.go | 2 +- vendor/modules.txt | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 5e38020cc87..6ba7a07a035 100644 --- a/go.mod +++ b/go.mod @@ -53,7 +53,7 @@ require ( github.com/mitchellh/mapstructure v1.1.2 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/oklog/run v1.0.0 // indirect - github.com/oracle/oci-go-sdk/v65 v65.22.0 + github.com/oracle/oci-go-sdk/v65 v65.23.0 github.com/pmezard/go-difflib v1.0.0 // indirect github.com/sony/gobreaker v0.5.0 // indirect github.com/ulikunitz/xz v0.5.8 // indirect @@ -76,6 +76,6 @@ require ( ) // Uncomment this line to get OCI Go SDK from local source instead of github -replace github.com/oracle/oci-go-sdk/v65 v65.22.0 => ./vendor/github.com/oracle/oci-go-sdk +//replace github.com/oracle/oci-go-sdk => ../../oracle/oci-go-sdk go 1.17 diff --git a/go.sum b/go.sum index 6b9de2145bb..c6b37fc99af 100644 --- a/go.sum +++ b/go.sum @@ -289,8 +289,8 @@ github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQ github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/oracle/oci-go-sdk/v65 v65.22.0 h1:lCv8gxFOVI8sG0vCjxZ8CuXy3QOUM+JspcAdzsPkjcs= -github.com/oracle/oci-go-sdk/v65 v65.22.0/go.mod h1:oyMrMa1vOzzKTmPN+kqrTR9y9kPA2tU1igN3NUSNTIE= +github.com/oracle/oci-go-sdk/v65 v65.23.0 h1:v+nyukczQQ05xXzF+AdmjR9TQMRrWQENF+jVFZiyEQg= +github.com/oracle/oci-go-sdk/v65 v65.23.0/go.mod h1:oyMrMa1vOzzKTmPN+kqrTR9y9kPA2tU1igN3NUSNTIE= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/common/version.go b/vendor/github.com/oracle/oci-go-sdk/v65/common/version.go index 10283474e65..03d6c6a5e94 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/common/version.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/common/version.go @@ -12,7 +12,7 @@ import ( const ( major = "65" - minor = "22" + minor = "23" patch = "0" tag = "" ) diff --git a/vendor/modules.txt b/vendor/modules.txt index 0811965ffcf..7c7a8632924 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -248,7 +248,7 @@ github.com/mitchellh/reflectwalk # github.com/oklog/run v1.0.0 ## explicit github.com/oklog/run -# github.com/oracle/oci-go-sdk/v65 v65.22.0 => ./vendor/github.com/oracle/oci-go-sdk +# github.com/oracle/oci-go-sdk/v65 v65.23.0 ## explicit; go 1.13 github.com/oracle/oci-go-sdk/v65/adm github.com/oracle/oci-go-sdk/v65/aianomalydetection From e2e0fd34ae6ac9f187d5672e74606cb178c84b40 Mon Sep 17 00:00:00 2001 From: nsnigade Date: Wed, 5 Oct 2022 12:52:33 +0530 Subject: [PATCH 16/17] Added - Release for v4.96.0 --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 990f68d40c5..b1f6ab8c70b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -## 4.96.0 (Unreleased) +## 4.96.0 (October 05, 2022) ### Added - resource discovery for private DNS zones and rrsets From c9885b18502f67441536a83f9ee4a13a375cedb8 Mon Sep 17 00:00:00 2001 From: tf-oci-pub Date: Wed, 5 Oct 2022 07:24:13 +0000 Subject: [PATCH 17/17] Added - README.md of service examples with magic button --- examples/zips/adm.zip | Bin 1736 -> 1736 bytes examples/zips/aiAnomalyDetection.zip | Bin 2881 -> 2881 bytes examples/zips/aiVision.zip | Bin 1655 -> 1655 bytes examples/zips/always_free.zip | Bin 3850 -> 3850 bytes examples/zips/analytics.zip | Bin 2764 -> 2764 bytes examples/zips/announcements_service.zip | Bin 2120 -> 2120 bytes examples/zips/api_gateway.zip | Bin 25115 -> 25115 bytes examples/zips/apm.zip | Bin 16745 -> 16745 bytes examples/zips/appmgmt_control.zip | Bin 2677 -> 2677 bytes examples/zips/artifacts.zip | Bin 6838 -> 6838 bytes examples/zips/audit.zip | Bin 1803 -> 1803 bytes examples/zips/autoscaling.zip | Bin 5679 -> 5679 bytes examples/zips/bastion.zip | Bin 5001 -> 4998 bytes examples/zips/big_data_service.zip | Bin 6875 -> 6875 bytes examples/zips/blockchain.zip | Bin 1898 -> 1898 bytes examples/zips/budget.zip | Bin 2380 -> 2380 bytes examples/zips/certificatesManagement.zip | Bin 10427 -> 10427 bytes examples/zips/cloudBridge.zip | Bin 9942 -> 9942 bytes examples/zips/cloudMigrations.zip | Bin 8425 -> 8425 bytes examples/zips/cloudguard.zip | Bin 21778 -> 21778 bytes examples/zips/compute.zip | Bin 43222 -> 43222 bytes examples/zips/computeinstanceagent.zip | Bin 3311 -> 3311 bytes examples/zips/concepts.zip | Bin 4860 -> 4860 bytes examples/zips/container_engine.zip | Bin 16025 -> 16025 bytes examples/zips/dataConnectivity.zip | Bin 1673 -> 1673 bytes examples/zips/database.zip | Bin 115901 -> 115957 bytes examples/zips/databaseTools.zip | Bin 3784 -> 3784 bytes examples/zips/databasemanagement.zip | Bin 3467 -> 3467 bytes examples/zips/databasemigration.zip | Bin 2903 -> 2903 bytes examples/zips/datacatalog.zip | Bin 2819 -> 2819 bytes examples/zips/dataflow.zip | Bin 3040 -> 3040 bytes examples/zips/dataintegration.zip | Bin 2002 -> 2002 bytes examples/zips/datalabeling.zip | Bin 2174 -> 2174 bytes examples/zips/datasafe.zip | Bin 30206 -> 30206 bytes examples/zips/datascience.zip | Bin 36772 -> 36772 bytes examples/zips/devops.zip | Bin 34613 -> 34620 bytes examples/zips/dns.zip | Bin 10519 -> 10519 bytes examples/zips/em_warehouse.zip | Bin 2423 -> 2423 bytes examples/zips/email.zip | Bin 4638 -> 4638 bytes examples/zips/events.zip | Bin 1807 -> 1807 bytes examples/zips/fast_connect.zip | Bin 8232 -> 8232 bytes examples/zips/functions.zip | Bin 3525 -> 3525 bytes examples/zips/fusionapps.zip | Bin 12098 -> 12098 bytes examples/zips/goldengate.zip | Bin 3300 -> 3300 bytes examples/zips/health_checks.zip | Bin 8823 -> 8823 bytes examples/zips/id6.zip | Bin 1356 -> 1356 bytes examples/zips/identity.zip | Bin 16310 -> 16310 bytes examples/zips/identity_data_plane.zip | Bin 1948 -> 1948 bytes examples/zips/integration.zip | Bin 1914 -> 1914 bytes examples/zips/jms.zip | Bin 6791 -> 6791 bytes examples/zips/kms.zip | Bin 7649 -> 7649 bytes examples/zips/license_manager.zip | Bin 4730 -> 4730 bytes examples/zips/limits.zip | Bin 2520 -> 2520 bytes examples/zips/load_balancer.zip | Bin 6517 -> 6517 bytes examples/zips/log_analytics.zip | Bin 15356 -> 15356 bytes examples/zips/logging.zip | Bin 5101 -> 5101 bytes examples/zips/management_agent.zip | Bin 3045 -> 3045 bytes examples/zips/management_dashboard.zip | Bin 5585 -> 5585 bytes examples/zips/marketplace.zip | Bin 3061 -> 3061 bytes examples/zips/metering_computation.zip | Bin 4441 -> 4441 bytes examples/zips/monitoring.zip | Bin 3630 -> 3630 bytes examples/zips/mysql.zip | Bin 6419 -> 6419 bytes examples/zips/network_firewall.zip | Bin 4455 -> 4455 bytes examples/zips/network_load_balancer.zip | Bin 6539 -> 6539 bytes examples/zips/networking.zip | Bin 39045 -> 39045 bytes examples/zips/nosql.zip | Bin 4136 -> 4136 bytes examples/zips/notifications.zip | Bin 6641 -> 6641 bytes examples/zips/object_storage.zip | Bin 8937 -> 8937 bytes examples/zips/ocvp.zip | Bin 4075 -> 4075 bytes examples/zips/onesubscription.zip | Bin 7800 -> 7800 bytes examples/zips/opensearch.zip | Bin 2400 -> 2400 bytes examples/zips/operator_access_control.zip | Bin 6778 -> 6778 bytes examples/zips/opsi.zip | Bin 18004 -> 18004 bytes examples/zips/optimizer.zip | Bin 2310 -> 2310 bytes .../zips/oracle_cloud_vmware_solution.zip | Bin 3979 -> 3979 bytes examples/zips/oracle_content_experience.zip | Bin 2053 -> 2053 bytes examples/zips/oracle_digital_assistant.zip | Bin 1790 -> 1790 bytes examples/zips/osmanagement.zip | Bin 8724 -> 8724 bytes examples/zips/osp_gateway.zip | Bin 2566 -> 2566 bytes examples/zips/osub_billing_schedule.zip | Bin 1703 -> 1703 bytes .../zips/osub_organization_subscription.zip | Bin 1756 -> 1756 bytes examples/zips/osub_subscription.zip | Bin 1795 -> 1795 bytes examples/zips/osub_usage.zip | Bin 1748 -> 1748 bytes examples/zips/pic.zip | Bin 8004 -> 8004 bytes examples/zips/resourcemanager.zip | Bin 6563 -> 6563 bytes examples/zips/serviceManagerProxy.zip | Bin 1691 -> 1691 bytes examples/zips/service_catalog.zip | Bin 3852 -> 3852 bytes examples/zips/service_connector_hub.zip | Bin 2757 -> 2757 bytes examples/zips/service_mesh.zip | Bin 8996 -> 8996 bytes examples/zips/stack_monitoring.zip | Bin 8828 -> 8828 bytes examples/zips/storage.zip | Bin 22547 -> 22633 bytes examples/zips/streaming.zip | Bin 2116 -> 2116 bytes examples/zips/usage_proxy.zip | Bin 1634 -> 1634 bytes examples/zips/vault_secret.zip | Bin 1767 -> 1767 bytes examples/zips/visual_builder.zip | Bin 1874 -> 1874 bytes examples/zips/vn_monitoring.zip | Bin 3386 -> 3386 bytes .../zips/vulnerability_scanning_service.zip | Bin 2244 -> 2244 bytes examples/zips/web_app_acceleration.zip | Bin 2374 -> 2374 bytes examples/zips/web_app_firewall.zip | Bin 2814 -> 2814 bytes ..._application_acceleration_and_security.zip | Bin 6483 -> 6483 bytes 100 files changed, 0 insertions(+), 0 deletions(-) diff --git a/examples/zips/adm.zip b/examples/zips/adm.zip index 022a3a0304ab21a9e8650c97802ce45967d3c001..88dfb1e6de81ab8977c1c055f36b7c5bc125ecc2 100644 GIT binary patch delta 178 zcmX@XdxDoYz?+$civa{!tz9SbDyv8u+9pc_acKoN10%~zW(Ee9N}w!Aod}TT0ILfz zWCy7O;)y*wnSnYddoXIjgf>?)hBAQ#FEZ=E1zA`E7{P+!tcJ`$jg#N7%7FQ+SnW~x R+-w#o{8Tn8Fnfbs|8T1FSB@ zkR7BBh$r^!WCrS-?7^r76WUzK7|H||yvVEr7i3`xU<3<>vl=o3HBNrRDg)-PVzo!% RbF*2X@Kf2W!2CsQY5*nAF}MH# diff --git a/examples/zips/aiAnomalyDetection.zip b/examples/zips/aiAnomalyDetection.zip index 960a0e254ffa44d78afbe0262be5ad6c724e60af..17b0f7f4407772115d6cc5d1df8635fc0702bb83 100644 GIT binary patch delta 178 zcmX>oc2JBrz?+$civa{!tz9Sb8mUMc+9pc_acKoN10%~zW(Ee9N}w!Aod}TT0IN%O zUoc2JBrz?+$civa{CS=dbEHBw>uWSqfbs|8T1FSCD zfgPj{h$pT(!VJ_oxscHkCbW4YqXQdQ@C&;&T+oaonh`8Gh0}ob%% SKaI;Bg@2yQ6U>+9Rs#UBBQsk7 diff --git a/examples/zips/aiVision.zip b/examples/zips/aiVision.zip index cf8333b25879c71d4e5ac935ee0d9dc23678261b..86f659c236fb1b28a985d241ea7e106d4a885c87 100644 GIT binary patch delta 156 zcmey)^PPt`z?+$civa{!tz9SbYOqTh+9pdI+D^2QVg`vsnt?@tq7$d>0f|fwWz>fW zZSH2g!Uz^jVm5>e&SDOQ2!3KQV+LxRJdsrftjLSi1%yqOQ@MdP=VgLbFYuAaq+U$~sw#m|lwiE58m_Z^jmS7Q}=)^huK_Zjm7>!^; zo2N5+ae)P&aGSsd<$1yx!Ge{%mdrqnlNyqOQ@MdP=VgP|j7B&-kwb@xd87H%SGM;EJ#S9XOu>^|%MJLYL4-%Oi$7lo- z+B}`niwi9HgxdrzD9;nl2o|j5wPXfroZP@C1Lj}hbw}ab@;RXJ=kqy%`A_)N0REXT AbN~PV diff --git a/examples/zips/analytics.zip b/examples/zips/analytics.zip index d44d012fea8b8aaca9151304729639fd548ffa0c..9f60a8761511d283c7bef18def8056d872821f34 100644 GIT binary patch delta 193 zcmX>jdPbBtz?+$civa{!tz9SbYO+fj+9pdI+D^2UVg`vsnS(`uq7!HA1&K_KU^IXU zZSH3jX8{YYWHo{dK4Q&b1PcbTBLutHLm+|=In0@XrcIXSlmRQU;&esfFXXgC;WKhM MpzxES{AFBf0510`QUCw| delta 193 zcmX>jdPbBtz?+$civa{CS=dbE)nsS+WSq?Q$#|lz6f;O9${Z{L6rDI@FGyr^1fu~= zXmdZKI15;CC94r!@DXbcBUmty9U<7o9s&`3$YIV5G;Ojprwmw;6{jl-e<7zG3ZIe7 N0fnCo0|2vgINAUJ diff --git a/examples/zips/announcements_service.zip b/examples/zips/announcements_service.zip index 3516117c557a981ed37cb27df53f7eae7b2a7c8a..a168ae37b5442ecdde200ae36f58a3f59d80aac1 100644 GIT binary patch delta 178 zcmX>ha6*7Lz?+$civa{!tz9SbnyN?|+9pc_acKoN10%~zW(Ee9N}w!Aod}TT0IN%L zW(TPQ;)xqhG6Qu^u3@x+32olbsK5*se8gf07gT3WWdsZMvpF*ZHBRha6*7Lz?+$civa{CS=dbEHC18xWSqfbs|8T1FSC1 znH{7Kh$n71$qdvvxrWgOCbW4!qXIKn@DYn0Tu_}gl@To1&*sbw)HvCLT?Wkm!WM|a RPiOZ+;a_I=0rQnO)BuHSG7$g( diff --git a/examples/zips/api_gateway.zip b/examples/zips/api_gateway.zip index 726adf04550965a14ee4ae9bfa5d064593f17c04..77307d8ef2633a392fc41c13cbd492bf9cf21ac1 100644 GIT binary patch delta 1142 zcmbPzgmLx}M&1B#W)?065MZ@-oye=rE@^0+ENy5zxzR|36Cn{}jwB()3{tz@4lD#z zzwwV13rJ|PC94CvvdME<-C^oBzh>3r1}l^iG{aC>CTI&+xJz&zGgx7?s3lBr@@&xq zV6iwch|LgJf*mvYfS5N--DV+i5r}g%r7bXQX_ZDe=d!f6AlO7kT_+5M>AIe96SwO& zK}?JjQ=9xFT9k{Eff*4_5Eslda)qmZWdwD8x0ybM!S~Ee;R>b9=P-d?u+!26F8IYV zlo2fGV~rU~%d8Qh^ve1JMB!aqV+?Cd?5yA>mf9sig7b!>HHJcSCy3{P9@^aCqz>`u zDmNPpg_#U-pGsf`V*vVwl)ufiO0(m}HnM zR7?iUZwT|jQ1dR#4@FH}cqoRN^Rd#CKZI+dsI!jnM&YlBaL3Rm7zwivVt;*PB!-$_ zk!~pFBt>D`e={loMU8iKIEFcbkf( z`i+0ASU^IPEmJC%4`8BH^H&~&Jpc#h3GC^Co!d-&%n86C8MJ-{1lV^(_ z0E@+mL2QP&66~1C2gJN#>NX3Bi$I*CDQ$saORF@(IhUoi1;HjV>N;U4OxN{>vVrK<6vD7XB5}Y?2tuYjuJ3%}T^w8!8Cv}KN zSGn0>DCBZ?hMO4TzLFK>#!0@880u1eJ>crL__A|={jx9A5)@>U6T`$N3xu(O#U#UA zp<*&%enXfKhMIR_ekf||7KJGiW=|ea13(BDMEs7epSZ5S|cB~VI zp7XITC~8dOV17r0^`baO6g8~z9vJ52$9tlvxfKud7s4E$1TPddI}!ph%+XHtM^Q5; LF$~QAny3Zowd?>;R7oWUJQ)#jSBRfxM2qyzG zHWd?>nILpZF@wzdXAKqss^09tXvz!{n_R(SgQjfq4Hjp(IwjUDh`N3bh-R=uz{X8} z$KeE5XU@5Ui4SOADA?g(V)6!l@kwTaT*&T&X!PN+g=?I^v!4m z9S@bASip9uY3RT$j@0mj7_&-K58*)MfcT>ci7TY&OVWyf8*or-70ex02m>GiaYn}% zu1-PM5~40f42OM2Na&2I#49@;?JeiUTD>N5cS!x+zA6pj140qp1wo zch8M%Q24IKPGEkb2}FLSu_ubWh=~`9e1l0KioCXk^khC$Jrp%@rU58wE||KY$eWpY zqsT8dvqh0-GDlUPVQ!D2{-n7B3SZj-;%1m1rdb4|$a7nUp_t!nnTsMXWEF`b-)mKj zB0s@Sda|vxE{d8SYt(Q6sgbflRg-B0Q3G?=9UChYb1iI9<6@dEB-~)?IqcF<)K9SU jKykw_yJ!^oa(f6LrvHn54T}6E2h_O!<^YLXXGb*v=ix-h delta 1315 zcmaFa#Q3s_kvG7bnT3l11SVP7OypH&XZd8D%=XE6;zJQmxcKB%no5%u7}pd%~_T{hPH!Zm@w3V3qbj7yxl(p>#Z4 z-F0a-u;r8FywR2A%ca7V-In{o2sSQHM`@A>_vBb>E-bz`QA7l9o#GA@9ac8jbWB%9 z=y<5?!~(WMO+yE6aioSH#F$l@dI$$12gDyuNL(RBUy@b?+<=2xt6=W1LKpxEh%-9A zaCHj0mJoF@dJsV*^Umt!!PPnGCqmRMGeA#;lm8h&QXD85IvNH*)J-um1f}B18%<@v zzI$$DgTi+;b^`MgO(60sjXhE1MNGU<Y=EKGYvpdbHUUFMc&K| zm=lrQwAjoRMV`qVRegrJJ&O91<_;))Z3~E-VSboq5sV_wZ5f7QezRpRioB3jB#L~m zRWXYE1Uu=;w${2RYI>|u!vUm5$_7PU4z?+$civa{!tz9Sb>a$B4+9pdI+D`UomSP48CD?+6fWi}(90G|<&SbQJ z32k1%7{v${WMy_n*E%_e*$b|4FLM(_p%beohQjr%0dR$EY~B!sA?&uyKwBp>a>#&f t*v#&Y!dKvMgYv~D*K@Fe)pT$KqNw@J5rLtmlrtPf%{$IGFyEg`4FG40JQ)B0 delta 274 zcmew=@>PU4z?+$civa{CS=dbE)n{k)Rc0Dqo{eu83*S3bEyFUt@luI diff --git a/examples/zips/artifacts.zip b/examples/zips/artifacts.zip index 09d2e4b6402925bf2ad6dbd64b14b0191c2ca56b..c3087a3a6d9579b206a91295c0a739ce695e1248 100644 GIT binary patch delta 594 zcmdmHy3Ld~z?+$civa{!tz9SbYO+fj+9pdI+D^2UVg`vsIl@FH`w2pX_Q!&SfC@J& zGv+dblue$@QU(*8EWo-DEVhN!94_{WbvIaS1Dh?nd6Na%LtyGQ=djOW0xRU?GQ&`q z%;f-6IC&M9Cs^G#E@zn7W(RI&h-NolBe-BaZvdkp(21d7PeKW;$qQNJC;#UY#<0VT zKMJmOI)5o6*b;t03k-$Xf?jZidjv%w7GD-NX9kALQt8`x~o&6_O99s*OhIfs1~6IdZ9ml=k_ zWG)Ao!pW<+Ji+R|aXG`pHal=LLo~bb8o>qYc>@>)fldqsdlE`$Oso!Itm~T3{&57W9HE+#@IgvG}sEIWsU^CT|oKn=CKR2G*=2;tv&*0rTgI zWTWu4L|ah!7erk#%rF-NMibavh#5=7k}%Y0h`XSu=@a)u;r|m4MBx`oIAEA@Sprp$ Wvt$N_nzNE_DCU?-MS%Geq|^X4;kFV0 diff --git a/examples/zips/audit.zip b/examples/zips/audit.zip index 8af758b95085294b79d89e0178f72f8ec9b72c77..33bab78b70fe8f3b3c56aaca4d1a6b0cf8d36239 100644 GIT binary patch delta 178 zcmeC?>*nJP@MdP=VgLbFYuAaqsw$F(w#m{!Tw1}+z{v8FnSp_&5-1B&Cjz87!0N(` z*+J@nc;bYe%s`!!eHe9MLYwOu+nKv`jGGP95R!0=R R7n>Cde;Jz%nE#Yb4FKgDBw+vm delta 178 zcmeC?>*nJP@MdP=VgP|j7B&-kRaIC%87H#=acKoN10%~zW(Ee9N}w!Aod}TT0ILf# zW(TPQ;)xS>G6Qu^_F>e432m-tY-a)saQ?@~4V8 Yp~(LfaYW(Ah`OTi4~s&~=M+-|08(mCKL7v# delta 340 zcmZ3lvtEZcz?+$civa{CS=dbE)n;e;WSq?Q$#|l@6f;O9#tbY16rDKpAxLC$Eu$$+ zX!B0Sg| zy!(op>r?-&xLmh6a{b!LzO$+dFWanRlQ_F78-g-Cm_48PV%9(r5q`5`B_0>~iIla}<)-6$J zl11X(qyINlzi_xV;bhdVd4+cyLOdokGfP=LFq_J~P`lEESteY&?TM%f)9!^Px)RqD z1gA~-5Uc+T9l;8n_#FrRBcmmYJiNR-nzVyDcDEaPyK>UJaf8FXt@(r)8?n<F7+Bbc-3>;!2f2{`~v*@u9QPG5zfV?0e+5Ss#gCbRhAtTY~NDDQ6_b z`CK`q10FTdiQ$HbsY^S;(4tue_>2^V9!on81Z_uRATDy;|G>* z(+e@)(!QddkI^G8Lt-WWxj(bN7Fg^P^4ueIGF9cAam9;M!k?ArNC!SxROe^G%f!Mw zKTbT`o9*6IjXQ#(6=Hj3t)m(zFKqsp@yOIyvM<27y>EupY$9AXmUM)8yrXW-uAB&i{haOp2_N7YYbZ))(T3Nh!dbZp^~KAjHqWAk82F^d|!Y zFxN6HX|(15YnXu0059&Iq+8ZV zANQT(`Q}Rh7R_1p&u@8JiB4G)b^o~K_j$?R6I7n`Dg;HccX6vlYp`C95qt8zNx;0M z>CQy4UE$XxSDw0F5z!(0#rF@MR+?=o*bb(XVeUC-S->y;MoH?8qIUB9rfeIqc7$b@s?Lyu&FRNpx<*wi;7=F`A7RVa#a&}pKO|#m(ZH$sHGCo zz$|6;z-%h_LhVWucA0SPwkM)nn07BTk(IcfBsgu-kGm7)c=qWVBVufmo zpWi;^ll{i-KAS~Lp8xQ^)$jjB`dPh5Lc!$ODS~O5&gJW_`c0d>kwKin_wcS`(=9BV z&pf!MwB?3lvg?^i)3z?yU~{SZxZx~BmLpK`q_t(@&x|ws zJ^R})D^ENkJu$}Zk;UTHb$bl#5APIIefRQu&t)Zt5AS~#ZrqmiAhvba+<*pk!y79X zi&{uXN%W`1eV*`;L$xHMW2a$U?!vvZSN40cTr+#-Wb zlIZ3%*85Bxpp@+RE8SzVFNY3Xrh(%#6JzY=67EPwaPq&vV*r<9=k;d<>+-tN^J{V( zA6(buiF~&hpKZ?J7lLSN6fk85W}(URg=D~n+z_xv;hPFN!}z=?`DyYJK{J>PSmz%> zX=W8xhRJrUa%`*&Fe!PM(~Vge7=-v47^E2_z?qs6NG@r#n_MZR3{wj>W}lEW^D!QV k$q#sB(TxH5JpvUq3R|_ z^GY#;v>x{a3ju{Ui!(AZfy5?DGuy!gCnqrP0gK7An8U<2$FkgK0}I-7JEI#oc^S7C zT;X?aMMj8;yp|XWD|j8?3itC~fhe5D4^aqm&o%x?h@g?64TkPXf)J}g3hxLWX9iod zOw^7UC@|SUT#OSQI+NMN0-&NYU{w`j;VAr%Vm>JRcyU)OrW_LwL{Via5rIY3W(ju` dRWg!(DEuBtm^`uzze;+cs7jQA*tJzk4FH6BjGF)e diff --git a/examples/zips/blockchain.zip b/examples/zips/blockchain.zip index 85ea1865932c9021de66476231160c197f599958..578798fb79c6063ae343f7ba1e189435abd10977 100644 GIT binary patch delta 155 zcmaFG_ll1|hCE1Pk6}wO|HnocxeY2Fy2Sb3@_JXR}A1^`n^ BFY*8Y diff --git a/examples/zips/budget.zip b/examples/zips/budget.zip index dad0f1063a8eda44a5f1eef941e7eb4c30d15234..c8f35c53e45d4c97bab8f9a88a9ff3687ccfb0c4 100644 GIT binary patch delta 156 zcmX>jbVi6bz?+$civa{!tz9SbsjbVi6bz?+$civa{CS=dbERbyxQWSq?Q$#|lb6f;O9+ypEF6rDI}CrD(nAEPcz zXmb;Muh|vHO&eQ7-}Syq$fKlnxUwhp%{-vT_B2@9wnF>i2c0Ez8HFH zl*3WNtcQ(ADJ# z`@q%h7mi~BJ6b`^7hT;%u~fLazhW;To_i_dg|04KHW99FzicYRUUhjFP+(2Yla~RT z-zy&k<%>-gP+|j%F)AdWsA*Pcz)&NpBt6+d(F{f148?dX>H<;J^eDm9K!nGS%(W-%Kf84lJv`2({ROxY{6-bp>R55H|%#m}4khE#VAT_*LQ?#Kd<}78nY>q!Hmc zLt2#??4AR1mY{H-d{I>f%>SS&J=siN8!9F?IbVqlEZ!_1iXrw(-W^46vVsGKnxhIH zC~83Fdnsa?KV2~dMIEn_Cx%%SO3^54zA9nb7p@Gm58?KM%1$WyR8@R1%$}^0h@wVJ a)fGcct!f~Onh&aO7-}NaAmOw@O$`762*k<& delta 774 zcmccSd(D?Oz?+$civa{CS=dbE)n;e;WSq?Q$$0WYQ4vnK#N>BU>XQTH`M5Y4m=Ox3 zm_d4WxP$cog*US?_A!FQCQoOwgb7Z*&U64QHjCK^$#AgV$sd@lVCps-vIH@K6~2>F zo4kfi2t)BBHaECpeRej8Vhc`d429Dch%axFJEhT=8c2q(PdzQYc7 z!Wm%`xC!hcK@bySMC~wi?-LD%E0hp3g}5m|!W={4Y6)k!!mkqFASS+(vcOR2C5;Hr z8PclEVD}u5vjm0vB(mD+E6jE$@xlbVDV=8PzM!T^HmAczHnujeF(Q7RCYqqr>f$EVfJK|L=-h* as;(GnYE=VK)O=8N!%!2U1_`GPYH9#?!TbUM diff --git a/examples/zips/cloudMigrations.zip b/examples/zips/cloudMigrations.zip index 0bd80611587e401174d723d83451781472390ccd..a8a9d76b76490027eb80f0847567b7593b8ac5f6 100644 GIT binary patch delta 593 zcmaFq_|lO#z?+$civa{!tz9Sb>a$B4+9pdI+D=?3!if-1utJDSF@sd@a|4S2Rd42I zG-LvaO}1yYLsK?+A+tYR-FN1l%wTn!*==EhlfSbc0E_M7uz-ne{>c%<2p06?vPU;? zBUd0?9VfRp#Nu#XA9Qucd2`|FtohbL%zMr6g03!DAR4Z2tAH`Yyw^fD=<2+Mz2WNS z3J0-)-Sy0P|5=;Dg#!vTPg&LDnn@>6jk%3V^R2WGTtcsZW%W$ yrhJz1MNyR`8;?cRW7#MaRq=AwSXBLy3qnyNsCqLu zqahPWY_dJG9h$Pq3z_}l>b^7YWCp9-%x()4ocx{r09b4nhXqV*^G}W-MzEkCmp!_H z8@U4E>NvT*Ar^=8`k<>j&YKHYXU(@3V%}?h7j$*O0?}}FTLp|E=DilOL09K3>i~m>eiCh6t?5fl?k&Q5mqR-BKY~R2fS9ps1QJ9gD)3lL5vI*ldU? z-7;=iO!+M1i=rw?HXe(r$Ffl Ci?W>n diff --git a/examples/zips/cloudguard.zip b/examples/zips/cloudguard.zip index afacd1d0d49a154d67ab3ba0593ca902e003b91b..1849e8999fe175b7314c25f3ec39024eb8da6a3e 100644 GIT binary patch delta 1082 zcmbQVigD5^M&1B#W)?065MZ@-oye=jE@^0+ENy5z`Jt)^CtPB3t-k8S24N&gDQ1xR z?IB!CQbQG=!6Z z8Q}=9J(GAN;M(JPE!e>J%o4VM2~NH#yb~-oRm2R#?)M@AFm;>VMEP033L_-#F%<5W z41+6_kn)H4CQCLHL*ZlD7`Q?=Id^uji4#;IUW9}l*x8f+sRqIohN;blDEy*p3>VbX z^I-(*uGNQl23hw_eGj-o4TD^WduAA0f(4Nkelpav6K|N$ zgak#2jX8$G^EN?ng&MY%5QR$|4KWn{baaC&baP6F#LNZ{3s4MB-WVu0S-~G7#^vb- z6_WuwugEhAL(MnOKom8ZUJ)2-9(#G9sPXkqL*ZZbhS`I#+t$YgMa^QLI1F=@eSJ~X zO!7^^P$S`&jG|_)UlxWMO@El1A^u$KACIC(CBP9w50|I(atih8mL)dlWTOLqfp(Hz8^ObIuv; delta 1082 zcmbQVigD5^M&1B#W)?065SV0PGm%$|o#m5pGTSHP$q!XUIN=hLYxPwpHV7k0N-=}f zZw~U+QyY8d1~+%v=25-fpF diff --git a/examples/zips/compute.zip b/examples/zips/compute.zip index 804f629f496f60dc3750803792a0f91f3e6b48d0..01760e794205f36b704eeb0edf5b214862f3aa29 100644 GIT binary patch delta 1949 zcmZvbYe-XJ9LA4MkDC`X6isJ&OC{XY(Ij=wa%#>Zb;`<1Y9i6a!u4Us1k(taWT5L! z-R7p7&I<)%oezlx6(&JnLXZ)d5d=XHLduHl!U^UVs;aa^Wrrmy)SXg=8oZJvi5RKzIFcSnp+Z%&3Jp@Cpo&n20{z_?;07rP zK!Ke+#<81ZW-!a{iHifdW=So_ElUirrrMMaPFmx_C4|Tq%9j8PM4#pG&1e;QfR3R5 zo|~Qi$QPc_n;{VwMZ4^)WFyGWO*nLS|r$(6(SAIu}IFx8I0lRFe9rb%|NAUk7i4J~ouctK+Px z!}X&i%ROn7`{icmAi1=pAxVPRiuJ8}aK?YtRB2NxeB04p;P;j-x7yCPLSFn9&K8_5 zHF@Gf2*Mjl5GR9*F~QG? zWY&0StkU-#4-8hgfFEP$1x%tx3hs`lVBDMWG6C0OlLF0z9OEn#tpYB_T7@wtYYV3B zSjz?PT5MX3S+@ymSJ*WevuM`|>PRO~V~lyS0n_&O(QZ20G47Y+9Hw1!mija}=XXxE z;QQ#*DeR493eP}J*J9kQX`K5$jqkC+g?l`Aq1nS+N8D(K{Qk{uMm;6bzGYZuO45!8vXO2PJ=OrYh=*I~7t^VOIp WUeIG&|32Ez0zTu`Md-1-nDrlSnmV)q delta 1949 zcmZvbYe-XJ9LA5Hb=;<+p=fTFw{(P?7o6n1oSL)9D=T%Wi9{ERtq&R#Od~|eK1VIo)24W%9&UyEqv$NNII}gA2|2+T8JR8BDjo|Rw zbEH5_(7&;~B4fBLM6i?7LG9##*K!F-ON}RyG$w_LyNXe~pqmUTKSWcYPnQC2QKA48 zSg0J9-K0{38FpV-5Xd!)YFKVrq=z+&4awlNDOxNdNM9&l0?;3Ep2asK3aP{12%68% zhdPJ14{;DdBpBaBgEVs_dh2};s$*7t_Q^mIdn7Qz^;j;#t5}j`*ma3AkUJ_ZW4*6R z|G=mnNkxI&T2ckeMI<)|G4*byaNsT@`EfJDhnVJj&~olm{&mY|HbIhUS>B;NlD@vfz4FGE0&3v#cku-cmLP z{>^TOV5<_I27L%tHYcpKhhLwP)PthM`C z{V2t7Pa73}xtTeLt}Ll2iXgV4e5)Rq@n5yOq$v@;ZEwr;#a*@6sUPNnGmLJEMBz5cWg_8s^ zB_xP)Xd(jJU2s$MyrQ~g@a&2Wa9)1@LtrteP#W;npk%^GdJ2)|zSOf7#)t)jm8>{4 z_zqr9lf~To((A4FdS@f=-r;zbbPRi-w_$|a>hlpf-2b;x*4&+G{0GVG@m%_k34Tq+ zGsZ*X6~6Bnpf|w<{2af?W8z#=aDO5JSOuJz#@o8|*?`_4r z?-SE!us6nOJOgE~!MHniocm$N_t@aTJzhA_>|w6sPP9XA|AS8C37I`-A(lZi!{5y+ z`_0u!n8kBGn(g4tA19So|Zmei`BNxS7DlP VL4#?12WYzs_>5Z?p~v!K+JCIEz+?ab diff --git a/examples/zips/computeinstanceagent.zip b/examples/zips/computeinstanceagent.zip index 6d1590504a71902b2f80a8914f1fd9aa384d0401..a26d6bf8fd4c1d5d5969d9a425b3e5f993d8441f 100644 GIT binary patch delta 256 zcmaDa`CgJYz?+$civa{!tz9Sbny5$`+9pc_acKoN10%~zW(Ee9N}w!Aod}TT0IN%N zVh5=M;)&}HF#~l@E@t#LB1UUy=LX|DU2F^t|AZMB{3bUtT1>X)k>=uLV1^pF*_UYv z8`#J%9JVl9Hd}B;GlB)DaXEohPLAP`0rP)x1%Ua!+z@^acO;7ZbM7J(el?Fbn17N- F4FKN(IBWm_ delta 256 zcmaDa`CgJYz?+$civa{CS=dbEHBn*tWSqfbs|8T1FSC9 zi5;X4h$pT)#0=CqxtP)0h#0M*og0krbg?lo{1awi@SEJoXffHEN1BV1ff;JxW?!Zy zY+xh5aM;3Z*=)fX%?K8p#^nT3IXQ+$2F(A(6#(Y@azpqz+>t2q&$)|G_|-f>j{xYOkjoXERGlo*RXiN75-)sf+!SVH-rm%u=_KDb>p6qtWaNDTn-2Vh|U delta 413 zcmeyP`bU*Fz?+$civa{CS=dbE)nI4&WSq?Q$#`-W8J%IuHveUGX96p9XK}<(xQ4|8uJAXD5JaH>yCGcAgWaDIta}!RDTeOP9CmPp z7M!dQg$`T}aKU!2mk_~X9v`^iF`hPvpg*4(GteWG?F3}NRxIap0rTJSLHNA`~O42|A<5&ldDS;d2W4q3|n(qQLxXLTUhd4}e(! diff --git a/examples/zips/container_engine.zip b/examples/zips/container_engine.zip index 45276043b5a4424b02039650c8ff12b128ccb173..d9b2477cee144d032b97667b4dd70579f74c7d23 100644 GIT binary patch delta 699 zcmbPPJF}KIz?+$civa{!tz9Sb8n8_FWicga)%-I_NzHyDEzGE z4Oi%@UITH<5e+}MprmFTM6gN=A$VTPo(XJ^pso*GWs2@sh+vF?7hG_yfgv+kk9Sz#TCA*O5tGaKQ*g;>PoZKE*s&bE!f5EHe7 JxTDxk4FEQ2xc&eD delta 699 zcmbPPJF}KIz?+$civa{CS=dbEHDG7?WSq?Q$#}9iw-hr-DA5iq1QedQ>;On)awelW zOlb3R#w1R#AP=_%y4J}V-1cyV>$v~1gB7k9wuB457Y=0v3%ZNCBkSe^S`)gAv25vc zb_Rwr>B;9c6ed|IaB(s)gIov1o7u$}Ilwx(<=l{Ug2hVZeBoA{lsgQuw_nWxL*ZvN zZ@5BN^%{sw=(%cm)CIeO@VBvSh1{ diff --git a/examples/zips/dataConnectivity.zip b/examples/zips/dataConnectivity.zip index ae90541c4f99bf8e5e86fa06dbf1382a5eadc1a3..d1c11ab056927e6292f23e2a3c5a3cb25e0273a9 100644 GIT binary patch delta 178 zcmeC=?d0VR@MdP=VgLbFYuAaq1}c(Vv{x Q$Lfy47iaSX^OM=s0L;KIyZ`_I diff --git a/examples/zips/database.zip b/examples/zips/database.zip index efd51044856b06e41f00480a7b014fef2ec1d80d..1315584a0277e3f9cf62c1b486414fe1b91722f3 100644 GIT binary patch delta 10985 zcmZ`Xs0p zqNGX2;z~sId-uRTXVcr~(?8GpKHq0t&t7XCHPP%-(d@joR?IA1B;+5f;pPNh6?O?7 zqrFl(MpR%fl3>fmj7VKg8Kjb^sKyNy!Qe6(@UJ`~qYf#oW5n^nGN+8>Q%|Et>N6t|YOyZs68uZu?KoatPX%*ghyE5^__sb_MV-hu zq6?>u)-$28o-JxV2AD~t7ra!@Rtf0PWxx&f#{hALfT>wACS``UubEJm>`gnC_#k8M zftx#Peg-W7mBY##7pm(?0%{zY4`sMcrlVQ5U&3gUY`hlG1bfhg6;MRn;)G)304LSf zVQC7EJJ17rR6hvs6z;3uAPc~?i=4lu`3p5|)5AS?UNRToV;gI!8I;9f`v)?}Dk zj2GSPORrKa$*~7?7r3a84^$xmBUCG(ngk$9WWjwB@YjWk69FfWljD4wF`BXVJ+i=9 z_QZD+R$u{tb5zI(Jmyaae)Hdgb)IpM<`Q6h5Z3cZGd~U5hUH5lbUkjyE%YvCMleht z7utr2Vw66|v5sT3{pxrq4s;A3z;aQ0X$93YLV(de+H;@Pfm;*2dC7qKE>0YVa6_jc zz`Kwg*e$51}5MdH%3lE_<_ z+q+_na2K;;Br##_r8Nxh;S~{$!>uyR6l!=JmJY_qyW@;;TB*wyFb8tuvF3wAp-#qk zqmevKpl@u&#MhX8<`i38+bu;9+Y5oISaA{U`>7{TZM`%y4va}F!hnY9blVZ>WPoN@ z?vm=93mb`aS&B;06;HVWxT(J~geWi>GQIX5ImS%_EJN^?XE_en;EjuAP_Mp7?dKf= ze*9}pZ@BoqSB{bq>TM7?GHP8e6BCiC>ZW`n!2C)6&X0A|2|dfI0)^W={S+h3Pn|qD z_r7t{T8?a|r*F=iQ=XY5yeaGZ(nt#!%l0MbJrdwdZ`8JM=Q1A%`Epo+lBV6B_F4Wf z>&#S6F|D+{{|r6ftzS-Kzw9OC5E&aEJSt$h-(0);o6eMwylX78vTWl_gDG2lLWben z?*ccnWD{Iw)#FnQ2c_K-UlwRG{l$KWZ&|_?XMH*2O&o`=jAoc@jrP#dXFe8XK#i?l zFT&yYqk7YI-jPn-!r#%pQ~hm}3U*t$Y+kvYr%4ZL1(cKq8a61KJ>*Qbd}^QKuQteb z#f{VdyQyi#Mq8#)wG6qt9OpX|&!qoWi+Pn!Ddl5Icv>r?l3se#YlBeC+nS`w#4(4- z!qT^;Jzw389y@<^xM3%5mFXwln{sN$wAbacDa_i}dLATNm{@qqZ!mqeW#tx1M7VuZ z1Lx`wpUzS?2_kCBF+cc=>CM!f_+B9uCU2^&I_NljP zPOzH3x$sG?V|Igy)X9opslM7A(kYW2g<*3MmE4co0v*I&D%cqTdf;=Jk|GADAs&yhn+8uEWpn61b9xI_Hb>F)~f=eu&l%lBSQ-k8m`y>ksS zzkGtrUVWD+Ts`{!cl(Z>a?06NpP0|@hnyUl_c@tX7(RP0#ZMZ4tM5eP>WS-;f77n3 zrr&4J`kl|Q>qYGz-#jf#7@zY1F-$2qUo#ABSRT+$xJwluyBdTp}rcy#BMHWglBx#bn! zO@fzKg-hRCW^Fp<#kDz4$dM|}H!=P*JoJcOQe&Ca!}#*~%3-*<`5t$e2w(!`bcAIwB75m(LS)I_#wUt-a-{|faull-C z?t_?xY2IUN!#*{(wao|0DqpWD+v2TST5q>{QvU(}K_$N?lU2OkVA{9EM?bJ=HnKi| zl6gOOgv_cjxpC*Swl>S6xwa=(({+{u@0d==E6H3FoQ*e6W!*PW`a1Yw`Z2S&O#1z6 zoY%j9-*Bmst2~Ao@&uVDRd#qZdp?}`<+=90%)4o7!%UdI*pb4BdFw?D2iiQRFJ(lR{u%j2*tuhHe9lQEkD9^5H+Zn+hb zM@r*Vw3jy!P1V?#aYL>8Nt*?yhxYr&tUhx6_3A1om{ZstdnIH0!#Y@29QpjQLv}LB zW!Lf3NfjSNx;31XxSKwuS9qC?nb$;o>%BSm<#^ciCZFuh#ZS0}LRJ<9yZa7}Zn_=h zSUD?1`KA>%<)<|!+dOhHt|RZri3ele&C}dBZc^W_*-T0B3Zo8wmuzo-HA-`z_xfO%kZaDze`9yPpRtuvP+)nvWo7TAAj^xp>}j)3#*_Ks z4xE3H49cpkME@Hy4(;q;9V6e6(`O=8R~i(gc}JGA?96)8uRH&GskPxyWb%n)@`vwm z=YF{Q+Gv>8C{sZ8l$VOCDtuPn$jZOfv@D#;YiGKC)zn&^f!7**RP)FdO}VQ^JrP@E z^xtLg9}C}5)1ZBNU$uPFMo)KEe!0q~^<<$h$x32=*U!2Ydd+$IJ>xsm;Qp~OYxbj# z?){3^izCk|9={7&+p3Fg2j3_~@_n4OXtTL~hcA0H?}!z+bduskm@z&q= ztyK+my#=3(`ZPNE{a@Jp9u6-Gl5j41+kDsQRB%n#`kunQHShOsdsWMIGGkKG!lvqJ zs3F(=S>@m?mB9?FdlPnrlyjdtFDPl88~*8W`Qfse;P9)Il*A)@{U4E;tflheo6}|6 z?mz1O-%dO`ec&^+4LplwPt0SzJ%}vXQj&g})DM z|FLoCAX1TL}DaEp}<2 zd$w)a*$mU*l}>7(e3BhB%@q^eoVxr}39@gMqKw-f5{1&O)*ilzz&-y&C_pq}tl8d`@<2G+*9q&PCyVxc980mvx&q zFWWaJh2pNE5-Eu@s|8BUHfN?~FwdpbJW&)JElO2h?JoaPVZ5@i+ssEbckpJwMov-9 z<6=+pTKe3+9`QP@`Q2(y{{GAmjpR28?}nHfKiQOgyk9aY9TA!Kw6pba>fiUD>9TrH z8?M{m8UpdXDr&mlDwdcSm`&l!&~a{yZvVO?(xQ4+=SKJA(%~I9x*u`md%H$;#tC+k zX-w-b3%U-p=++6j$~b5qyXl&>>CpZ0tu8vEZ2Hw4;RE&$+{ABRd?qH@6MFoiOp=hW z$@cy_Gr!Dz=1JQgh`#(xHaSeTeZlNIcb%#2>+a*bihC#K0vtK01s9H`s#0#3o%M2#@G1r~gj8&uy;k&Qaq3R*J>*S$R?IXKA{tABa zyDwPBmnXvl#NC3FvIe>bt{Y}JHUGH2;eV6KRWlqVMRM<*pYkX)ukDfT^O5OKa&YcZ z;@q_?)%{%myWUr`Ez^S&Z+g4r+?4_xcqp6WSV6m)qIZgBw+nMqnzhvLy82rZ8N+g+ zFCrZd6>cS`Op4BwIof@99~zL{^DN?Xj={-lia6!NQEIzv_T#}YeLvcAH6g1?zu!FL zj;hWD*&U4^27fpAe@z^pw)ct)>F~|W9l5~$f;Co2F5c)?;PSA2trg+HcSLUQ4GbHl zP^4cQ^C|a!=Qm|PN*%fC5V2b}$a=NDjBzYQc6)iIrr(p6p^8zar$spqFAv2vWvd6X zDSx?+T(3^Y!yv9c9h&Ka~8ccVA(ZSSNK;!;rCUJ*WOGY zVY+QO^X^h@qEWj4W~Q$h%xqSMpN_Hx|A!7be9lq*^R4hBdrkgL^vI6g1wAu?@SiVx z4-3q29sa^b4)pBbbBWREa$(AUB7Q%2`zVP}K%hoAJ`} ztO{4A%2cg!l%G@$4hzx%ig8x&6PMGQTqdX=7I}e#yWc(6+)+(09Hx{b!d%%dF!;8bTe46#{}dEJp}@L@&V5 zMKOS1m1!@;KS_QR$vJErvhNXuGkY*k92jINTjQ*@S~X& zWLp6Ep#D-I%)n1`R0LL7CIm9Q9n#?Q&R#wOnibl82kh{aq1|f${tAKbDJXRDp}%0e?|5dSg}9b)VdAePdt#2 z6?l!dE&Te1Q8VraTQWn3Un7GE6e_=+PC)bC4(8uT@qtBx#=YU$22TY}sMQ9nKs{!p z6}1J&@Gz2WK|A)A=;H$P7_q#_BrN^;>6-;0ky@zzaT3r)7r-wZ;N=^*C`B|5SKx^y z!`}_4GqRvASGmnoBc1TW4M<~H33q^hNN9W9!5bEIPtYTwwik#)C3S!U3h)BUmeA&T z0sOI?#<>T)!nWlnZ(xJRXSg5uVAgUE(A$+ZbpS+RWuo{2eAv?3{J<^@t#uIKuZpz5 zgMfyKRRW1gTD*zp9p;Db1p@3%5e|9LHZBPQ_&lUd2Z3K0_4HwSf79%P!5e@!tIm_? z+RbnUY~ih}0VM>&56!U+#4UL;6zs-0&_~?yhQ*J#=umd6GQu)1G>mB5>VDTupI4#`g6b< zl?a}nmuQ~{K159Ad9aCyk&Og4L`nP-35WvQi9Cm*fGJVZ5d|EGJXi6~KzSuDwp0WL&(>5IUdsFiaO93)Cs$AS=|MK$ECy7dP(|UW0$*fFn`W_%hf-)cWT#@FZeT`rYx1>5JnR$E=(H%>STz zGhtp8_d|dRJ1mq4^oXYY6Tw-cJ`A)cV$M+)V^ovC1|lXZX>l8kCV{O)jB_&F*n|eH zOwpm`A~5Byeo^H61zHIc^ngab-w>`32!>^Ack@&eR29h25=){{>osmg$_mf3qSNd zgP{^~gx3}L3#>~LM<+f!<48HDPvt-j7l8=+i$Hje6dNo0lP0x zJXlB2Ovzu+%eIoLEvYtVO$5Le3K1RzI}==Q%9ci zEhH5wkL;2=*E}hSBtRP5C=K=J0Ci%uP!;-5bc_9nKvWjZ1LMD85AL){f8<$+8gC`F zn=pWL5G(o4n}83^8s4+;q>*Au8bb7!LGgKjgO~+0vtJO35e5wP%MkB^A)LuQ4{j0> z=v^LArgI>xOOmfeNd93&WzmFQpAU2OAPcLhUq|r$fv}7q8>t=llP zfC<`I3KXdQBb+>50sFKF69J9Ivtjy2CG5}&<;6WF%#7Qn0u~|A$aM<;5twc!4lu_Rv;1UI-%&^J9pr zLLh=0MVBX#hK`YD%oy4(0e4|U<61fkRDE}GPfj41O?ntc`yPf zLcnPT47|k#!~~-SBizynx&e@2IWWU5q3B`Cl^7|wv{vv(SBZdr2PKpP4IGVz)?W_0 zz0(YFK^F2bBU(ohHZ&OV-W)?*q%l+yU9Lrze{92+e{KW#WXJm)J#H)~V+dI?;9|@# znj9wOuATegj`V~76KB8)x*7-6Q?b}M?|s-fc{@gJv;7ao!x2P_4T6wH9s%SSjiUkl zKoF+3I6?;6Z3|W{!0;%tDq$Ga1%Zhm*MGvuK%>B42;ju45EB1|uEq~-t(re%Ak<4b zS8QGp`{1XzVfNsgKMS#QQN@ACzO~G7sUO1sp(B3<%B& z?8l9uj_^UR4*)J`s)k_#pcH{-r)2`*?5=}15pim?ANT{s(wTj&7IyZQ9}z1A-S?w+ z4nAF{V^61M!2TM+CmjWXzitO{0v3o|H{X0r0T*UFhqs^xF4@}`Rzw8+X)-W1DBV#$j)r5&hdX!qV5vCpv$1%&H-{D~CRq69w(81?0VFByn`2znX8@izpe#XN% d-rgEbu!XJ&9JL$@Z<^mJP!l{&63!ux{vQ{+xq|=z delta 10716 zcmaJ{2{=_-8$K&zAu?nhGKEZKiV#t$2$eEr%#i8G6e=fCA_+%!rXrG|fzZhqQORwf zBuSxEhC(WZ>-O)nx3kaL^!z=~?dg8&{oZd}-`Z>OGoGzJo{h_D2NUx$0`*Vodi@kG z1vchM4R_W_4YKQ~2oqIgXM~A>DJrVBM?^5PLISj|qQc0-(prqT<*>{q=X})TIA#Lj zD;H!f0))uwN?bw*Tti&FLS2InsD^mj>{&`+qS~V}CCKD4BTT9a#u$B=LK;AXTuK`; z;clf&CPX-)vJSI3?=CrNR2H&I0!zugs(hT70ct?=-ji>tT4PjfYCddKsua7`58th5-x(5B7Xg!rX#Z1N`7v=j+RDNqdYBpe zkV@3dim>&V&?-y-rSy(Kn~X6BuOmV*;GW1&Xb$p*<;nfg?D*Wnc}6zeXJugD0&it= zKpsdEBD);tfVwpR4~+#H*8uO3tkpzgdkk8m1@tQnPkchXTOCW^X#TM?sLJ%73K}gkkxN<;N63(fw+f^8RW0|d2pMPY?{PNW1)>4a%2*kA;x5M zB^lCi6{6=(qka`8Z=ngv-;=wL&>pAIx3_F+FX|Rkx)lvrVV}MN-68=O(0aoqBUfKI zf@texm}9_%j2kF$LpI&^@oaN|1heMx;~-&H0%1Uy3})cjcAEooz6iKU^pWNs8qPrg z%)?9s0&@f$_FG#AOHp0^sAo6J3XgT4cWE_Wbu!Mdou~5UlHrx!l1c}3C03VTc++#S zy|RroUT#3HmM>7bR(Vz`^V{^%qhp`fv$1(!DA>{D6@2o)T$1$N@%nc$#J)Es?#AA& zJn=CxrcyU#rAaRoxpl40YlbvAQ(mu5aY>D5;c)CeHp%xU(jeS?ow0BbZ`&aw{tTW+ z6VmrI9~ZbSd1!7R`~IEr@-pk3G@?PQH}4hGqSN=6eJ9i#b4d4&NKbGR1Oqcp9f)`5 zT^mdA>W)f0l|IbIdW0ZZ*01DsQ|CUfjUln!>*0oP`-y>HNRh{W2agf>OG7wXUr8C2 ztC{-7N9YTfDy3MTU+TH}MnDj zSTv0JX1~x-zqnn6_-wmV!m;-aVN-g0*>XxBPLJexWXf*>`^H;;J+3w6juX2k7V}+G zU`?iBQsb^u$0xZ-=eR-D^T(^$gFXu;ux>LA&pslMW?`;8LI~tM#%lcADE*{wP`PEJ z$_=j-jq1{qQD-O4B{|OZ9iH_)Zn&b6vpAKWDWX&hVJ~pLqH$(ah54)d%PD(TVq@w?iYIwflpeJj~8C z4eaZ=?Qf#w-xme!_gHf!?*jv4vbR=`F}VoFg>v+U*~clz)v_P0%x{d^(eESs<5kLp zTei~07TM01+*1#g8xtOfWR%tDs@)w9y3bT}-BCrW!!+J}=}D!{p0lGm&t9HeL#a3U z5LA-S(z;8*SJ^gM-JRrXU3jAWp!DSj(_YsUzIu)-UfIT)_`y#2iR@se^VVm_#jUjL zxC3jFwQHUweqiC_{Q!b5(CH3cSD1 zHbs2E!qKzjrS!oVKg}oV7P;d>`7bH!<@-gB-AXE|GXFeXE7F-!#Yf`tNyyi!&Jr6+ ze-;p0J^txj&+ee47k<1!3FEJKbzLBJt-QuG=6A&}c8}}KseAspwXR9!39Nj6r({;W zNr(#YwZEtGrtQeba_+icdS5Ev1aOD-&B<#;?+}wuiw)m2bS&L%C3#!xvS+%xdAA2I z>o?k&=il;i&RkZ&Pk?PzlN-rsv(;2{dUN)f!_6Hpf3n}L6>;jlc=oBe=dcj8Om8^R z_0io;nJu;!2O2(h7xpoa?tFgliTv|DK5w4Ntdw)Jli6!2`Qz2+4p~m&mt)QG-`rm3 zmjt|&v@+;Fu+oHYV2|5vLU3EjWKEEsT=-M7qE9Z-7h=j>zNpwr?Ec^zc<&mCyn20c ztvvM2Hmzl(jW4amOV#zQy-mq+1)_w*n0`*t>h`E#L4C(eBLDNXa96)R!XfhAXph{D z#4Z0t>jWxQ_${5`_Oi362)2#*H*#IDPjL6lk07Dhr7yqke=lf5N*(RcemTcg0_mjw z@woI_zuWjp=IRxtY3g%5nPW;z`<{|=Q@gWeC(RX;t1D$s=js%gZl5@(c$>I2+3|zn zo)N+O7F&O1Z69G$xNx+tQ;|3vvQz3nrBSM)$;SHdkA3g5Kfii;XSsR^k?#;(TPSBK}iCb%_~ zE<8P3@yJ;(oYHdG;fHi*?fJ;c!*l)P;UwY{MX&Q8j#O8*S-MhsOlyO0>~k|0-S9k~ z=;PEp9M)Djs5vl`RaE`SMFGm3aJqRn&SSJCRd7>i#LcaOpMM7(^>uhO^3Cs>ozxAkAafsX0m=A?{DMeW+A>G&G;CSU7#=cpGREhk4k zSKfMQd@|$hXo*@I|Ij$~dz>FWEZC{v<2FOi+=e&dFK8RGafU4P>>?2TKj%x%-Zuds zw0VyG+Q&0ySlM{$_F(rTRjb^CT`IR)9~6`I`8ON4KW~+nwpQAvd+5Z!vrnyp{QeOP z_mzq^y{G{-XXNRLhh+$ID!umC-DXp1S{Bh-d%eq1 zL~ixa)vrc7#8pfsitjveav+Xo$<=h%lNAhDb_-p3+a+=1=~~Bc>>So+I&YQ;T_|xR zs%(weYxZGXdjMs(uh->?;pDH8wd&I(N9*VQgY6>jqq=Kn=GxlXot?LI9tpbkpH0y( zkJxJ-)ywT1wpeMr73p-`a^SpxK6R4IbUsuIuv3FuwFSzkBqI0hsw-UW>b*FlKbhQpeo|0ekAV^?+TJBOO|L=k}JWVydt%@$L zY5z#r%lsIzS9oh^YG&`SLSXOUwp68SN=%yr%D!lEofKLdZ>~~V)U%akI=xt@RQ#0t zF;R6AYsQ{o`+`p0&fx*#5B|@0t``sWNSu`@Kc;bTrB+Xx)mJ}$$+7k$Rl6TsndJTB zcOq_!9M9Cw*_ev&mJNh=_J;B?c`vLQ^M2Mzbv~|sAAGgKuc4oh+wjtCa6DMU={7Lf zDSc~u{@lQMd8VfuzNR^}7ml+zw6d>n$f>)_k}W~%`>h=l_%k5OO@Tw1>-6V!*KhqO zmuHoFWYIP8hb7&AxL7b{qjq-OxaqE2nUzu((~`bl&2$hlYb4y@`#w1^7WKoTHz|(9 z`LH?bAJ^KC*5!`v)@N29f0$`onp7|wH}DoZb9YTspVB?f)rDSCFMd5J9%p;7E4fI* zMkmQ&o!2pv!E`-mski9S}^lKoTX(Yd} zSO1}xpj+7a?B|;`_$7Y15nc3a8X9V*E4orL3tPtiVb+qHTBDc(jUF?x*&lsa##*~> ztyz`Rt4pfxA=^5{bVp9`hEM4|xpH?UuhvhQ4-?m`;^6*kn@Se&2sL&2*N9ncJoACV zsvR-A`BgVvnG=Znc(-$WD|2}qnerxHTeZ#L@P{s_d2HI~osN7<%6}q#7Hhj(71W*u zU1%GA(&k;dR<7@}if4|1VmEmUf82+gm*1`Ml}T!|xaXsmSo9{ZvxqDbx+`Bh#QtT+ zq2Swk(KZ5g70!cVYT~+0HxC~z9us=J<$;arL+`U^t@;!~zcdxv9+Y_WW9!Vau#m1> zmpk;Wr~mkWHSw>?vN|&5+@q+xdLVA!jMJy}uiE(E=^f$R8&)#T**UlYH}c5&#XGPs z@Snw3(J$~z*ES$R#v8$Z*EV6mt=F5`k?(h|+uJbV{@b>w_MJQQ%Oq>{Ui9wZT(g;m zB$w9AAlgN>`iso4*I~-!y>(9zoP50rO*cQV9=*;6x6my&w`ib7rti})|AF;F6>bmW z(98Un$7VDJ@`fj05LTt9=q-ye$g@u|0{ZRk?lby}1Yi3qG)SH2^t{DCFXUQ5JwHTU zF@kR!{lKe*G(G)+=KBrP0f3@gNoerNaQsU+7j2t;L`_hpf=B z@`g1KA)}|ihp|f%*B*g@$Q3 z^$kWkp*AkSNevBp&Bef?v>aF?nSr9X0ajSb6K+tC6bCxX%OLLM1%ph;9Wwq&-yLE2 zdU%D4T%IfhmGJ_8Xl5ngro~9%5d<2@4HnuW0Rm*@@DM+8VWLL@1G6@dC4ph%gO0w2+P?icC2s>*#-%8X-jqHF68fm^gP+o-nZa+^z#jbS#;waYI z5n!X5lIaNEqP357ofk7!vfmY8uger;H}D!QgSh8>7*yt9PvDI*zw@HE4@Jcr#G(17 z_|Q9@!sZM1qi8QbfIYoY3jF{D6}trdCG6S&y3hE{GDHN}yrHNCf;p5$Er_An5`w^6 zRO}NnKZ2-^SB3y*L<~QE%0XihUn}Fkpw(=Vci9hKBVhV!riZE_#>$iUj*H zu)`6s1 zpo#~6PF@(TQwlKsi)vrWyeiENNG%oY!jt8vf*8Cij1h(0$v_7WtRpW3x~2hrJmzlN z!v2vx56tkGr1Nm2Gj=C5b$(%mgVVtYJVp=##(17c2$|sHE8i-65Nvgrj@?Dz6>;%GARRTd7XRw;8 zqKTP8+zZhUp%^ZqPBsET1BY&{qS}XlFmat3D$NCam>zO)_UFPb2H!y-kW?NJz?Ko( zb-7u;`r#C0Gvo}ZOjwR|%yZar514)(&he|z+5(`5PsP~+nDOHisJsXW!uOAri%kAY z1(-cW0Fe3>Ad3&?rnhh$8(i5o_{S|eIBSv5Xr%m5!xaWEk@SAtEO$8(Zq^lWuWI4+ zCOhbQ8w$Y+%pQ{4fI`@vuYDKPUI0{jmCmo-WM3Z%gIA|uQ(*e4pVuM~cnDvO9fzrQC80l8;U7KIPBld5 zo28e}Ls-iawx)oyRDtU71qKnr4j%9bVs!McCS`CYdq=1ymGG6Np2t8JDk}o=ka`JV zUGDBj4De7}yp@&p-xCesi>S%+g|p)_T^p(?2E2F!W5sZmEhng^<){|Kv1pM>5li6Z z7W%Rf^r!^Bpy4v|epWeQ|n1#2o~s$ z6x{|nKL;}pt%Hm!!8-hr zg-m|>uNV*r8*q%fAfrl#PX+|7ZMIQ}9nL^IJh=^V=rd4L<-%_t#VXh|hYn&I3a?ri zb18M%RTo{JS+uNj8(!8jK$nl+o#ksPPg* zLjprXf)~zdq*19KPD=)Np#1Pd0T+G_J-q`jo0wzE>`(*zYYU7KBjuTtcq=OfNBjaV z58elU$h8`%VU2<02Rn=4f9TG8j2=hlEvc5op)b`y2Jgt)8rTtbD{NT;imzFCn|Mvd zIM`A#{E&nl;KsKd60cD$jJZw62+?A}ros&>!pR=WYXU-lAy`%iFW*3yp^bHb2k+-0 z>N2MzRa+S9^8vgZ3)7Ayj4=hYFH$rGTF{|-poTY$sQ6}d9k~l{!QJp@sVT0`SyYt; zmyf=B*pF@x%#Y=eOal%clp{qtsKpKl1$>iF$_=e4JOjdBm(hg<#f8qOw9F*Gxv=B7rD6&I3LeZ|0 zYyo_DZ;_53+p*8-70lMn34fX3YNH-TSAhdqS2sz?+$civa{!tz9Sb>at53+9pdI+D>$oVg`xCS%O7?q8sN;UhdqS2sz?+$civa{CS=dbE)n#Y-WSq?Q$#|lp6f;O9&JrvF6x}#)0xL*pvLTxV zOl)%j+g4_XjvNI>73k%7ULiGe|NVxj!xd@eq?sur$r lMzGd<+z!k@lO`+j$bk6{Jbozr4Lt5Bd`VtUFh7-74FCYGG#>x} diff --git a/examples/zips/databasemigration.zip b/examples/zips/databasemigration.zip index fce77e85d799c0b4715f9003cdf86d9474105884..2c14b0cf2105bbcac274068b2278ac080a1a9c1c 100644 GIT binary patch delta 247 zcmcaEc3q4&z?+$civa{!tz9Sb8mdSd+9pc_acKoN10%~zW(Ee9N}w!Aod}TT0IN%~ zX9uYR;)yHvGXr%_&SJEJ32k1@7{Uk^WMZ}^%Dl;m%zSKa!MaU2?U{i#O!nsz ln|y(b4J=H4FDAOGz0(u delta 247 zcmcaEc3q4&z?+$civa{CS=dbEHB@2wWSqfbs|8T1FSB| zo*kqPh$pVt&kWQ#Ig8N>CbW4qV+bQykcruvDDx&KGP}cduV-#z1?x89v}Xp|Fxj6= lZ1M#zHn7-KPG1Z$7A_B{m<(7=9+xMEnwwmqU@=2(H2~NDLW}?a diff --git a/examples/zips/datacatalog.zip b/examples/zips/datacatalog.zip index 7f30f38420b2d8c78c1e54942b9faf77de85e986..759b82d44bc10512f744c6d7bf884058150a5938 100644 GIT binary patch delta 229 zcmZn`YZl`T@MdP=VgLbFYuAaq+U$~sw#m|lwiE58m_Z^jmS7Q}=)^huKq8Z48I52< zo2M~OX95cvu$aIFvsqR%f(0en5P~6W!4Sb!?B+0)lV7m!0V`b2VaW`%Ve&do88DxT e(;bDM&FO%`Kg;Qa!Z+kX^|%MJLYL2NIba%V-1> z+B}VMIulsXfW-tZn9Z`95iBUlh7b&43x)`;VmF7Wocw})4_M)H4ohaB4U^Y#%7FPy eobD+6Y)%Ih{#i~Z6uu!BDt{`MD_H(6ml^=>%tp}w diff --git a/examples/zips/dataflow.zip b/examples/zips/dataflow.zip index 2ff7059efee743a8cd5ec242e1ddc12a9ed35a72..98f96b275d4067e9c94de434afacc31e07d73e78 100644 GIT binary patch delta 156 zcmaDL{y>~Jz?+$civa{!tz9SbYOqTh+9pdI+D^2QVg`vsnt?@tq7$d>0f|fwWz>fW zZSH2YVFwGI;xL2@GI546f(4_w%$R{1C;#G-0rNL=xuEbRxouJS72Nh<{w{7c0LI}Y Ah5!Hn delta 156 zcmaDL{y>~Jz?+$civa{CS=dbE)nI4&WSq?Q$#|lT6f;O9(hMvD6rDJ24@hKkD5E}1 zXmdBC4Lexy6o(;Pkcl&l5iA(ZWyTEDIQbWs44A)}%LRom$!&|mui&-^^LKHp0RT=u BFeU&1 diff --git a/examples/zips/dataintegration.zip b/examples/zips/dataintegration.zip index d58b4f3e3485e9076b7e12ebfa038228ecdc9385..14309d1e93c47c132a0bc666f290966dc9f56037 100644 GIT binary patch delta 178 zcmcb_e~F(rz?+$civa{!tz9Sb>Z?c^+9pc_acKoN10%~zW(Ee9N}w!Aod}TT0IN%| zWe2GP;)zT4Favc?PG&TN32k1$_=5>7IGe=+E_jP2gb^%g$Y#q7)Hu12O$N-Lz~+s@ S|I6lr!cS&*1M}Cgs{sHALnn~{ delta 178 zcmcb_e~F(rz?+$civa{CS=dbE)mLHpWSqfbs|8T1FSB= zmK~%Hh$k-D!wl3pIhoN6CbW40;}0gV;A|EPxZo|85Js?|A)75TP~+r6HW@H~0vph1 TB>rDE7ZiRnyBnClhFuK+wtq7* diff --git a/examples/zips/datalabeling.zip b/examples/zips/datalabeling.zip index 4d2db088c60b769f92a4145b994bb0734088186b..f133670a35cd138cb32e7ef88effc19cdbbd7fce 100644 GIT binary patch delta 193 zcmew-@K1m@z?+$civa{!tz9Sb>aa^1+9pdI+D>$kVg`xCT7gA?q7&!s2Z>BhU^Ipa zZJx#WjS(z3nb{OBc%C@~BB;h{0~gF>6@&=ZvRN?$O`H6NT?VZ4CYuKe-@r}TH`zQ;_|EK(DEwvY P&M16t4lgi2f$mYU*G0xPnX6|qiPM=ca6&`PakmfG^&7Rpzl<;!ftM7?lP z#|=LFxU@@_Eo=$ky382EKC)%YE*8V|!o)3Tj2DVwTXwOr3t7*3Ip_HBZoO!7-skuH zpU?Mwx+Z_RCeQV@Fd5l0?w4t8oXa(26`E}k)@%c_yI{_%WVq8{^)sit`J-zd{wNKn za^#2P+!-tx^l&is$#=QnCHP96mDA=^$r!0@zCd_K?G!y8sDDx9r7LVZ zb?sE?2kBPj$l+?W4jyVW0t1_x8+-=K1+P%iby`VlK)Xt6a_L+Y_=PSe2&RmMP9aUM zt@+vik>t(Yl5i2rFnk83MU|pRd(j3F@fX)p(XJN z%Ce71F-ry;C7*AUMjkUR5OA-_N`a?MUQzLuNlU=B{dNjGUKtd@#me_cWlpn$0+-BT z5iC4t;K8||9_|k9q^6zE4Yv28>G2{XlLdFmWEN;uXw#@c=s36Jf4%%8!><5;Rro)+ zqSirh_yqwYmxgRlrDa%5AZcMpN$Z({q{$3 zufBev8#2&5~&rMn+#mKA(@`9Vr{bns1L0O<~rXV~xl^8ppe^l3-yYZbpnd z5kYyZB;3eeJC5yV`&d{VHzB5C0?&7T;s~;5P2#;B-TD^pQ|DyB>$)g)m^9@(XqtRm zb2I-V$=iD+#|3(h6EY|+C>Ncy7iXd~#K)CzyDEEU#`D$E)}N~G-EL~_v7H>K>PWSG zPTsmVNDJ=OTf}Jjwlm}~)^L_ zZ0AA>-Pydi=2?)-WS7!}?i`Li4Ijibv_pK-t1VxU{2rb(!Dmh_6LQnpMvH;f7EN;S z#6>EoV_>&Sf)mz#$*)}7-e=vm86*Ct%n%!-B$80@%et=dW3*>UADdh9-a0J;e^tB-SgT8iT@9)R`{;nVQ z+ZVyT`aIH&^bG@UCE3GI|hcu8rayDH+2)-y9=8>8!WLjw5{}hIe5#u7}N- z1u?F880E1VcOiTIIJRHt)5F@h88KxOc)kl0HOQVZiT8GN`!~IBcP7a`Np--F)!4jM* zCK!e%s=yU*UaaED0#^851ELV2Q zKTLY_X}2{H3#z=W;DWoo^O(Q}>G+w$1X10+F%uF_NI^H5FUt|8cyn0R42TIIb6jD9 zP!lwyc^R4HnBlQ7xvj&J8R)Ia_j_c(mOkuo2lMs&AbhV*TNL?~ojxdh@h)c+^)+3d zDE#MLPAKZVyCL#0`?hsMw%*Fd9N!9->(niADDgH Q`}|SlHTr|W{JMTM0E)=D=>Px# delta 678 zcmZ27pJ~Z_Cf)#VW)?065SV0PGm%%Do#m5pGTSHP$saSNm_b4@mS7>E@WeTLK_Zi5 z81>OrO=f?&Xzpv$iW}TKak`qha z{9)3YPrI#wSWx9{1sB}yoyP<=NXO3{CWz|pjhT>eLJGRcd|8e##hb&jWv>?DRq5i+4GrsITer zMBzX0azat>-3^h4*|)75A`i1qs>cgOe_Kx&ivE8+u_*l7UJn%Y&wE`__rnsz diff --git a/examples/zips/devops.zip b/examples/zips/devops.zip index 297bb0b23629cafd9550c3cbd7a1c207c7570fbc..6028e6e09340b431eb18ac2548a6ab23b804f125 100644 GIT binary patch delta 3093 zcmZWr2UJsM6n+ULDw2RTVjw8s3XX`hK^cO?89`PhASPgCbH>q_!_-7!4~u)IP!p z*kK<-0==eB#!F8fw}NzbI?3@43As`u_BHMR+ugAr2fFg&jDRh?6jG5)6YmsHI>|IX z`~V~NDgHp3sV<)Q(I&Wt>Dl0nP&14iOpxlf+(_bYH<=!-4Rde78{*&{sdwrm_F+xp z3kG}|K?&wVJN+Qr*6=8>nFlp<2U^XXC&ZP*gk%Rv<(S0-KE1Nk2cJb^ny?Yb-T8R4 zGZjHT(hwv79Rc7SJp@>+(hX@W!}BbN|Xo`}mZlc@|S08SOaI z`@l4Ht7Xr$$|Bn6UGDX6D(m5bW-nj!WiuGtdZn%tmfrAQ?zoueJL3W`PjXNr8S3-& z!|n%iv7r2Y4xi1xsaT_abH!FTrK2gZc&Bx*OXd>ba{7@X`dk!kA!mBHle(S$(5g!o z9{X~~DeC@^a+?#>7tD-VfyonR$r6Lld)AmItSv6tOD}FQOA#Cm?Ny1Zw#oQC6?3Y2%NT7Mn0 z&kdx}N>3nRGOk=Xvw7dGv#z5WB!RMrZFPYcv!y*z*Gn=ht9Vr@Ip?gE2VzH@%_@=J zKewd*<@nDB8YxG_FFjtWIJ6f`liOLvJdRlMZntA>U0p%{kWuYfd;GVoL)uHZVxRhJir3BU7v7iG{#(gwytQ6+xM)vZz@-nz z?0$dtK)k4C%*P?E;oSBGU6prMwO@Ir=5K1<|3+{+kZO{!T`;e}yQkun!_vn5?e`;_ z+^(HwfA`7#PhMnFUH$>hrJW}_y2=H@5_b2P2kJiiGqH0Mn;rX@?>q0z>hKzcv}nPW zuKU;aYm&GN=70L!(6{$)#ZC77-maPIfU{PO&(hp9OPr2yThv!_-1}2p8n-?gdwqRL zaN71);iK1D{r6>qD*baF>#MPS7d~}8=|ZnLmTpdmqSqX7mjscsUncn;e?v-rJV1TE zrG6s^FV&uiC=zeJA_m`;blI}OyMpa`>gCb(a^0>J(h+18vFCPR!AksE)$I*X__MTy zD^qZZ{>YVjUGkM;9!>hR%IGh6Z5gpndZ4y0HVAi8;`!(W1O!>O_+1b`7q^pe`=o(w zm*4~8ixPq%n<6LT1V2$80>z)m6CnMRM1Ls$C{Y5%rAgjUyg4ZVihr{j&VO*V7>Z9) z!1_BBA}G#CUIf|J*&I-sEW~|8Px_PNA&fdj4#h{MDj~ZzH4(ylq$NS|t7!zD=+R1L z1{CjC=0f)F^h`)^Rz^4!Kb`^S_sfid@V7H#A-pteHDv#tl>*rXYY3aD&pLY*6tBo8 z`a$$(N)GY7gx#pO3BGVGai&E4;@VVPkBE!cML_zU>xh03@iY}NGX$TKTMF^fGi%F* z&&(|^55nBb3)AN?xR7M)$)~eNuc|k%Ph_en2-2rpK@WtDeRJtdq$-au0i~*mAW33F zr(vIMK#*i>XZUsIN^lUw5_v6f1e6UPLq)-QLKaR4{k>s{pDw|_=v@vaDc2D~q0-lE z;7}DZEVXyE9i)X7481QPtyd&V_xc!57EQFVrhr5J5UJM%{!!+J2+u+el^#tXrW!`u W3OSTy&|T<&RcoQPr}xI8-TEJC^Si46 delta 3068 zcmZWr2~bl<7)~CCfDjN;j0P)*P_TwGULYVr1OY)L;fztva1#=c`_e`o5h__!Y(-Q+ zbSi=aw6xZWTBSzuEKHGlqE!?XX}zG;CU1QYHpxsf^Z(zm|NHmfxB0mW>#V{I)&yv1 z>QR&**^*_|1~$_)$6VsH$6P=)eYS=&70$*}igdN?CuIf%Q(+3S=wLrp8_zdWm#M13 zG;AdyZ|7nK8aVN~79=V>+v(anHKAJ1PfcwyeI2RJo$d_P$7svdh(?A%Br(Bo6go!G zoz;lP>0Tu94SgFGU%K2B7CGgy!86mPoKxtrD&)$3mjwk zlB#jWXVe*re(~_`e)_Qj<(4+8+Q}BS@z~&+*bJPWt)*7_li7UIJAkRHg_j;~E>I&5 zmQ8bh$#BVEtKhFC0*Cz1+_CcH^( zugP4!*G@dA>~!~PO;Epzp}HOT+=K5plkKK?`$6|eKeCIYyKvQHj&R@L59jgIL>VZ@ zplr|3b|;KNc>_)eoPa^Ve4@^FkAMISFKWl?HL6c33xb_jo)uA$0pyjff#+iCz*0jt zlZF)`mT=$Ncsx}@U>7DKi49>i=-3evFqMcG94I^-SfeO-Enr3RN|mFo{O06Mr%*MA zH7FF#e8o_Aa&M;&IvSN;U7ywEz@j&^Ci0$ofB)#<&P6fL7;*Xy@|odvmie-g>dFr< z-6DhL4_m`dM2fI2M2^_4)}z|?XS8JSF2kkkEQLBUoSi9+tu$Wt?Z-4rDnB2J_wgOMvOqfjTFpw^#lMAg*mMmn<_oPQZ#QGd z!>wI1r1Ix4GTMxyI`7|j5|tOG+c(bW4ynAbR*TOWvn=+hDK*}{W!>mMe5^CjyLQZ} z&vx$CqbZku986#ymTfEI8%vKKY2`%!ZdkY_zUjFB+g~r{o{}GHu<_x%c(PV>K8%qU zz}3n*6!uuy(P1q^+w5=+Xf$bo_l>j>KY^q zeJ2ZiGANy;dk6ck;K8@QaA4;O+SX}QY*iF4s^7^Lxt!9HeJ*VUkBm7ru*!tIS z?yo%P)z!+qG^`sIKFsbPh&#Yq8kMnP_-tR}bf(t7Exl5fb+oY5i(hY8&h$L8RVSin zJ8OJyV3**~*Qb3&-3@z!bB`K#R9>~XP;2Fz+G!EcH1Ey+7xvN8bGy=A{xeIcuk1NF z=MK&J2m9+4bNId|5o4Q%cy9gYySqn&9Zxv-I!@3k2KUUBHFLd> zqP=hlmzJg4FQ(m|5j@BOg!>s5c744A*&cii;mKwmGraPhj!f7Q1(FFv!c zA>WD(CU*T|c6P4&2W{oWMpq1|j`CsyUi=Vp==bvX!gt~Ze>Wf!m`ojf{1`S15=gSi zdLcX^#W4|T#P>1z1QCdW=znS6J*ZGDK12bZC;9m3u|%%D zDDfk#s3ggOOm-xNz@$zJTY1rd>P$1dJV6QvkEw+)KC2Sjr1~R#St=Kabp>*^AV0PV>yCf%m_ws*G#mAw#;Y*XNiIkeVvGh;PfnCBsMQ( zg4!%UM1zS_5Kfgi4Z+PMIY`_tNk{mc>X!nZ`e_`F2i{V68&!NqV- z3B0#hg8LD8Y>5Eze^3JZLEwd@aBc{_PFXdgSMFJV8M z=bM-qiw~T#tigdz#LI7g6EKrk8lhG###|d1!|7I0w|O~3IqTDM^*ebmcNKs z`WeTifbs|8T1FSB@ zkR7BBh$r^!WCrS-?7^r-l-9}97)@b%H`_?dFoJb|WHN#aYBBRd1g%(X;DWU*BCKGQ zQ#jq>f{!@=LsUNDhP!983{M3USmks+6S&Gtd@T^cNI@OAV2_|5MEhMKZLlEF+mrc) zrNFv%gbj)FPoprxm2m$&7O{j|qb#}sV$C%%3z*{2-2;CuKsM z-QT3_VJ0HNGFk>9xKPFlV)s2+XShlYxo;4A6cr7bfl)YFKuHGdm=Z;MC|`^do+c(= zRkT1+rLW|S!k?n#fWrT#aa^1+9pdI+D>$kVg`xCT7gA?q7&!s1BpzIXS9Y1 zZC=PYj|D8~#AXT?tYeF01Pk6`w_*lroZQGE1Lm7?c%bkXaCoBdxjCJ|{6J1M0Po}@ AlK=n! delta 156 zcmew^^j(NIz?+$civa{CS=dbE)nRA(WSq?Q$#|lJ6f;O9)(R{F6rDJ4A4p_!Jfk&C zX!AnGc`RT-CpJ^KU>#c|BUtbjyA?A~;fx%$D$7t+pNOc08zM{O&czF zlkG7?a6boJ_vW7*JP<(+E*+T4$<|!wAa-->!NfK@a{EIRPUg{t3m)g03lU7`GiC<5 zdU7Ja3|QwLK06e?48Ic!zk%Noh5wk}7KQI5V2Q$?D}bVYlAslebc~=43V)ZNHJJZH GPz?aZCRuI( delta 398 zcmbQIGEap!z?+$civa{CS=dbERaIg6WSqfbs|8T1FSC0 zfE}a`h&T4uFfs$RPUc}Ufr)K)XIcvp{LX9)6P#?wvJ0&69g99pY_ke$14Q9+Hf^}z zO}57n!TlU?-J5@M@IVAPxO8ADCtGu!gV@cj2NT=u$n6hNIGINmE_j@0E<`Y$&zKqL z>dA@xGGLv1`0P;lGW<>`{04qU6#ip=TNJ*NfF%llt^kVqNrF}=(lLTIDEwW5)?oe* GK{WuzoOXTy diff --git a/examples/zips/events.zip b/examples/zips/events.zip index 3be1cda7e85d634fea007187746dcc58bd2f3c39..dd53cf9d10a1fb93016aff6e619424429e4cffb9 100644 GIT binary patch delta 156 zcmeC@>*wPQ@MdP=VgLbFYuAaqYV4ARw#m|lwiB(Sm_Z`pCSVbu=)_68Kq8a<8TDa8 zn_C(E8Nq_rnRMZT+{`UZV8KbOCd@#MlXcl-!2B1iPAGgIHd_?_YBp;y|0SCm043of AX8-^I delta 156 zcmeC@>*wPQ@MdP=VgP|j7B&-k)!11+87H%SGM;E9#S9V&Hvx+PMJG<$1rnL;&!`U* z+T64z`7hbj0Ie@B A2LJ#7 diff --git a/examples/zips/fast_connect.zip b/examples/zips/fast_connect.zip index c36ce3e696d3ce5f9ecc38e01d53c5c454a47af0..bdb36b588de81f8e0685f19dc114bd3ecc130e6e 100644 GIT binary patch delta 560 zcmZ4Cu)={iz?+$civa{!tz9Sb>aa^1+9pdI+D>$kVg`xCnuA4vq8n$kGlGOBFJ<(B ziEaMDxCJ7(o*5y?#KHy<=-v4e?iJ}i>V3>MUsaE1#OOGrSh>65f#1_sV#K^YmaqF0ixDEvUFC=~u# zG`^>_2a5b=>1Y(bflL4jf02wA3ZGBb8HHag>xRO=EgOTvkCa0-@3dSnioAoo4+?*s Ld?1+5q@V@>2uXfS delta 560 zcmZ4Cu)={iz?+$civa{CS=dbE)nRA(WSq?Q$#|lJ6f;O9)*LJX6x}$Roe?B7c`2h0 zOl`g^U@?DoCz#mg8SM5D&9^vg z;DWN80!(0)2Hd7_!5r>jh{{7e7H~mE-aQb(1AKlk!O5ch|G>J%1Q7Pb3p|4u=^^Y2 zS2#uZIapzxh#gF9^I?%>X0V{9gfm>QSV96~O`oI{Gca%_3(ClV6}^&lMd1fZMWOJ| zqVYYYJy7H~OGl&d4P*jP_={w`Q22bZ&M5q1SvM5^ZP^$Uexw|#d8g%qQRE%ueNg!8 LqeN>t^z?+$civa{!tz9SbYO+fj+9pdI+D^2UVg`vsnS(`uq7!HA28m1#V>EyX zZSG~9#0nNvVmE>dMzaSnf(6%cn8F2LalB#z3ts0oX9k)!S&&Bt%s1e1Md459u|wg1 Q=W#&cNAfy@`SW?z0BmqeN>t^z?+$civa{CS=dbE)nsS+WSq?Q$#|lz6f;O9${Z{L6rDI@H%Mf17^4A9 zXmc;)Bv!DX61x#xFq%Dp5iGcl!xS#~isKa%SnxWxIWy3-$$~sGV7>v5D++%)j~xpC RJC6ejKa$rO%%9Jz1_1E$IzRvb diff --git a/examples/zips/fusionapps.zip b/examples/zips/fusionapps.zip index bf8e55d5b31338f5ea9b48d2ff61a1295339d358..97151e0c76226e9adc8dfc20a20dd2bc0d9729c2 100644 GIT binary patch delta 1015 zcmX>UcPNfGz?+$civa{!tz9SbYOzZi+9pdI+D^2SVg`vshrmQ8*GWKxF1LV%fC@Lq zF?uqBlucg6;Vp0^T``Dg}FExn4!T33#`dAL`&i7MZ}}j&MuVl$58x4stTrfbE@4^6(PF2)H@B$GpxlAxk8VBgUcPNfGz?+$civa{CS=dbE)naG)WSq?Q$#|lj6f;O9Is_&%xlRHibh!mA1XQ>= zj?t45q-^pkCU10glO>r8;R+`*^D==IE@ZWU2~K{%x(_18=8B=2i#-*lZgUy?BZw{0 zoK6@D4|2xA6{>MrLlmZP8^ZwQv*HDR@B? z{#LXAd1&%QbumtOBAFbjlmr!(0sH=@(j+XZdX*zlRB@=(qwrU%xM9&Hs2Yr-s!g>R zi>f+x>B(klrYI_V)pAhy(&~;_bq1iQ`k)Teh3vyR4KEZ`uQcMZnDs_SdUBhl1B%KQ zn$1{L_G%@fs1negh(*<5?N}65PC6Y}RK3xOMp2cii_Jzpy*LzAeR|zszKp&a0EUe^ AUjP6A diff --git a/examples/zips/goldengate.zip b/examples/zips/goldengate.zip index 55351199a263d90bfbb4f2246b86f1fe5c9769da..50e8753e8da6fff5274d0cd9e196f5fdf0c50b87 100644 GIT binary patch delta 266 zcmaDN`9zX8z?+$civa{!tz9SbYOzZi+9pdI+D@L&D8&pCinag?0fi^d+5-}q9LZ>p zu4?igMmLzU&74dpnZOFKvKYe!`C0uL!GeiwrWm?+vDv^C{$*og1}kLZvS0? r2F#D)as%_xO`FMjk!Zm_$#>`QPlJBIHSlH@_2#y`*_p*2%V9 sGGKlTmm8S>mK(x9!sUx1Z_FKn!e7blh@zf{#~DSwkjD$m-^Zf{0BvYdBLDyZ diff --git a/examples/zips/health_checks.zip b/examples/zips/health_checks.zip index 72e56e99ff8daa93f5b1a214d6fb86f291c3168a..51584638af566a20e232d29c728df0bcc690dbd2 100644 GIT binary patch delta 704 zcmezF^4*0uz?+$civa{!tz9Sb>at53+9pdI+D>$oVg`y#zQC_B`IRgWuYPC6f3r$@ZhFLr0P}R7|W4d#lJf=I<6a3A4b(`B+7eh4b za(G}UoXHUbSNMm6iy3U9E{DeCcXHB`3piLYG?elnG~D3%3NiTtzZHf;JpqLK>jc(7 zogi!mw=PRKj1lSqqsjJ)+>=BxZPOHm`(rW>qx9w_qFW#aMN8OV*tlE52W~i@WGlq* zX;Rjpke#e3Cj++Zvy=yvFE)9-92;0HRyrI*?3%PEiatk~01P#oWztd9H~_;eToz^@ z!u&0=S!n9QFwEK^hpNU!9@Cxcfbs|8T1FSB@ zkR7BBh$r^!Vg~A*?8&GF6PjGbcpWSj!lVNe+uY6+$Osm^&1}dF)Hk_+MFz~*W3fl! R_p?}_@L#f6f%$5zY5)^%F*X1I diff --git a/examples/zips/identity.zip b/examples/zips/identity.zip index 60f29281bf5579855b466a99f334aa7b42493efb..c05238148c073893337b40e1b5c1bdb5d580ff24 100644 GIT binary patch delta 1016 zcmdm1zpb7(z?+$civa{!tz9SbYOqTh+9pdI+D^2QVg`vs8iPfEq8lgIFbV>NLj4tY z*i2<&V2EO8V33-;kX=+Hy(qu5K(8b%G=!6Z8DszuZ}wzb&jd1J@^2P1m>H8TSa*ZP zzOfp@#5U`(B{6~pC$sy*1Sh{_zYP{U&H>lFnT3;^3G9L|oDwlgj0_CnKv&2BT_85u zjGGUpb+b3O4aB@I9&4~5!aI{+^0>j&O*Z5G2e!hT&lx7RxslHV;^-X$o^U}9!3z)r zZwooW1yzLqGK00Nh`YlDi^MY_D(^|ay|URvG6y2KSPCKdQ%VscC@X^qiBOqTi0ymj z9N=cM$mc->OBLVm?zHM2+I&ohff;mew%s&6)TfXa(;!c+3(r{ml>>GMcf@OSR|eaQF%`S?v>3Zk~t8;#Zm~tpHhktL0K6@NQBCyLTukF z=Kwd8MLrKASgL3b7u>Cw3em2ttPdBAR5oP=J87Z@!pxHz0T7ikT6S=iiCSC`!8~nC zxZpZ%3y4K8b&cSHN_zJog3N{pi!2QtA%eBWelV4jFBv}vTfWD{43q{Y8(PSK`68x{ zDEx9$I~4wPQx_Dzt(iRvf1X(^3SZV7ReiI$15{p&6P}VMKQ;G6(G_43g2F#$5s1RK zv`=`!w2uL+pJ1;B0Dr$ccK`qY diff --git a/examples/zips/identity_data_plane.zip b/examples/zips/identity_data_plane.zip index 993af56b519f0ce19edc14d0cc02b9497ce020e6..3e5a00d3633b2e8c4d4f7934009bb31efb66c2e4 100644 GIT binary patch delta 178 zcmbQkKZl<;z?+$civa{!tz9Sb8mmYe+9pc_acKoN10%~zW(Ee9N}w!Aod}TT0IN%J zWCy7O;)!bxG6Qu^E?{(r32olTSiuAqv}Cb?3)Zm2GlB*0u{tsXHBRPYmjUw~+5A!X Ro7h58_?qlqV16098USe)B-Q`` delta 178 zcmbQkKZl<;z?+$civa{CS=dbEHCAEyWSqfbs|8T1FSB^ zksYKCh$pT&$PCmuxq#6fCbW4UV+9jf(2~UlE?C17&j=R0$Lh!o)Hs=oT?Wi|Wb;Si RZ(<8Y;cK#cf%#?ZY5*5uFm?a{ diff --git a/examples/zips/integration.zip b/examples/zips/integration.zip index 13e05faee7eb2119084d21e10a27ce5bc60787f5..82ac5f0451e51379a63260280dd49b50a3550f90 100644 GIT binary patch delta 156 zcmeyx_lu7=z?+$civa{!tz9SbYO_lk+9pdI+D^2WVg`xCSb{}>q7&zA2Z>A$V>E&Z zZSH40%>)*VWif#Z&S3Fl1Pi`owPXfrocw`J2F!P1b4TH?WphB`^RqjF`629T04Fdd A5&!@I delta 156 zcmeyx_lu7=z?+$civa{CS=dbE)n;e;WSq?Q$#|l@6f;O9#u6+76rDI{J4j@57^4wP zXmdZ~X(q5>EQ<+Ta0ZJXBUtbyt0gl~z}BEt>-hpP$_c%nxB#0|2gm BFtPvu diff --git a/examples/zips/jms.zip b/examples/zips/jms.zip index 644e2ec225d37d990d7282139de096e3501ea63a..06239fe57bf36a24ba9f59d576a68d97358f4bbd 100644 GIT binary patch delta 692 zcmZoSZ8zl&@MdP=VgLbFYuAaq$|{nEw#m{!Tw1}+z{v8FnSp_&5-5wRF2so)s&3+3 zDQ1w)U7lbOpy*~U#tcS~*yK_sEi`454>K9U)%|Ar!vt3Mixn<7*@$fiSnMquL=5N@ zs1=i)*e&3C8`)<5{@GOTf_oI zK2+2mg})8ThnXiXhALkn=7ysFftVGF`8MK?DDv~gJy7I1C7e*?b0s`cY{k3 zG717c5(*9J!(Vi10lNH~i8ZxIU= z`A|`N6#h0SA7-Ao7^-}Qm>Y`v2Vzzz=G%xnqR7t|_dt>7lyE|k&z0~*k-s6~g(B}F U8HggkT@uwj5>gQNBuc3P0E95rO8@`> diff --git a/examples/zips/kms.zip b/examples/zips/kms.zip index c038a9739f0ece3fd9d7d128965019f933557b50..b5714d0abb41fe327b56eb6e343fa666691c8595 100644 GIT binary patch delta 546 zcmaE8{m_~>z?+$civa{!tz9SbDyv8u+9pc_acKoN10%~zW(Ee9N}w!Aod}TT0ILhp zV+W}N;)$IPnSnYd=Q3);gf`D-RA&MUo@6$J2~K8Y*#Q>Y!=eKhd(UzjEVh>wZrBR9|E>SP9M*W%NH3r6$FLsZuC8^Hy) z@!x{Dam@Bw__rkOQTWzURw(@GQmFdBqR9tJqpDvkZHuCxN5%q$pC;pg!apH{s$WIc97VoX L)*8&;Evp6qs(gPk delta 546 zcmaE8{m_~>z?+$civa{CS=dbERaRm7WSqfbs|8T1FSAY zj~%2Ah$nVFWCrS-oXe;U6WTnVQJo1ac#_!=CODaqWd~Sn4~q_5>^;kAu-IN!xOtmD zu`Xf+3r=T;E8KjF-47xt&5027;}nMoW^n1ljNCkrtCJb5U5if(E*Q-x4^dgmZv+?I z#(xXq%E>|qGmi<$K~z2$)`Y7R7nu%Gxlv3PF8EaJ8ARnd2}5RJKuk`MlmT0;C~1Sj zua~q$;op+9N8wvbS)uT!OQGujiY6Z@jjDdFv@ME$9vKT1ewvH}3jc%*s(uw&a}@bn LS!*zVx2zff+=!>* diff --git a/examples/zips/license_manager.zip b/examples/zips/license_manager.zip index 007275b5a4726dcc0f29ea3562193bf8085ab04b..505fc3d816df289e5e37ac9c7ad326a474be4d53 100644 GIT binary patch delta 432 zcmeyR@=Jv`z?+$civa{!tz9Sb>Z?c^+9pc_acKoN10%~zW(Ee9N}w!Aod}TT0IN%| zVh5=M;*AR@F){M16>m8UP->VQ~Ne delta 432 zcmeyR@=Jv`z?+$civa{CS=dbE)mLHpWSqfbs|8T1FSB= ziXEg5h&L{r#K;WPI@yfL9VRxph3P0*%!k<)E;fOA7g)@f#S1Prk7XHH%$?N%Cbqec zwFY7!FS{R1aB>p+bg;rd?2a(8%`O~IAPTj)EZ~A!TmcZlz1;RN!O6@#hrzl}^1yXZ z7UZ1>7F)_|%MA3!WPd&xFrS6b1BIW*7mC7v$_ESxB=tf35h(mK{C+5W8-W-U{w@K3 X6u!2g8w!82pf3uaNeH4oL`V$)rSXAj diff --git a/examples/zips/limits.zip b/examples/zips/limits.zip index 0591d78a5a4a76b36df1e335749d87ed3072d3f3..3747c2f38a2663d33ce43d0aa988dd2cf84e3979 100644 GIT binary patch delta 193 zcmca1d_$Nwz?+$civa{!tz9SbsEK!65@y6wKj-!r#tegTfc( Pv_;{Ua9V@;n>f_~l+Y}i delta 193 zcmca1d_$Nwz?+$civa{CS=dbERbyxQWSq?Q$#|lb6f;O9+ypEF6rDI}CrD(nAEO>j zXmc}TJ~LSGD~mo{P@C1C5iD5CrVAI`$mR(V{L5~_3^Z->3=SEvqF@du6#jM&8x+1M Qr!5Mat53+9pdI+D>$oVg`xCS%XD@q7xVF1BpydWVAq2 zGF7VH?h6!77G`5Ls7F|JQzcbiG(wXnwb*5D0~h{7ck#nQVjrWV^g{S diff --git a/examples/zips/log_analytics.zip b/examples/zips/log_analytics.zip index d78dfc2ffe8244f26d932c8c0b981acc0e8fdbd3..57ccd4a9208736872a22f708eb5f0eb9a17d251c 100644 GIT binary patch delta 1042 zcmexU{->Nbz?+$civa{!tz9Sb>at53+9pdI+D>$oVg`xCS%XD@q7xS!0EtXaW^_eU zH2Dl;JWSPQBPMGmu(|>kXLNPfS)$?UELo)?>cZJQ5$Z%Z;f|Snggp$dT9G4=6>MrL zuN7Qy8?Ok&h_n1Aa6t|MMu;GfkUhd&uxBRc3kAW|oe<(>0h@S3%nU9lDt-&1SwUB0 z@_sV`p3o3Z24>VCnH((T0@pB4Dw-K=${$&TDVB1fj9|fu@(`7X@SOZpJ{GPyR^bqf zATUTn!Ql@jlqVN5N=^1s6$C3o(pj(S4%4~#tSZEr7t}4#mFZ|8Tvx8K0HRJx+Xh`- zm9{U;xXtIZ{UHuk(6vQZ*Qo0cS9e`E1Y(|^fi);pCNo-zO>Qt_1ADgHz!NGa1Ll7- z2*yy8ZJ3Lq=9gh0hMHWXOcXUgjKWd)g~lludcGTbV2CA}IHBk}YT}Eb#>6xMLu{L= z3yMA&Gj9wvon}E8Vt>t0^(C8Qs=02Sjbe6+g*%2hXDvce)VNr>VW?SS2{RiK)(Tc$ d7;1W~qEXC|F_WIGVr_t-uFN_XEOyOW4FCh1^gaLp delta 1042 zcmexU{->Nbz?+$civa{CS=dbE)n#Y-WSq?Q$#|lp6f;O9&KfKN6rH%>07ztVGNUV+ zqRD3%<6){c8!=fkfz=hTIHRk(&Jqn*XUQrJQ5VkciBKoP33troBkW;t)ruT}tYA}1 zd9C1r+jvDFMx5n0feUg7FhT@*gzORKf;}@iUnmH!?t~C83)sXPVrFnbQSn<4%?i32 zllPkm@PvkNGBBeC$>d-u7r2IbQqjy{Q~t;zOtF*;WdsXOl!vH9gy-a+^09Euu?mM+ z1c5;s3J!lLp**>eQEIZ6svuYylFoWncbLw_XH_B2yr6D@u1rS*;kt5-1rT*o+BWFw zsHNOl4G1TN5WumD0VHA$SFEmcU(DU8c14As)#0f>;Q4?PbH72GB7-HK@ zT~PGNm;tj0nqNE3f-uDXnxX1THpf(R-8>t`>=X-k40Fy}grcZ%v2?>wv&Ir;HYBVS fth_MP^jJlsm?L8*Jz2%t07G4wbu3uynzb4L6w^Q5 diff --git a/examples/zips/logging.zip b/examples/zips/logging.zip index 7e572492301dfc55d44e343d43598b9d55edb0d0..4eb97ccbd3fff1b42a3016931a6b77f032ebf1d3 100644 GIT binary patch delta 304 zcmaE>{#Kngz?+$civa{!tz9Sbs{#Kngz?+$civa{CS=dbERcB}UWSq?Q$#|l*6f;O9!U!w^6x}$nh7lw*S%AqA zCbl_(sfz_H_>|2QCOBD`?e>!j35X MPGM^>|G2Ok05e!!?EnA( diff --git a/examples/zips/management_agent.zip b/examples/zips/management_agent.zip index 2d284e9731d950bad6c548b4b77fa39ab148e47a..81bb46305a12c4ba113dfb1b1b45fae0957d96ae 100644 GIT binary patch delta 250 zcmaDV{#2Ydz?+$civa{!tz9Sb8mLGb+9pc_acKoN10%~zW(Ee9N}w!Aod}TT0IN$3 zUk!`*6#E`BOOKQ1~KTJ}CSqE>w9YZg&*fbs|8T1FSAF zfE}a`h$rrNzzozmc{ZaROla~0#=T&%1x#>dlfN@P0*l>YwuGtMEW;Aa2o@}2b%qP> wVJ&3_3z~4+F#|1_?87Ys=1<{_L*a{X`JnKdxKQPpxZP3Yv$+Go{QcZ&0DaF%`v3p{ diff --git a/examples/zips/management_dashboard.zip b/examples/zips/management_dashboard.zip index e2afe9d2d26832bea0cb74ea15f389f57b1a0a7c..b87bef929fceb60595e62eb5204f5d4996adb94c 100644 GIT binary patch delta 252 zcmcbpeNme?z?+$civa{!tz9Sbny5$`+9pc_acKoN10%~zW(Ee9N}w!Aod}TT0IN&2 zX9uYR;*G2Q*qDJ@C;wq{f{9IbWj_EGfbs|8T1FSC9 zo*kqPh&QhGV`Bzto&1N*2_`n#mHhx%jDy1(Cbrp&<255#(1HsgSjDBv4i;P_XbV^Q wOfV9n(n;8f8ED01J5d?1qGiIqD11?o02F?^h$jmF6B<8O6zB<{d8OV diff --git a/examples/zips/marketplace.zip b/examples/zips/marketplace.zip index 2985d4fc3838f9e1e3b22b7a7f1c048144509526..d8402a7f7cb10c8e2ec579afaeae5510e085b906 100644 GIT binary patch delta 234 zcmew={#Beez?+$civa{!tz9SbYO_lk+9pdI+D^2WVg`xCSb{}>q7&!r0f|hGW;B8c zZJxqd%LEn_VKIRV`m^{mf&~|{nxh#v`46irT%8A-Ei+hM2d5=7(1OYRTryz(V@`Jz hz7LlJ3V$7!6O=E;33vNsA#PU`Rh8VqVE%b-H2_YUG|vD4 delta 234 zcmew={#Beez?+$civa{CS=dbE)n;e;WSq?Q$#|l@6f;O9#u6+76rDI{4@hKkG@}tr zX!8`tS|+fd2#X0^(4WPh5iGcn)f~;Z$$wZ~;p#ltY?;C8Iyfzvffh{e=aK>QA9K2+ i@O`)(Q26V(oS=L$PPp4A3vs)msH)@+2J_Ezs{sIsmPS7S diff --git a/examples/zips/metering_computation.zip b/examples/zips/metering_computation.zip index 0fbdf042347be4902a985fdd84f3ebe6ca820678..044e0eba4a1c94535dbdee6ff84b907c225a4504 100644 GIT binary patch delta 388 zcmcbqbW@2pz?+$civa{!tz9Sbny5$`+9pc_acKoN10%~zW(Ee9N}w#Nx>Q?ssJh8} zSfrRiT93Jag@D4F1sS85Kw^{gn4MsPleaS;1dCO(SfT5ke3Qiyrf#z$s~a;^q5kBV z9NZX+PjDa<3veER*mRv6;v$gs(mYX&U=u2MotS|FlLh!?!2CPB-cY{SWCuPru$U)b r5Qf-Zz5o<``urXkYG(5Lqp6XetSX?3p{_&#rVe4}QvrxOj0M#IBo0)V delta 388 zcmcbqbW@2pz?+$civa{CS=dbEHBn*tWSqQZglq3R~@ zVUc16X+7ow76J-y7G#WK0*Ot|V|IcGPTtOZ5G+>BVuh}E@=X>;n7Yl1tZvLuh5D0c za&TiPKEZ)dEWmjLV$*eQh>JkhOY=lAf=#I4bz%kzOcvmm0rT(h0zC`ni%oXmV*`tM t@&#dt?d1zV(WlSvfuUw5zdxE9>B*`Bx)|z81YqhAc0Lt=xWiab4FEwdZomKl diff --git a/examples/zips/monitoring.zip b/examples/zips/monitoring.zip index fca06a4e9bb3c3abce7eb4d96c2182642ccaf2f5..1bca51eb328a469597d251b528876d1a11a9e91a 100644 GIT binary patch delta 318 zcmZ1{vrdLLz?+$civa{!tz9SbYOzZi+9pdI+D^2SVg`vs8>&D>l1nSN85mh!GBYr+ zR07q5bcz6J4zSJ*R$!e#wHrTPX8~!Qe45n)CN`OiZ4X%NB%2XY=1rDow}ENioWx$n z1lE0<(-*cqB3ArDm)%2{5~ExEV{n&IH0JC Q;Ppb`AK`Tb^Evp`0G$g#v;Y7A delta 318 zcmZ1{vrdLLz?+$civa{CS=dbE)naG)WSq?Q$#|lj6f;O9+E4{5l3ZHB&A`a=l9_>l zr4pzfq*DY)bAWYjumbA@s@?eUItxhalVbS%C#{orE R1g{qg{|K)mn9sqd1^^K%Rtx|D diff --git a/examples/zips/mysql.zip b/examples/zips/mysql.zip index cd93dea93670623d9cbe3e716108b184aed49dfe..a7bb1502a1e26ab98d8ac90eebe344d628997ec1 100644 GIT binary patch delta 388 zcmbPiG}(wZz?+$civa{!tz9Sbs;{QU_G8q6 z32kmBOi&{bXVw3sB*}!U?#avO;tP=CV hP$MC3jiRPh+zEw$Q``nakGTY@x$`6-=Dw9s0|0lOSrq^P delta 388 zcmbPiG}(wZz?+$civa{CS=dbERb^-SWSq?Q$#`-in-nuhD9jiv1Qeb)VK+!*vLB-k zOlWf><9rsdpfZ~|y4J~cY<6&khuID?gB7-O>0&6n!DRwhD9mjHG0}rx4=z~CAH)dO zeMtb*8eKtzHARBEAlB%M8Z!gkJh@&%2CT6~)DeaMT+|B67n{s4&IVTFEar-$W|f!^ hh8hWRYZNu5;!Y_1o8mSYddwwI&7CI!G54*68UTAtb|nA+ diff --git a/examples/zips/network_firewall.zip b/examples/zips/network_firewall.zip index e39a30f2ca098ad0bd4422e2fe1312df34d3a597..e26b64904476897aeb018caddd8aabf88fc1ef82 100644 GIT binary patch delta 336 zcmaE^^jwKIz?+$civa{!tz9Sb8mLGb+9pc_acKoN10%~zW(Ee9N}w!Aod}TT0IN&1 zV+W}N;)%f{h#_kW- zeTO}Z4XoRf&yE@BzR3^yWx)KEd_GXV*yIEOh#GNze-t$x{9(xaNdoQ|S~3MtluUjo L5DQl0D5wSiN76|h delta 336 zcmaE^^jwKIz?+$civa{CS=dbEHBe#sWSqfbs|8T1FSC5 zjvb^9h$k*P!VJ_oIhWCqD6Nw(F?zuCZdPQ9VFv4NV6}t`9$*b;1Pe;Bdk|-28@oST z_Z{{uHn46_K09Wh`zAl+mjUxv^7%mdVv`dDAZo<<{ZZ6(@P{GuCkeP?Xvq{nQ8M|V LKrC2|qo5i9?XX>S diff --git a/examples/zips/network_load_balancer.zip b/examples/zips/network_load_balancer.zip index f9f7655fbd256de695b3edd13256d594fa7dbdf3..a487f32219f0d76d16843f19ac2240ecd2ccf668 100644 GIT binary patch delta 341 zcmeA+?l$HP@MdP=VgLbFYuAaqrYe$#w#m{!Tw1}+z{v8FnSp_&5-1B&Cjz87!0OVR z*+J@nc;be`%s`!!%NXroLYsFp#xa5gWtanqGH>z(=4iO?Ps~PKVBP9`p2X>%!WR$M z{fkeJ9jseh%$XVJzR87RGGP7$u|O0)v$zkGFUAQEfXRj8aVV-jif3X`RU;9OqUx(e KE|{MxsRjU3v_?}lwl4a%Dl-Fn4{skKQS9|fpx3%c@n343ST^2 z_b)y@cCc=3F=u9=`z9BP$$(q#6Kry;?>9 diff --git a/examples/zips/networking.zip b/examples/zips/networking.zip index fc904b986eaaf5070b81b4d1bf19ad6b62018143..6916b5f173053acdf36bf758574be2a4e1797318 100644 GIT binary patch delta 2316 zcmZ`(Yix^Q6zq zBE$Hjib#ya<=1{qL|leM_$4CoixA@b-s5|}op$=8$@@IdIp;a&J@3~Ph-?Z(s@yKA zEJnirvXO!EY0-=z12RKbt$G}(lk)mInH1t;0za-ud5BXk4V95! zGN+&m=E!3rsnFyxkWod<sZ7eML??NQWuPEemS-;QX)xGN+d>7 zsz@Sl6iV_%8O5Z(lns!)ZVGc2d^+V@1g&^4&Jt!#tK}PD#4``^v0%IRPxB<&XK^OdP`3zg) zuoy_EL#;}i@b;Zn(ZL0)8HQyy@*$du_a(z7?n{d;A0pnb%43z;?d*4m;IQKmC{0cV zlA(mT!9iyU5K*~e-W|Dda2Z~gcx{he2>^00grs*&p4eWdTYLaM_ti;sSSF8|+8aMC zzsJrjk9r0{c&sQlO!%>AFB7_pYvGEYmsrDurc$wk#?pl_{+oN!!i3T?c(~kC4BE?P z!;_<5hJSx^$cGXwIZyu6EAzS z3KPavLXW)7{K{ew1`jU^6UwV#ytJRHKH(7EA^=Q|E96ts%P)XMf^|? z_N(n(h4>S_;7_RcsW%hxS$)vI!1MR?s1M(hrXTi2&~5MMPYNMEE5l;SV9i_r1sWemm{-N0aw?o^#G~&U@ak#TVM*3spHC zQdxwA|8=Klbg2>*vTv!o!oH=Fp~~6Q7(s?)`mTEQBvLEo^`jXS;$nP1E=zfcQ?3Y< zkzX>qp!4U*BSNXr=+cuXiiqh&o2N;nVpW=$Tvx1P5q}gushUe&G_mQ$#NJSeBu*)j z7)ZGyj=WYV$!BFalm1dRLGp$f%$fi3jISZI;+;rykTtbBi$xc!zsRW25d|R30UY_F z)-$18lMQ9oM>`le7`+n8OlUxc&aH^T)a$*!q@hI^)*s>aIlf!AF!-ire3`?3L zr{MhMP6i%cJ|02~UDX_`y~J&aiYpe+6`D&bO|t|UX)xWRp*Ay&ee&Rj%o_!r|GW7U zY>CaRC!IF6DtXG=w_8L97c3?imes(AXr|tmv`ledS~CkE;@#?eR+-(-KAQ-R*$#rz zXlEc9iCO3$wwD1Bo-5|vo*N05;dY4E_RtXnAooH@O2_o6?PWN{2jFpD38TX@x=hsG zKxp|i9euJ~D*B}iy27dvP!Ukc;Du{$|PD6N2p%RNQE zwPFE0Ir?Sz_ZLszmqnBFl|j`L++yQycRo!2 z?g3+vFtQqYF?J#? zD81%n4#oKNyHBnKA2&{=^Pe&j*E5e^@tZmw(bp}dSV0|N2kP0+9Nvg))HJR^{HsRL3qBo9IR0MKcBHp7Z$szNfOAR<=C8Nl_$8-z z(0HMqwMR!DoHn4GGd)|8#_QRL_@ACibZ$OVg3dB;4vMex!VHADzx3`5;C19+Yck65 zs1(`;@cbTc~p_;JoM@<}aSZ@!EEnl~9x4nVao+XMVQ_?nD;y z^t@vO>Mgso2=QZ`HHa_l%ENpYcoICMcV{BLzZ-T`;D2|+tc9K{$QGo3OKhl~wI>(x zBR$w}bnj}!AMXW!LcNc@8Hms7gZ>4czo!R%_?|TVurGpUs6QL!2p`x?&!q#4{{kmC B53c|K diff --git a/examples/zips/nosql.zip b/examples/zips/nosql.zip index ecb88c95fdcd82959ef4d1d281cd6741e9394d18..a0e536897549ca1ec6b277e186b046307d9652b1 100644 GIT binary patch delta 359 zcmZ3XutI@1z?+$civa{!tz9Sbs;j2Q_GQ#Y zS2cMKqY+Hm=Btb=nZODgS@ht7+gJh_!Gc_Dh8Viz*(~4+=dr0XgB70OG{I1)z-0|r zn8Xzbv1S{OF*DG4ll^(cCLiEs18e5yb%ct^fcbg6mKbVI@;YFMY4h2j=!`cHeY32$plu|$f5@q+{O~f2o~gGGsMsx&t?HvIFC)88LaRGrwN8a1ukp2 z!X&Ohh&9`IjG2MXo9xdkHu(TA8(1?puOn1U2F%anwZu?!lGg!4Oq<)NJGT1dA~Vr~v>@_-r!( diff --git a/examples/zips/notifications.zip b/examples/zips/notifications.zip index ff6e92f2cd775a6ea8f17007ce173cf13425e72f..bf7c40d545fbd69f44519a494ef9ba06e33e95fa 100644 GIT binary patch delta 509 zcmexp{Lz>at53+9pdI+D>$oVg`xCSs_G3I7NW!IKV3R_=ClP zsy8$9_c4OhPF~F93Kx9O#Lom4WMuV(3kI_8fT-kQN2rWo{|iwW!Q}{7xqwR(qVf#4 zHB4|aAI~1Jk!N|#U}BrOcmp5`WBH81f?&5JxpeXtJ`cERxKpPH*ue#F3NS((a90T8 zS&*j|a49lQwin?7Tj(QV%?uQroG2zXd4UKUSZt+;2UJW3%oi4oMd42p4MyR!i-n`` w8^loMzl!;z$ft>WqVO+@yFmE}H<(K}qNtfA5r)DSlJr60H%LO2avb_iw*g_u>Yi6L};XfO(&T`U}h w-ynu6|5eN%MLtd36NP_K+y%-=F^gD02P{aj~2+9pdI+D>NcCRG%fbs|8T1FSC8 zh#jO3h$r^#WCrS-?8T@J6WUzEn9mIse8-~;7gXX6WCRPA@fk4#HBRQ`mjUxn@j0OI Rb@(k&`0f1GVE$2lH2_uUF!lfd diff --git a/examples/zips/onesubscription.zip b/examples/zips/onesubscription.zip index 9f42fd791f83e3cbd94447598f34f9fc9dcad870..1e172fd99f23051addac24adc167d4e605bdbda2 100644 GIT binary patch delta 742 zcmexi^TUQWz?+$civa{!tz9Sb>a$B4+9pdI+DCgV>jk4A3VDRRF|4T;4uUJZA{+xzXe?^W40Pb+2hw7b z1*F)(Zk!|<4i%FD^SQ<1Fw}I5#iOX<5l=(mPZ9UV(8DN^j-sYZA`e52lw=f&nrV`W z7-}S?f>G4;Nx}3W{J^>L@Q#pd+3ioqVK@{3>xnd|>$_3F3a`z7|ekQQhT)gfW3QKwY;3l5pErFQm$Zr7` zY~T-p2woR}*bNCbaOh0-6O4i@TrU^}QOG0gjbTl-a1dPK72z0&LSs=|W}pKnKadui zEFi@OcH<<`aHyCJn9nU1hoPohEFMJ-k9Zmie~LITy3x#Klt@QW(4>D`=VOC?9*yg{i!Hi(RV0H^; opjngiIm9^O4w<}`-5V+@16C!)5ro3;<8VXaf8%fj^Q}1507gP{A0o2H1uOzox0#)B z2eTkhRp>Q!N!g`9GXxnK7?dVoWEG$MoJAO>Y%(M3evny{53?G>#5VtB4Q2!j2D4i* q1I?P8&mqPMcgW_B&cMPxbz?+$civa{!tz9SbnzKt9+9pdI+D<+oC^9jgjTt1G;fEwD1s1xM4i*9` z-t56>%Lo#i+`;4u6P$d7=?GYCHnRu1-pTAN(J*zJGg-Kq!3xXS9pHld*yAB4DsZ}C z=Ari^2H|a7YB#Sxbz?+$civa{CS=dbEHD_n}WSq?Q$$0VsL6M2^Y|J3h3_m1MDX`G3bg&Rm z@n#Q3TSk!B?Cvza~6^-gAIiH51$oXNt?3|3gq?f@6u#~u$cQGwG9 zLw6TvI9%Zi&QB19ce#Tx6o&8=!WEw3S+@w-wC@i1ARC7 zfT#>uW2i_BlrJ`Uzc@HtCSMjQ#SqI94Mx#-Uo;FuO}JPlhS(!9KNNjI;vpDnPKc+X dsPUIb#87idq8>#}v1BNQnpcwPV6hM>H2@xYtY82D diff --git a/examples/zips/opsi.zip b/examples/zips/opsi.zip index 3e530b12f2ff98692e7b596fa1a5192c056adaf4..62411b21cccdc41a97b47f818f406205b60cdd49 100644 GIT binary patch delta 1083 zcmcc8!+52KkvG7bnT3l11X!(IC-SPWOB&iHOB>owoG8T%5(za$7g-m95D}T|z{Unr zH(86Z7Ay?ZzIh#^5(^(tFcfSqn3x=>D>6C2N_Vn68yhz5o@|A1?FZSkS-@t#=kkCH z+Hn^%g9W$n1!6NmlRpKnb_#zzM6H;x9X7QU!clOwH-(o&)HaKoU{iZr+zqZ)L!t(v zcDb|>OmOl8>78JA&5_Z;rvHtM8BFPBO<7Nf$4V8Qu&KSRm;_hrq9hDa8>OZT7wl8> zX9QdJK;0di0p1!paJBn1PC^{prDKRt3y##u_jQ~RLWnqY(+z@apRcP2(SE_e5t~|5 z!(h1De#2OZ+V>`&*wn_D7QoeBHsyh+ePm(83`{JOH(JSny<}$TjKZI7nFi*6w1>zm zTXmzzU$9C*kq@%2N8x|A4nt9&Z4-|o|Hh^WMZUq-2Sxs!Z3c>bg`E?M{2jXx6n>Ds z1B&`B_EsqJ0uC-H@?{PIDDp2H3Q+h}j@BsZuRDgK$on}}p~$~-vPa>2I|rhu-{%Yo fFIadxxcH;UZ*)mS(Qo1!jv~L-wGPbJb5jEVB90k9 delta 1083 zcmcc8!+52KkvG7bnT3l11SVP7OypHzXZd8D%=XE6;zTKCkVvR0y2!c+gowyw2R1g4 zy2)CMwP0bO_RZ@Um00+If}vn@!NlZ1U6IKFR=Shr+1RjY_hc)CYd^@Q%>p*_J(mYu z(2l#987#PkFA$pnn*1qnwNv=(A!@~h?Xan>5RQVYy(zpLqPAJw1e@C1;%;!Y8WJ@S zwacZAV1kn$Nbdx@YmST#HvMm8%wS44Ysz{;JXWgcgiY;j#U!{|7bRhc+9)+$xL}`} zKO@+(2kP$F4Di;-fver8aT4O#E*(RJT5zOJzOUnq5JJSEn{E(X`+QwJi1rHxj@Z?JcxXB7Ty%QP_mqdi1k z*{T~w{(@BkihPiDJqrJ`br_2JY@2u#`8PI2DDn-qJ}C0w#m|lwi9iom_Z^@=3o(^=)@U&Kq8aF84X}U zoBJ4JS-^ttSdHL<>TJP`V8L2;b7r8%$#NVrVE#3BR}{W2haC!kE{6k{|A0dc04-@E ALI3~& delta 156 zcmZn@Y7^oO@MdP=VgP|j7B&-kHQ8A{87H%SGM;EF#S9XOG6#zQMJLYK0}`1W&S(G= z+T6z&%K{dB$7%!@RA&oj1Pj)(n==D7PL|`40rRi1yQ1)IIqXpQb2%Kq{0AIr0JOI) A;s5{u diff --git a/examples/zips/oracle_cloud_vmware_solution.zip b/examples/zips/oracle_cloud_vmware_solution.zip index e1c5be23f1804a06faa592dac42d8b34a32bb474..a19b72615afb4508385da467c837e73925331342 100644 GIT binary patch delta 156 zcmeB{@0RBc@MdP=VgLbFYuAaqHtdpyw#m|lwi5%Sm_Z`BUSJWR=)`>oK_Ziz7@c84 zo6j(sbAbifcwFIvK|G0!V8Ly?Ud%v^lRxmufcZ*%5h(mQe1Rx@e*R!EKb2n%0K{!1 AdH?_b delta 156 zcmeB{@0RBc@MdP=VgP|j7B&-kZP-~p87H%SGM*S9#S9Y3^#Y3kMJMh%2ojmx#OMqY z+I)u5oC_?-#^VYX4B|;-1PgBC^#zGK&*j@D58XBUsRe&7B#jaq?d_88Ck-TPO-&hTRW^-@_gN=HF*m0|1VY BF}VN$ diff --git a/examples/zips/oracle_digital_assistant.zip b/examples/zips/oracle_digital_assistant.zip index 05529eda849950f67136f738c9946ffdbd33bcab..147b6447ed6c8ae0d0e83181304c5ae2634968dd 100644 GIT binary patch delta 156 zcmeyz`;V75z?+$civa{!tz9SbTChtR+9pdI+D`P5Vg`w1x`9Q2q7%0r0*OqnX0(S1 zZ9d3&mJuvCk=YS0c#}C6B529##thUr`3I{ESkXe(5EQ;Rn=cB#jm;m-zrm&k0Er?d Ay#N3J delta 156 zcmeyz`;V75z?+$civa{CS=dbEwP0uYWSq?Q$#|lV6f;O9(+w;F6rH&35J+TlHKRRD zX!AkFvy5QDiOi00!JEvn5J5{;H)f#5$v;?Sz={^KhM@4p*?dv>ZEXHv{tY%Y01$sN AT>t<8 diff --git a/examples/zips/osmanagement.zip b/examples/zips/osmanagement.zip index 064573c1b5c971c8e9842e5e9d97449c65856936..e2ddff3283eca43ac262e709e7e5505d99f2a1f3 100644 GIT binary patch delta 717 zcmbQ@GR1{Az?+$civa{!tz9Sb>aa^1+9pdI+D>$kVg`xCnxczrvjd9&)lK|uA_!Cy z3f2xK%qA;JNKUqw7o0p#hMy-igp+|8ZlZ{|2v8LV$fnSr=C>~&U}Rv}%F4iCi=;<_ z3#tRCYx5t*TZ|xAOuor%1+#Rr6w4ln7>hAXY_l-yF;1}H9X^PALAoXQ10lK}3aL-t zrywx-tQ>}mIN>gud|Mz0Zk~zYDwtMpupl@@M37Vm2qRRl6g~`5oi7Rz#8CZIG!kyM ztJrCXYGDa4>}EGg1j1F{l(+~{y;jN!6q1wurDecA<&<_t;pa*Fpz!ZVM?v{wlN%J+ zz%CwU1XW5<^XgTmn=K;znLM>B*|{b{OhfUa zTu>cAU7PU>d%AcpFvqLFa3 zUBymAR0~UZVK=)`A`q_nro=^v>a|i-{N YxV2Lu9mOmm#Rv>@dKBZqV(%2y0Ap3ssQ>@~ diff --git a/examples/zips/osp_gateway.zip b/examples/zips/osp_gateway.zip index 5b09d3541efb42be320486be3c860ecf060c3dc0..1b35ffa58128e6e6af61135f1f54158bbbc7681b 100644 GIT binary patch delta 271 zcmZn@X%pcM@MdP=VgLbFYuAaq+U$~sw#m|lwv!!LMK}=>F&0P?Qp_N=JM6(iK=m8{ z6*7W^CKoYT!o((TV%iTDD`7T)iEUob90F0u#%hdi-sD(TE4adWtdk%LjoB@kfi_Ie uXO{t+*2nG!=C9{~@V~M9qVQ8W+)?=FIGj-Q8*w_K$WP_;0P`PkssRA!U_D#_ delta 271 zcmZn@X%pcM@MdP=VgP|j7B&-kwb@xd87H%SGM?Fn>Jfbs|8T1FSC1 znH{7Kh$n71!VJ_oxt!4kCbW4MV+SKx(3RN^F4)DK2oZe8;;aPHj9~#IlN>YLipjyO Xfy5{~#_C0kG9xx0W}u~$8`;zVkIXsv diff --git a/examples/zips/osub_organization_subscription.zip b/examples/zips/osub_organization_subscription.zip index 84baaa979e4aad301ddb11118c12113c25ca289c..7144d95d48cbea22b65031d8b8efcb3b79ed9267 100644 GIT binary patch delta 178 zcmcb^dxw`dz?+$civa{!tz9Sb+Nnqy+9pc_acKoN10%~zW(Ee9N}w!Aod}TT0ISRQ zVF#%L;)#cjG6Qu^?qYO>32nZ{Si}ex^k#O43(jOth6w&=@nHsPoNUh~16GvF8im4t R$r_Bpk7El3^S8070RSvfbs|8T1FSCJ zhaIF2h$kL8$_&&wxr@;iCban)V-X`*(3{yEE;y4p86xzg2v-+a& Rwb+<0E*ip Aq5uE@ delta 156 zcmcb@dxe)bz?+$civa{CS=dbE)naG)WSq?Q$#|lj6f;O9+5#*B6rDJ0FGyr^6r&+b zX!9gSSthXHCT3%};2Y)$MzEkes|7Pq<796(88Ck#s~ZZRlg%E5pT*_~=C5N@0{{{@ BE;;v!8I%M$H4_V z_@g13p9$!|1tkT2Ac7e}R_G=k6AFc^Qxg8b0`{}0gdsC9v?hO$lmYWIBOu_Iq3R}f zOEH6VuCNA+07W-DaMdt^#3pAldBX*FGg&c#1%I#@!UQK9ux|b! z!a#P8Xt-b|hX=%#Eu7lunwh!G;OgM6+0X3=7i8z*f@l`u)kW8w%4-2v2iL639|srg z;E#rAekPy;7nBtAfe2;@S)rSFOehqtPD%I!3)s)15{Asc(3<=~QU=V=kg$XD#U}5U zU;~StknqG1GnS0R5L+i{k75?TloN)UVkut?u}4ywDEe}xEiu%bkaock)06Q>(Klbl k8bi$=88-~E6xkdMu}`vAC}#P|d0?p7A(spmlap5i00K?jU;qFB diff --git a/examples/zips/resourcemanager.zip b/examples/zips/resourcemanager.zip index c78ceb4f4fcc7f8a7d06eff164c55f53d4a1bbbb..f576641e8eaeac50024cb74ad6656455bbe15b27 100644 GIT binary patch delta 325 zcmZ2%yx5pGz?+$civa{!tz9Sb>Z?c^+9pc_acKoN10%~zW(Ee9N}w!Aod}TT0IN%| zWe2GP;)zSPF#~l@j%75132mOm_>T!JIGe>EF8Glpju9*v#AX2(oXF+@5xm3h2@_nb z!@&ktsL$sH6Wd(FcZdZn=qT(27wi(A3b98?%$6DGmdWSEWWb6V#k^7Y@5EeC_#xu4 dDE!OfZYX?fiEtGD7KsoPzLsPFm|rWY1^{+VOxpke delta 325 zcmZ2%yx5pGz?+$civa{CS=dbE)mLHpWSqfbs|8T1FSB= zmK~%Hh$k-D#thUsIhN53CbW4L<3A>_;A|FuxZp>YI7YBw5Ss;Da3Y%rMDPx~Crog$ z4hI`pp+27*Ol)%v-ys&Tprf!8T(C=cD#RWoFIG+(L=+A5e7o5Z#3K4w8;>ZltIC(y+3|Nsbt3L{V RAFBrnUxUpH%r9kA0|2eTCb<9r delta 178 zcmbQuJDZm`z?+$civa{CS=dbEHCAEyWSqfbs|8T1FSB^ zksYKCh$pVu%M8>xIfu~-CbW4i<9tT2pg*$>TyPR|C`9lTiz72oyhIP@MdP=VgLbFYuAaq`YMu!w#m{!Tw1}+z{v8FnSp_&5-1B&Cjz87!0Hlg z*+J@nc;b>>%s`!!6B*55LYwC?S~7wKZ!!781@)LiA%blz2*Fz{>JUK|HVe2)XSN`S z;0$(GxZo3Z7ACNnuQ?szg2r4>GrPHMnSqX(#3ut*^NQOWnH$dIg3R5^6OGKZ;zi+Z X=XFDtmFEja=1$@B2XQAq<5L3w7SKhh delta 319 zcmeB?>yhIP@MdP=VgP|j7B&-k^;K9t87H#=acKoN10%~zW(Ee9N}w!Aod}TT0IN%| zWe2GP;)zRkF#~l@PGmHL32mOoXvqi`yv5`T7t~`8g$TB>AOvr*s6zx<*eu{Go!NpQ zf-~4%;et=tS(w0PzUFj<3mS7l&Ftp3Wd=HC5}yoM%`0x8YZ2UV9v5WpUY=-Vt`#o| YcRQ~evaCE`Ffw-vpFfB@`5B)Y0M^W0=>Px# diff --git a/examples/zips/service_connector_hub.zip b/examples/zips/service_connector_hub.zip index 0767db99b7e4ec95ada3428279905ff24d106161..e4745f843c5c306dfe8f3722d544d9651f016b43 100644 GIT binary patch delta 178 zcmX>qdQ_A*z?+$civa{!tz9SbnyN?|+9pc_acKoN10%~zW(Ee9N}w!Aod}TT0IN%L zW(TPQ;)xp$Favc?E@rfW32olSxSka(n89ub7hKC8!w44S;dEvOYMgAyB?IOcat5OC RpKyAi@B_Gf!2J1KY5>b%CN%&6 delta 178 zcmX>qdQ_A*z?+$civa{CS=dbEHC18xWSqfbs|8T1FSC1 znH{7Kh$n71zzozmxtP%gCbW4Q<9b%GUOhtruEsBy9(mkgL+$Qg*j Sf5Pd7!Vlo`0rTf`sR00at1;C8 diff --git a/examples/zips/service_mesh.zip b/examples/zips/service_mesh.zip index 5a6f6ee53bf4851c660c13d7e436bda7f0d6ef34..4893e1081d932bdb9f642de08765f21e6a5be5ce 100644 GIT binary patch delta 538 zcmZ4Dw#1D$z?+$civa{!tz9Sb>aa^1+9pdI+D>$kVg`xCT7gA?q7&!s0f|hGWpsoI zZC=WFj}a``#%u={Jk9(FBDjIo3ogjWX2=9qY06;=7cArmf~Y*kX#*GJ$ N$S+ocxaXge8UQB`e{lc+ delta 538 zcmZ4Dw#1D$z?+$civa{CS=dbE)nRA(WSq?Q$#|lJ6f;O9)(R{F6rDJ44@hKkETbb# zX!BCWdyHVgHfB4x;A!SZ5Wx+sUT{H1HbW+`N>dI~xL_ei5JcrMP8+x&Czmxur8|!W zOmK1=Pa{}27q2y3%!k(-EH;Z5q3$Mc16VAE&lsj|^EAE~Mn0g+Lpj19MzS$8F!1wE zp2#dSSw=t{uEt70ff=kZR@fOXxLml64J>FNh44tD)CP$2Ok}N?fx$AlP*w)4Xo9Q< z3jdd^KMFrv&Ig5mQ!WC9A1v>T!rvk9g~C@+a6{quD0rgqzoW^=D>|acA5uiM-#{r4 NMSigo#6AC%)Bru|s38CV diff --git a/examples/zips/stack_monitoring.zip b/examples/zips/stack_monitoring.zip index db19d1f746fb6a188a360212b753d288bdf79e6c..f85fc02163ea223129b7c22507b4cb69cc3a8983 100644 GIT binary patch delta 695 zcmez4^2dcYz?+$civa{!tz9Sb8mLGb+9pc_acKoN10%~zW(Ee9N}w#Nx{ z9z$UxpFdpTb-oUWhx&Gf^jI@8FgP$VFermP)GNpbSGGtnlo9O0UqXo(=G6;NhAWg5 zF@jj^Cl-jI@UU1hT%oOaC`92@Njp%0O%9Zi0o(9ZG7`d z_)IcBDC!Gj(op1o$n>Mguapf!k(ZTAN0DD9=ZhjQDj$o&pCa#$qW-UZK8k#w!a@}J RK*e|z`Adq8V1AgA8UWPLq16BY delta 695 zcmez4^2dcYz?+$civa{CS=dbEHBe#sWSqJq)#q3R~D zVU}VBX}ypE76J-ywr5me5(J8cg3W~zx|0vG%TB&8$2-|inuCjzff>z!$tRh^;U=iF zG% R0~O;@(wH diff --git a/examples/zips/storage.zip b/examples/zips/storage.zip index a35c1e1ba937b7dfbfb272ae9ce81bf8d8e2ee14..1141dbbb1f5da197ca45bc13127c2762c552950d 100644 GIT binary patch delta 2568 zcmZuy3pi5?96uYQHq)?+9FjZBd&na!Wn{}d=B-?h+ZU#Xx_xxpk~>OIDs%LZ(oK4Q znwp;C8a=5b_lh1wq;BbXr>;Ei**P4J?!IsPzW?v{`#-ny8&pnsT~43|`>Uyw0o9Ad z_LWjCG^aayE(IMup+<(0nhILvfTtjc-Lkh1Lm^f%mSGe`K&z79nBxS!<-Bh~IwKEScGikVQnm+Pjp!4w7Z_XbpGX@B2GR^kow|IvXvY)o*7MGu9#(wU4 z%x*QJT;*CV^?z(q&TGr-VYDCXbjf)CWqxr}&@r&5=7^+C)G%To*w*mPEwV9T$f^ET zuTEXwtzX{@1Q%Rcm*~pDkQ!;7Wo_Y4Lh!n?lV%+$v5eXjU3401@ub$=Q+_^gIjGQ5 zB2_^+{j80z8V~v} zxoo@bxtD=tSHj}W7oII|U#jz=`c@cy=K{SE=|RS-+@!xtzF3LlgU!^GJHHxpjLB|< z7s&&z&$6MoE|1FJYA;V46y9yJ+`MW*+`HNK*L+SW&m3Os#jA2NX>4vkZ^27RFiw99 zNRCi@F6g9R>@Mjq&lyObVatA-A`gxC5Zr7neN(~NQzfzV>^^1LT%P)%BXzZVxMEJ* zx;gKwk_9VTg70-)f7Ld)zUk&x#|?vr-pxwyh^;&)5_*6oB?pC}>Fpvd+I8@Sgfn<| z_0AjVioWdJMjhRZ4}s!;v#N(!51nKqcOO00xh6as^z(+6b-;k0%7W!6wnID*+RES{!U;YIy=6pU$$azGsG(f5Ks{=rkZ#Gvgi9<_&@N3@{us!x z-j8Ni+o85Mu{Fr@##)b!lf}Z4p=OpdVr67|9#(LXy^j_G7PHY)OdMyBjTVH>OrFU} zQly3@O!UMj4-B{K(NEAW_1A z71N=-5YlKeLeEq+L#mH{*o-y<02K)pSk_$XWVQ@u#TgACJ|wd5|UXd?zK5zdSGPH z!?ZS%GFiIT%Zjib*0yLJO=X)gB}!_)2lva*`rYgI$LIZdf4-m3_w)UJ-oG2HBY`@S zez2TEoeLpPv73il-;Pclb&l2>bp{uOCh8zP3WA2apeXE7moy^?P>>eAfe5Ndt~w^T zOX@?Z8ZwSGyd(oM3YO5^bi{_6Gyw?($MhsP=t7UdzzW7v9Q>8xOhuV&eP)px^~ zdF+)su=*++!>$>;qr)2Ja7MGhvmBsRRGP;=EI;RG3iQkbBg&jVROhBXZBk{6grm(g;QO@myS z1tssb*GK%(I_`V*Y=YfZV8!p(aMA=VnZtK~t2WG9lD1_)`JgZAU(2q*9|fO3n@q@J zy<^Ih?ut;UXoLKXYyE6-0{GltnaV4Caica1+#}P?>owsf;~;Yx);IH^l7up*#CzXU(C`(z5cy9hq@2 zB7;_##GX2GI_{yy_JOi8#_Y!W^-&wLTbupC$XW49Yj$0&G+5-aulN3~m@}7a!<3iu zfmR#u_=sA{jkw{YA%}W@7Sem{-?zVK4ht%O3XI_nX{syqI$8^J?AivhEl$Qhd|^6Z z{HOV)B7-5#;r)&EE4D2?`0UiK#rchl@m}{HKmW`Jo879uzF}0_7FKb_DUQ~AVW(4p zwaq35yYR%xNy+G-Fx>60<55>Vnyp_kyU(}qE%vAmTruU}Px$<{rZ(I9{zYNoI#G|| zs>7)p=AP_0!f;jgl{p^IsZV$QVK|)nVue;z=<_B2Ws!%p*S+j3p2u+U_$Tc7C*JQ* z)$gy(m2HeHUmshR9J{}%duwH~8@(^-+HHs3Tcwtjrx&zz){GrL*IY$!XgXiHEw*EM zb3DCmOqHk=tB$su{aCX<@-``bZPHL)O8)m-7Ct{Z`4PWd3C^yL5x3hy84gnJy@V&@ zz3W_~MgsnM`ow9kYy49KL^4d^DPSOy0bZKF9#F~rJZ$b-xy$gmBk_)4Lw}6#j)M>R z?HKcn02h~r5djBdQmo&?neNs>7*i!&jDnaranVt}EA*U!A%bOy4D$~4FWsT=u*z5v zJi603dkl`gaq{#S~)T;el5Df)yD=g4GJo58KZS}MrAeRvQC*-RLHrt4 z{$76>!IlPi5$vx5JP9@{Fo0lZ21*Hbe;}T3_E#Y!Xt|EM0J&qa?Y87N5(HV(AjlFj zM-Lk|p_<%sbD;L;gTI3qgn-Kf=PvJszc9vh2(l#vL~`K(GvF6IPZxkTD>s-&_U5Cm zYkWgJ8u~fHTlp94RR~b8Kw&@#3|8>SRaUUe80=E8QJ1dab+Ah$L|s}1li<={%_Hxa zcA?Y4nw@ed%(yp`fy|S+js>Sc8}s_wzitc!aiAg3Z|$(ep{zOZ6`i%8xDXzR4y;0~ zz#)4R-I}_4b1#HPzAVy31Kt`wq4bC~JaYZwX}1vrUmGq-fSlFLk{qX7kCns*icsZQo;fFML>_KE|f=_g3*PbM9k3@{-$Qw5HhQmP1nm|q7yr-9qKS1 zc^Ib{!;}vblA^abDL3J}gPVih#Lf3BJK?F0ho{<^P^=IZKllia72JNz?+$civa{!tz9SbYO+fj+9pdI+D^2UVg`vsnS(`uq7!HA28m1#V>EyX zZSG~9%M2FOWi^5erm+Swf(3W8nKJ`5PL5%h0rN%JT~YYe>~<*p+w2Ztz8r@d0BeaN ATmS$7 delta 156 zcmX>ia72JNz?+$civa{CS=dbE)nsS+WSq?Q$#|lz6f;O9${Z{L6rDI@H%Mf17^4A9 zXmc;)TxPJKE~^n-FpV{c5iGcy&72viadHg1445y%?ux>%X17D(-)46J^W`|y0P@!@ A`~Uy| diff --git a/examples/zips/usage_proxy.zip b/examples/zips/usage_proxy.zip index 4eacf946fb4b170e474b0cae9bd75201939a828a..f08b3efd1042047c3ba29dc928816c5dd2107703 100644 GIT binary patch delta 156 zcmaFF^N5Exz?+$civa{!tz9SbYO_lk+9pdI+D^2WVg`xCSb{}>q7&!r1BpzIWi)~b zZJx%sgb^%g%WMJ{tY8j<2wr5dWCm)S%*!eRR;0t~j>4bH>VU%k&gul_+pwtt0FbgG AX8-^I delta 156 zcmaFF^N5Exz?+$civa{CS=dbE)n;e;WSq?Q$#|l@6f;O9#u6+76rDI{A4p_!ETa)j zX!A72C5&J}TV@luUaa^1+9pdI+D>$kVg`xCT7gA?q7&!s1&K_KV>E^d zZJxoX!~_=H%WMi4{K*`~2o?-twPFTpoZQbU1Lm(|^+4fEusNdetJ$2v{DW+20N7b1 A82|tP delta 156 zcmaFP`<$0Iz?+$civa{CS=dbE)nRA(WSq?Q$#|lJ6f;O9)(R{F6rDJ4FGyr^9HTKz zX!8t4B_^=oUS?Cc;7{f-MzCNIs}(a)ZwQ?+9pc_acKoN10%~zW(Ee9N}w!Aod}TT0IQ3) zVF#%L;)#p)F#~l@PG&TP32mOwSj7YulwmQ43r4X-FoFfQvf3~MHBL@olL7OE*}PEr R^=!^4{3mR#V7?B!8UTqfC1C&n delta 178 zcmcb_cZrWTz?+$civa{CS=dbE)l*^lWSqfbs|8T1FSCI zh8?61h$k-E#|+dtIhoNECbW4zV-*uvP=>`EE*QlU!3Y-I%4)+5)HpeTO$N*tX7fVf R*RwgJ@Sm``g84e^Y5+HTF#!Mo diff --git a/examples/zips/vn_monitoring.zip b/examples/zips/vn_monitoring.zip index 234ce1ece1d34c9662dff5940d08730b92128f43..c2b844bdd3a9f440631f49cbd00adf80ea7c4f16 100644 GIT binary patch delta 326 zcmdlbwM&XOz?+$civa{!tz9Sb>at53+9pdI+D>$oVg`xCIUqzt#6^JWI6x{xZ~v{% zJjcYqP|d@@U^sapo65uqoD=`@fE5Fc*et;Kf(c~6TEc?J>|5(gmVwli45&!ImRi_4j*Y{d1sI3_z=NfL3Wt)?i0iWX;aZ4A$?+Wz7tL5=5Sd|E`8UO^qO3MHM delta 326 zcmdlbwM&XOz?+$civa{CS=dbE)n#Y-WSq?Q$#|lp6f;O9&H*7JA}#_{#{p6qdi!s6 z<~b$?hH4%L2E)k<*;FP@;GFoE2do%q#AX4;7fc`nCjVx(h6zr#W!VQ7`^RDi6WeUf z8p;S3oXiGM2(}#As=wbG>z@OyVgOpD1GGwGvIaZCB5QVLX0U!oE^B6>&66*3i*dqz pGHZtcs626ouc)?TNzw!0m#?lrSDtRR?(jz^X)e)d1q^Un2kj diff --git a/examples/zips/vulnerability_scanning_service.zip b/examples/zips/vulnerability_scanning_service.zip index 8fb6d78a34ece0d2e3d5c27210f9a99c0da03449..2909b5ce597df1628fabdfdc670a0b0e01e21737 100644 GIT binary patch delta 247 zcmX>ictnslz?+$civa{!tz9Sb+Nnqy+9pc_acKoN10%~zW(Ee9N}w!Aod}TT0ISRQ zVF#%L;)#cjFavc??qqa@32na07|je8G-h>&3pTPQGlB)5v-v22G-Fu6$Rx)Mw_ictnslz?+$civa{CS=dbEwNqjFWSqfbs|8T1FSCJ zhaIF2h$kL8!VJ_oxs%ZqCban~V>B~Z(3sU7F4)ML%m@~I&gP>8(u`pNBa<96+=|Je Z>`}xhyT~3)j50TlP-dW|ljm`$0RaAUI?Dh6 diff --git a/examples/zips/web_app_acceleration.zip b/examples/zips/web_app_acceleration.zip index 0f24ea7ef693591ef746febd5dfa81bf27c30bf9..a3b72ba425e21577018036e103bc1ce84bf05d7d 100644 GIT binary patch delta 178 zcmX>mbWDghz?+$civa{!tz9Sbny5$`+9pc_acKoN10%~zW(Ee9N}w!Aod}TT0IN%N zVh5=M;)&}HG6Qu^E@HHX32olOXvP8-e9LMJ7c^vxWdsXOWOrf)YMkuBAp_=rWe-5% Rr*n9s@Go(AgZT=aY5>+!CU*b; delta 178 zcmX>mbWDghz?+$civa{CS=dbEHBn*tWSqfbs|8T1FSC9 zi5;X4h$pT)$PCmuxroskCbW4AqZtcW@GYw?T+om$mJuvCk==K>hfm00tgq<=M diff --git a/examples/zips/web_app_firewall.zip b/examples/zips/web_app_firewall.zip index faacbad7d75c35ca4073d97eff003210f9f131fd..d9d5579af65684e0f229f30e608dd6adfb19bd86 100644 GIT binary patch delta 178 zcmew-`cITMz?+$civa{!tz9Sb8mLGb+9pc_acKoN10%~zW(Ee9N}w!Aod}TT0IN&1 zV+W}N;)%fbs|8T1FSC5 zjvb^9h$k*P!VJ_oIhWBICbW4yBNH1~a0|O7T<{Bf93xmTl+%tGsBv;WmkgM{mD2}> Sugv9%!tdj92lH=msR01Wz%up# diff --git a/examples/zips/web_application_acceleration_and_security.zip b/examples/zips/web_application_acceleration_and_security.zip index c74d51db7ac1e72522a4a3f133b959ddc9059098..9d91682a4decc8dcf7fd7ed566e2c408e5db8572 100644 GIT binary patch delta 155 zcmca?blHeEz?+$civa{!tz9Sbda_Fz+9pdI+D?p>Vg`v+g@Z+aq7!eN1c^*u!Waq@ z+Qd{P3>K>u4T6bnz9yQ(2o`h|4`&AIn>=4!2F%|lo{GYEl}JY6pOQ!b^K~WF0CF%U AM*si- delta 155 zcmca?blHeEz?+$civa{CS=dbE^<-!HWSq?Q$#`O{6f;PqDjX~V6rFhEBuHfP62?%N z&?crTVX#=OXb?