Skip to content

Commit 0738843

Browse files
shubham yadavMaxrovr
authored andcommitted
Bug fix - fixed backup type issue
1 parent f79ea1b commit 0738843

File tree

2 files changed

+88
-4
lines changed

2 files changed

+88
-4
lines changed

internal/integrationtest/database_database_test.go

Lines changed: 74 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,29 @@ var (
247247
"lifecycle": acctest.RepresentationGroup{RepType: acctest.Required, Group: databaseIgnoreDefinedTagsRepresentation},
248248
}
249249

250+
DatabaseUpdateToObjectStorageRepresentation = map[string]interface{}{
251+
"database": acctest.RepresentationGroup{RepType: acctest.Required, Group: databaseUpdateToObjectStorageRepresentation},
252+
"db_home_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_database_db_home.test_db_home.id}`},
253+
"source": acctest.Representation{RepType: acctest.Required, Create: `NONE`},
254+
"db_version": acctest.Representation{RepType: acctest.Optional, Create: `19.24.0.0`},
255+
"kms_key_id": acctest.Representation{RepType: acctest.Optional, Create: `${var.kms_key_id}`},
256+
//"kms_key_rotation": acctest.Representation{RepType: acctest.Optional, Update: `1`},
257+
"lifecycle": acctest.RepresentationGroup{RepType: acctest.Required, Group: databaseIgnoreDefinedTagsRepresentation},
258+
}
259+
260+
databaseUpdateToObjectStorageRepresentation = map[string]interface{}{
261+
"admin_password": acctest.Representation{RepType: acctest.Required, Create: `BEstrO0ng_#11`},
262+
"db_name": acctest.Representation{RepType: acctest.Required, Create: `myTestDb`},
263+
"character_set": acctest.Representation{RepType: acctest.Optional, Create: `AL32UTF8`},
264+
"db_backup_config": acctest.RepresentationGroup{RepType: acctest.Optional, Group: databaseUpdateToObjectStorageDbBackupConfigRepresentation},
265+
//"db_unique_name": acctest.Representation{RepType: acctest.Optional, Create: `myTestDb_exacs`}, //It can be auto generated
266+
"db_workload": acctest.Representation{RepType: acctest.Optional, Create: `OLTP`},
267+
"ncharacter_set": acctest.Representation{RepType: acctest.Optional, Create: `AL16UTF16`},
268+
"pdb_name": acctest.Representation{RepType: acctest.Optional, Create: `pdbName`},
269+
"sid_prefix": acctest.Representation{RepType: acctest.Optional, Create: `myTestDb`},
270+
// "tde_wallet_password": acctest.Representation{RepType: acctest.Optional, Create: `tdeWalletPassword`}, exadata doesn't support it.
271+
}
272+
250273
databaseUpdateRepresentation = map[string]interface{}{
251274
"admin_password": acctest.Representation{RepType: acctest.Required, Create: `BEstrO0ng_#11`},
252275
"db_name": acctest.Representation{RepType: acctest.Required, Create: `myTestDb`},
@@ -512,7 +535,11 @@ var (
512535
}
513536

514537
DatabaseDatabaseDatabaseDbBackupConfigDbrsBackupDestinationDetailsRepresentation = map[string]interface{}{
515-
"type": acctest.Representation{RepType: acctest.Optional, Create: `AWS_S3`, Update: `OBJECT_STORE`},
538+
"type": acctest.Representation{RepType: acctest.Optional, Create: `AWS_S3`},
539+
}
540+
541+
DatabaseUpdateToObjectStorageBackupDestinationDetailsRepresentation = map[string]interface{}{
542+
"type": acctest.Representation{RepType: acctest.Optional, Update: `OBJECT_STORE`},
516543
}
517544

518545
DbBackupConfigZdlraBackupDestinationDetailsRepresentation = map[string]interface{}{
@@ -546,6 +573,15 @@ var (
546573
"backup_destination_details": acctest.RepresentationGroup{RepType: acctest.Optional, Group: DatabaseDatabaseDatabaseDbBackupConfigDbrsBackupDestinationDetailsRepresentation},
547574
}
548575

576+
databaseUpdateToObjectStorageDbBackupConfigRepresentation = map[string]interface{}{
577+
"auto_backup_enabled": acctest.Representation{RepType: acctest.Optional, Create: `true`},
578+
"auto_backup_window": acctest.Representation{RepType: acctest.Optional, Create: `SLOT_TWO`},
579+
"recovery_window_in_days": acctest.Representation{RepType: acctest.Optional, Create: `10`},
580+
"run_immediate_full_backup": acctest.Representation{RepType: acctest.Optional, Create: `false`, Update: `true`},
581+
"backup_deletion_policy": acctest.Representation{RepType: acctest.Optional, Create: `DELETE_IMMEDIATELY`, Update: `DELETE_AFTER_RETENTION_PERIOD`},
582+
"backup_destination_details": acctest.RepresentationGroup{RepType: acctest.Optional, Group: DatabaseUpdateToObjectStorageBackupDestinationDetailsRepresentation},
583+
}
584+
549585
databaseDatabaseDbBackupConfigBackupDestinationDetailsRepresentation = map[string]interface{}{
550586
"type": acctest.Representation{RepType: acctest.Required, Create: `NFS`},
551587
"id": acctest.Representation{RepType: acctest.Optional, Create: `${oci_database_backup_destination.test_backup_destination.id}`},
@@ -920,9 +956,45 @@ func TestDatabaseDatabaseResource_update(t *testing.T) {
920956
},
921957
),
922958
},
923-
{
959+
{ //There is no Update in backup_up destination type
924960
Config: config + compartmentIdVariableStr + DatabaseDatabaseResourceDependencies + kmsKeyIdVariableStr + vaultIdVariableStr +
925961
acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Optional, acctest.Update, DatabaseUpdateRepresentation),
962+
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
963+
func(s *terraform.State) error {
964+
resourceData := s.Modules[0].Resources[resourceName].Primary.Attributes
965+
actualID := resourceData["id"]
966+
fmt.Printf("Validating Resource ID: Expected=%s, Got=%s\n", existingResourceId, actualID)
967+
resource.TestCheckResourceAttr(resourceName, "id", existingResourceId)
968+
return nil
969+
},
970+
resource.TestCheckResourceAttrSet(resourceName, "compartment_id"),
971+
resource.TestCheckResourceAttr(resourceName, "database.#", "1"),
972+
resource.TestCheckResourceAttr(resourceName, "database.0.character_set", "AL32UTF8"),
973+
resource.TestCheckResourceAttr(resourceName, "database.0.db_backup_config.#", "1"),
974+
resource.TestCheckResourceAttr(resourceName, "database.0.db_backup_config.0.auto_backup_enabled", "true"),
975+
resource.TestCheckResourceAttr(resourceName, "database.0.db_backup_config.0.auto_backup_window", "SLOT_TWO"),
976+
resource.TestCheckResourceAttr(resourceName, "database.0.db_backup_config.0.auto_full_backup_day", "SUNDAY"),
977+
resource.TestCheckResourceAttr(resourceName, "database.0.db_backup_config.0.recovery_window_in_days", "10"),
978+
resource.TestCheckResourceAttr(resourceName, "database.0.db_backup_config.0.run_immediate_full_backup", "true"),
979+
resource.TestCheckResourceAttr(resourceName, "database.0.db_backup_config.0.backup_deletion_policy", "DELETE_AFTER_RETENTION_PERIOD"),
980+
resource.TestCheckResourceAttr(resourceName, "database.0.db_backup_config.0.backup_destination_details.0.type", "AWS_S3"),
981+
resource.TestCheckResourceAttr(resourceName, "database.0.db_name", "myTestDb"),
982+
resource.TestCheckResourceAttrSet(resourceName, "database.0.db_unique_name"),
983+
resource.TestCheckResourceAttr(resourceName, "database.0.db_workload", "OLTP"),
984+
resource.TestCheckResourceAttr(resourceName, "database.0.ncharacter_set", "AL16UTF16"),
985+
resource.TestCheckResourceAttr(resourceName, "database.0.pdb_name", "pdbName"),
986+
resource.TestCheckResourceAttrSet(resourceName, "db_home_id"),
987+
resource.TestCheckResourceAttrSet(resourceName, "db_name"),
988+
resource.TestCheckResourceAttrSet(resourceName, "db_unique_name"),
989+
resource.TestCheckResourceAttr(resourceName, "db_version", "19.24.0.0"),
990+
resource.TestCheckResourceAttrSet(resourceName, "kms_key_id"),
991+
resource.TestCheckResourceAttr(resourceName, "source", "NONE"),
992+
resource.TestCheckResourceAttrSet(resourceName, "state"),
993+
),
994+
},
995+
{
996+
Config: config + compartmentIdVariableStr + DatabaseDatabaseResourceDependencies + kmsKeyIdVariableStr + vaultIdVariableStr +
997+
acctest.GenerateResourceFromRepresentationMap("oci_database_database", "test_database", acctest.Optional, acctest.Update, DatabaseUpdateToObjectStorageRepresentation),
926998
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
927999
func(s *terraform.State) error {
9281000
resourceData := s.Modules[0].Resources[resourceName].Primary.Attributes

internal/service/database/database_database_resource.go

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,9 @@ func DatabaseDatabaseResource() *schema.Resource {
170170
string(oci_database.BackupBackupDestinationTypeAwsS3),
171171
string(oci_database.BackupBackupDestinationTypeDbrs),
172172
string(oci_database.BackupBackupDestinationTypeObjectStore),
173+
string(oci_database.BackupDestinationDetailsTypeNfs),
174+
string(oci_database.BackupDestinationDetailsTypeRecoveryAppliance),
175+
string(oci_database.BackupDestinationDetailsTypeLocal),
173176
}, true),
174177
},
175178
"vpc_user": {
@@ -1135,8 +1138,17 @@ func (s *DatabaseDatabaseResourceCrud) mapToUpdateBackupDestinationDetails(field
11351138
result.Id = &tmp
11361139
}
11371140

1138-
if type_, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "type")); ok && s.D.HasChange(fmt.Sprintf(fieldKeyFormat, "type")) {
1139-
result.Type = oci_database.BackupDestinationDetailsTypeEnum(type_.(string))
1141+
typeKey := fmt.Sprintf(fieldKeyFormat, "type")
1142+
1143+
if type_, ok := s.D.GetOkExists(typeKey); ok {
1144+
if s.D.HasChange(typeKey) {
1145+
// Field changed, use the new value
1146+
result.Type = oci_database.BackupDestinationDetailsTypeEnum(type_.(string))
1147+
} else {
1148+
// Field not changed, get old value to preserve it
1149+
_, oldVal := s.D.GetChange(typeKey)
1150+
result.Type = oci_database.BackupDestinationDetailsTypeEnum(oldVal.(string))
1151+
}
11401152
}
11411153

11421154
if vpcPassword, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "vpc_password")); ok && s.D.HasChange(fmt.Sprintf(fieldKeyFormat, "vpc_password")) {

0 commit comments

Comments
 (0)