Skip to content

Commit a72e64c

Browse files
navg-orclvsin12
authored andcommitted
Added - support for rename database, added tests for extending database-name length.
1 parent e1998bb commit a72e64c

File tree

3 files changed

+64
-6
lines changed

3 files changed

+64
-6
lines changed

examples/database/adb/autonomous_database.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ resource "oci_database_autonomous_database" "autonomous_database" {
2828
compartment_id = var.compartment_ocid
2929
cpu_core_count = "1"
3030
data_storage_size_in_tbs = "1"
31-
db_name = "adbdb1f"
31+
db_name = "adbDatabaseName123"
3232

3333
#Optional
3434
db_version = data.oci_database_autonomous_db_versions.test_autonomous_db_versions.autonomous_db_versions[0].version

internal/integrationtest/database_autonomous_database_test.go

Lines changed: 57 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ var (
4949
}
5050

5151
adbName = utils.RandomString(1, utils.CharsetWithoutDigits) + utils.RandomString(13, utils.Charset)
52+
longAdbName1 = utils.RandomString(1, utils.CharsetWithoutDigits) + utils.RandomString(14, utils.Charset)
53+
longAdbName2 = utils.RandomString(1, utils.CharsetWithoutDigits) + utils.RandomString(28, utils.Charset)
5254
adbCloneName = utils.RandomString(1, utils.CharsetWithoutDigits) + utils.RandomString(13, utils.Charset)
5355

5456
autonomousDatabaseRepresentation = map[string]interface{}{
@@ -165,14 +167,15 @@ func TestDatabaseAutonomousDatabaseResource_basic(t *testing.T) {
165167
{
166168
Config: config + compartmentIdVariableStr + AutonomousDatabaseResourceDependencies,
167169
},
168-
// verify Create with optionals
170+
// verify Create with optionals and long dbName
169171
{
170172
Config: config + compartmentIdVariableStr + AutonomousDatabaseResourceDependencies +
171173
acctest.GenerateResourceFromRepresentationMap("oci_database_autonomous_database", "test_autonomous_database", acctest.Optional, acctest.Create,
172174
acctest.RepresentationCopyWithNewProperties(acctest.GetUpdatedRepresentationCopy("license_model", acctest.Representation{RepType: acctest.Optional, Create: `BRING_YOUR_OWN_LICENSE`}, autonomousDatabaseRepresentationMaxCpu), map[string]interface{}{
173175
"open_mode": acctest.Representation{RepType: acctest.Optional, Create: `READ_ONLY`, Update: `READ_ONLY`},
174176
"permission_level": acctest.Representation{RepType: acctest.Optional, Create: `RESTRICTED`, Update: `RESTRICTED`},
175177
"database_edition": acctest.Representation{RepType: acctest.Optional, Create: `STANDARD_EDITION`, Update: `STANDARD_EDITION`},
178+
"db_name": acctest.Representation{RepType: acctest.Required, Create: longAdbName1},
176179
}),
177180
),
178181
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
@@ -185,7 +188,7 @@ func TestDatabaseAutonomousDatabaseResource_basic(t *testing.T) {
185188
resource.TestCheckResourceAttr(resourceName, "data_safe_status", "NOT_REGISTERED"),
186189
resource.TestCheckResourceAttr(resourceName, "data_storage_size_in_tbs", "1"),
187190
resource.TestCheckResourceAttr(resourceName, "database_edition", "STANDARD_EDITION"),
188-
resource.TestCheckResourceAttr(resourceName, "db_name", adbName),
191+
resource.TestCheckResourceAttr(resourceName, "db_name", longAdbName1),
189192
resource.TestCheckResourceAttrSet(resourceName, "db_version"),
190193
resource.TestCheckResourceAttr(resourceName, "db_workload", "OLTP"),
191194
resource.TestCheckResourceAttr(resourceName, "display_name", "example_autonomous_database"),
@@ -230,6 +233,7 @@ func TestDatabaseAutonomousDatabaseResource_basic(t *testing.T) {
230233
"database_management_status": acctest.Representation{RepType: acctest.Optional, Create: `ENABLED`, Update: `ENABLED`},
231234
"operations_insights_status": acctest.Representation{RepType: acctest.Optional, Create: `NOT_ENABLED`, Update: `NOT_ENABLED`},
232235
"database_edition": acctest.Representation{RepType: acctest.Optional, Create: `STANDARD_EDITION`, Update: `STANDARD_EDITION`},
236+
"db_name": acctest.Representation{RepType: acctest.Required, Create: longAdbName1},
233237
}),
234238
),
235239
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
@@ -242,7 +246,7 @@ func TestDatabaseAutonomousDatabaseResource_basic(t *testing.T) {
242246
resource.TestCheckResourceAttr(resourceName, "data_safe_status", "NOT_REGISTERED"),
243247
resource.TestCheckResourceAttr(resourceName, "data_storage_size_in_tbs", "1"),
244248
resource.TestCheckResourceAttr(resourceName, "database_edition", "STANDARD_EDITION"),
245-
resource.TestCheckResourceAttr(resourceName, "db_name", adbName),
249+
resource.TestCheckResourceAttr(resourceName, "db_name", longAdbName1),
246250
resource.TestCheckResourceAttrSet(resourceName, "db_version"),
247251
resource.TestCheckResourceAttr(resourceName, "db_workload", "OLTP"),
248252
resource.TestCheckResourceAttr(resourceName, "display_name", "example_autonomous_database"),
@@ -280,6 +284,7 @@ func TestDatabaseAutonomousDatabaseResource_basic(t *testing.T) {
280284
"open_mode": acctest.Representation{RepType: acctest.Optional, Create: `READ_WRITE`, Update: `READ_WRITE`},
281285
"permission_level": acctest.Representation{RepType: acctest.Optional, Create: `UNRESTRICTED`, Update: `UNRESTRICTED`},
282286
"database_edition": acctest.Representation{RepType: acctest.Optional, Create: `ENTERPRISE_EDITION`, Update: `ENTERPRISE_EDITION`},
287+
"db_name": acctest.Representation{RepType: acctest.Required, Create: longAdbName1},
283288
})),
284289
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
285290
resource.TestCheckResourceAttr(resourceName, "admin_password", "BEstrO0ng_#11"),
@@ -291,7 +296,7 @@ func TestDatabaseAutonomousDatabaseResource_basic(t *testing.T) {
291296
resource.TestCheckResourceAttr(resourceName, "data_safe_status", "NOT_REGISTERED"),
292297
resource.TestCheckResourceAttr(resourceName, "data_storage_size_in_tbs", "1"),
293298
resource.TestCheckResourceAttr(resourceName, "database_edition", "ENTERPRISE_EDITION"),
294-
resource.TestCheckResourceAttr(resourceName, "db_name", adbName),
299+
resource.TestCheckResourceAttr(resourceName, "db_name", longAdbName1),
295300
resource.TestCheckResourceAttrSet(resourceName, "db_version"),
296301
resource.TestCheckResourceAttr(resourceName, "db_workload", "OLTP"),
297302
resource.TestCheckResourceAttr(resourceName, "display_name", "example_autonomous_database"),
@@ -325,6 +330,54 @@ func TestDatabaseAutonomousDatabaseResource_basic(t *testing.T) {
325330
),
326331
},
327332

333+
// verify rename-database to longer dbName
334+
{
335+
Config: config + compartmentIdVariableStr + compartmentIdUVariableStr + AutonomousDatabaseResourceDependencies +
336+
acctest.GenerateResourceFromRepresentationMap("oci_database_autonomous_database", "test_autonomous_database", acctest.Optional, acctest.Create,
337+
acctest.RepresentationCopyWithNewProperties(autonomousDatabaseRepresentationBYOL, map[string]interface{}{
338+
"compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id_for_update}`},
339+
"open_mode": acctest.Representation{RepType: acctest.Optional, Create: `READ_WRITE`, Update: `READ_WRITE`},
340+
"permission_level": acctest.Representation{RepType: acctest.Optional, Create: `UNRESTRICTED`, Update: `UNRESTRICTED`},
341+
"database_edition": acctest.Representation{RepType: acctest.Optional, Create: `ENTERPRISE_EDITION`, Update: `ENTERPRISE_EDITION`},
342+
"db_name": acctest.Representation{RepType: acctest.Required, Create: longAdbName2},
343+
})),
344+
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
345+
resource.TestCheckResourceAttr(resourceName, "db_name", longAdbName2),
346+
347+
func(s *terraform.State) (err error) {
348+
resId2, err = acctest.FromInstanceState(s, resourceName, "id")
349+
if resId != resId2 {
350+
return fmt.Errorf("resource recreated when it was supposed to be updated")
351+
}
352+
return err
353+
},
354+
),
355+
},
356+
357+
// verify rename-database to smaller dbName
358+
{
359+
Config: config + compartmentIdVariableStr + compartmentIdUVariableStr + AutonomousDatabaseResourceDependencies +
360+
acctest.GenerateResourceFromRepresentationMap("oci_database_autonomous_database", "test_autonomous_database", acctest.Optional, acctest.Create,
361+
acctest.RepresentationCopyWithNewProperties(autonomousDatabaseRepresentationBYOL, map[string]interface{}{
362+
"compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id_for_update}`},
363+
"open_mode": acctest.Representation{RepType: acctest.Optional, Create: `READ_WRITE`, Update: `READ_WRITE`},
364+
"permission_level": acctest.Representation{RepType: acctest.Optional, Create: `UNRESTRICTED`, Update: `UNRESTRICTED`},
365+
"database_edition": acctest.Representation{RepType: acctest.Optional, Create: `ENTERPRISE_EDITION`, Update: `ENTERPRISE_EDITION`},
366+
"db_name": acctest.Representation{RepType: acctest.Required, Create: adbName},
367+
})),
368+
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
369+
resource.TestCheckResourceAttr(resourceName, "db_name", adbName),
370+
371+
func(s *terraform.State) (err error) {
372+
resId2, err = acctest.FromInstanceState(s, resourceName, "id")
373+
if resId != resId2 {
374+
return fmt.Errorf("resource recreated when it was supposed to be updated")
375+
}
376+
return err
377+
},
378+
),
379+
},
380+
328381
// verify updates to updatable parameters
329382
{
330383
Config: config + compartmentIdVariableStr + AutonomousDatabaseResourceDependencies +

internal/service/database/database_autonomous_database_resource.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ func DatabaseAutonomousDatabaseResource() *schema.Resource {
4343
"db_name": {
4444
Type: schema.TypeString,
4545
Required: true,
46-
ForceNew: true,
46+
//ForceNew: true, /* Expectation: This should be false. This is coming from Spec - needs to be checked.*/
4747
},
4848

4949
// Optional
@@ -1215,6 +1215,11 @@ func (s *DatabaseAutonomousDatabaseResourceCrud) Update() error {
12151215
request.DisplayName = &tmp
12161216
}
12171217

1218+
if dbName, ok := s.D.GetOkExists("db_name"); ok && s.D.HasChange("db_name") {
1219+
tmp := dbName.(string)
1220+
request.DbName = &tmp
1221+
}
1222+
12181223
if freeformTags, ok := s.D.GetOkExists("freeform_tags"); ok {
12191224
request.FreeformTags = tfresource.ObjectMapToStringMap(freeformTags.(map[string]interface{}))
12201225
}

0 commit comments

Comments
 (0)