Skip to content

Commit 90caeec

Browse files
varmax2511rashik-bhasin
authored andcommitted
fix for management resources for external databases
1 parent c2a75bf commit 90caeec

7 files changed

+178
-6
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
- Support for Marketplace-Service Catalog
55
- Support for Extending DRG with local and cross-tenancy peering added
66

7+
### Fixed
8+
- Fixed update and destroy operations for management resources for external databases.
9+
710
## 4.24.0 (April 29, 2021)
811

912
### Added

oci/database_external_container_database_management_resource.go

Lines changed: 45 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,14 @@ func readDatabaseExternalContainerDatabaseManagement(d *schema.ResourceData, m i
7575
}
7676

7777
func deleteDatabaseExternalContainerDatabaseManagement(d *schema.ResourceData, m interface{}) error {
78-
return nil
78+
sync := &DatabaseExternalContainerDatabaseManagementResourceCrud{}
79+
sync.D = d
80+
sync.Client = m.(*OracleClients).databaseClient()
81+
sync.workRequestClient = m.(*OracleClients).workRequestClient
82+
sync.Res = &DatabaseExternalContainerDatabaseManagementResponse{}
83+
sync.DisableNotFoundRetries = true
84+
85+
return DeleteResource(d, sync)
7986
}
8087

8188
type DatabaseExternalContainerDatabaseManagementResponse struct {
@@ -167,7 +174,7 @@ func (s *DatabaseExternalContainerDatabaseManagementResourceCrud) Update() error
167174
if enableManagement, ok := s.D.GetOkExists("enable_management"); ok {
168175
operation = enableManagement.(bool)
169176
}
170-
operation = false
177+
171178
if operation {
172179
// enable operation
173180
request := oci_database.EnableExternalContainerDatabaseDatabaseManagementRequest{}
@@ -229,6 +236,42 @@ func (s *DatabaseExternalContainerDatabaseManagementResourceCrud) Update() error
229236
return nil
230237
}
231238

239+
func (s *DatabaseExternalContainerDatabaseManagementResourceCrud) Delete() error {
240+
var operation bool
241+
if enableManagement, ok := s.D.GetOkExists("enable_management"); ok {
242+
operation = enableManagement.(bool)
243+
}
244+
245+
if !operation {
246+
return nil
247+
}
248+
249+
// disable
250+
request := oci_database.DisableExternalContainerDatabaseDatabaseManagementRequest{}
251+
252+
if externalContainerDatabaseId, ok := s.D.GetOkExists("external_container_database_id"); ok {
253+
tmp := externalContainerDatabaseId.(string)
254+
request.ExternalContainerDatabaseId = &tmp
255+
}
256+
257+
request.RequestMetadata.RetryPolicy = getRetryPolicy(s.DisableNotFoundRetries, "database")
258+
259+
response, err := s.Client.DisableExternalContainerDatabaseDatabaseManagement(context.Background(), request)
260+
if err != nil {
261+
return err
262+
}
263+
264+
workId := response.OpcWorkRequestId
265+
if workId != nil {
266+
_, err = WaitForWorkRequestWithErrorHandling(s.workRequestClient, workId, "externalContainerDatabase", oci_work_requests.WorkRequestResourceActionTypeUpdated, s.D.Timeout(schema.TimeoutCreate), s.DisableNotFoundRetries)
267+
if err != nil {
268+
return err
269+
}
270+
}
271+
s.Res.disableResponse = &response
272+
return nil
273+
}
274+
232275
func (s *DatabaseExternalContainerDatabaseManagementResourceCrud) SetData() error {
233276
return nil
234277
}

oci/database_external_container_database_management_test.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,15 @@ func TestDatabaseExternalContainerDatabaseManagementResource_basic(t *testing.T)
7878
{
7979
Config: config + compartmentIdVariableStr + ExternalContainerDatabaseManagementResourceDependencies,
8080
},
81+
// verify update (Enable Database Management)
82+
{
83+
Config: config + compartmentIdVariableStr + ExternalContainerDatabaseManagementResourceDependencies +
84+
generateResourceFromRepresentationMap("oci_database_external_container_database_management", "test_external_container_database_management", Optional, Create, externalContainerDatabaseManagementRepresentation),
85+
Check: resource.ComposeAggregateTestCheckFunc(
86+
resource.TestCheckResourceAttrSet(resourceName, "external_container_database_id"),
87+
resource.TestCheckResourceAttrSet(resourceName, "external_database_connector_id"),
88+
),
89+
},
8190
// verify update (Disable Database Management)
8291
{
8392
Config: config + compartmentIdVariableStr + ExternalContainerDatabaseManagementResourceDependencies +

oci/database_external_non_container_database_management_resource.go

Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,14 @@ func readDatabaseExternalNonContainerDatabaseManagement(d *schema.ResourceData,
7575
}
7676

7777
func deleteDatabaseExternalNonContainerDatabaseManagement(d *schema.ResourceData, m interface{}) error {
78-
return nil
78+
sync := &DatabaseExternalNonContainerDatabaseManagementResourceCrud{}
79+
sync.D = d
80+
sync.Client = m.(*OracleClients).databaseClient()
81+
sync.workRequestClient = m.(*OracleClients).workRequestClient
82+
sync.Res = &DatabaseExternalNonContainerDatabaseManagementResponse{}
83+
sync.DisableNotFoundRetries = true
84+
85+
return DeleteResource(d, sync)
7986
}
8087

8188
type DatabaseExternalNonContainerDatabaseManagementResponse struct {
@@ -167,7 +174,7 @@ func (s *DatabaseExternalNonContainerDatabaseManagementResourceCrud) Update() er
167174
if enableManagement, ok := s.D.GetOkExists("enable_management"); ok {
168175
operation = enableManagement.(bool)
169176
}
170-
operation = false
177+
171178
if operation {
172179
// enable database management
173180
request := oci_database.EnableExternalNonContainerDatabaseDatabaseManagementRequest{}
@@ -229,6 +236,41 @@ func (s *DatabaseExternalNonContainerDatabaseManagementResourceCrud) Update() er
229236
return nil
230237
}
231238

239+
func (s *DatabaseExternalNonContainerDatabaseManagementResourceCrud) Delete() error {
240+
var operation bool
241+
if enableManagement, ok := s.D.GetOkExists("enable_management"); ok {
242+
operation = enableManagement.(bool)
243+
}
244+
245+
if !operation {
246+
return nil
247+
}
248+
// disable database management
249+
request := oci_database.DisableExternalNonContainerDatabaseDatabaseManagementRequest{}
250+
251+
if externalNonContainerDatabaseId, ok := s.D.GetOkExists("external_non_container_database_id"); ok {
252+
tmp := externalNonContainerDatabaseId.(string)
253+
request.ExternalNonContainerDatabaseId = &tmp
254+
}
255+
256+
request.RequestMetadata.RetryPolicy = getRetryPolicy(s.DisableNotFoundRetries, "database")
257+
258+
response, err := s.Client.DisableExternalNonContainerDatabaseDatabaseManagement(context.Background(), request)
259+
if err != nil {
260+
return err
261+
}
262+
263+
workId := response.OpcWorkRequestId
264+
if workId != nil {
265+
_, err = WaitForWorkRequestWithErrorHandling(s.workRequestClient, workId, "externalNonContainerDatabase", oci_work_requests.WorkRequestResourceActionTypeUpdated, s.D.Timeout(schema.TimeoutCreate), s.DisableNotFoundRetries)
266+
if err != nil {
267+
return err
268+
}
269+
}
270+
s.Res.disableResponse = &response
271+
return nil
272+
}
273+
232274
func (s *DatabaseExternalNonContainerDatabaseManagementResourceCrud) SetData() error {
233275
return nil
234276
}

oci/database_external_non_container_database_management_test.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,15 @@ func TestDatabaseExternalNonContainerDatabaseManagementResource_basic(t *testing
7070
{
7171
Config: config + compartmentIdVariableStr + ExternalNonContainerDatabaseManagementResourceDependencies,
7272
},
73+
// verify update (Enable Database Management)
74+
{
75+
Config: config + compartmentIdVariableStr + ExternalNonContainerDatabaseManagementResourceDependencies +
76+
generateResourceFromRepresentationMap("oci_database_external_non_container_database_management", "test_external_non_container_database_management", Optional, Create, externalNonContainerDatabaseManagementRepresentation),
77+
Check: resource.ComposeAggregateTestCheckFunc(
78+
resource.TestCheckResourceAttrSet(resourceName, "external_non_container_database_id"),
79+
resource.TestCheckResourceAttrSet(resourceName, "external_database_connector_id"),
80+
),
81+
},
7382
// verify update (Disable Database Management)
7483
{
7584
Config: config + compartmentIdVariableStr + ExternalNonContainerDatabaseManagementResourceDependencies +

oci/database_external_pluggable_database_management_resource.go

Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,14 @@ func readDatabaseExternalPluggableDatabaseManagement(d *schema.ResourceData, m i
6868
}
6969

7070
func deleteDatabaseExternalPluggableDatabaseManagement(d *schema.ResourceData, m interface{}) error {
71-
return nil
71+
sync := &DatabaseExternalPluggableDatabaseManagementResourceCrud{}
72+
sync.D = d
73+
sync.Client = m.(*OracleClients).databaseClient()
74+
sync.workRequestClient = m.(*OracleClients).workRequestClient
75+
sync.Res = &DatabaseExternalPluggableDatabaseManagementResponse{}
76+
sync.DisableNotFoundRetries = true
77+
78+
return DeleteResource(d, sync)
7279
}
7380

7481
type DatabaseExternalPluggableDatabaseManagementResponse struct {
@@ -157,7 +164,7 @@ func (s *DatabaseExternalPluggableDatabaseManagementResourceCrud) Update() error
157164
if enableManagement, ok := s.D.GetOkExists("enable_management"); ok {
158165
operation = enableManagement.(bool)
159166
}
160-
operation = false
167+
161168
if operation {
162169
// Enable Database Management
163170
request := oci_database.EnableExternalPluggableDatabaseDatabaseManagementRequest{}
@@ -215,6 +222,41 @@ func (s *DatabaseExternalPluggableDatabaseManagementResourceCrud) Update() error
215222
return nil
216223
}
217224

225+
func (s *DatabaseExternalPluggableDatabaseManagementResourceCrud) Delete() error {
226+
var operation bool
227+
if enableManagement, ok := s.D.GetOkExists("enable_management"); ok {
228+
operation = enableManagement.(bool)
229+
}
230+
231+
if !operation {
232+
return nil
233+
}
234+
// Disable Database Management
235+
request := oci_database.DisableExternalPluggableDatabaseDatabaseManagementRequest{}
236+
237+
if externalPluggableDatabaseId, ok := s.D.GetOkExists("external_pluggable_database_id"); ok {
238+
tmp := externalPluggableDatabaseId.(string)
239+
request.ExternalPluggableDatabaseId = &tmp
240+
}
241+
242+
request.RequestMetadata.RetryPolicy = getRetryPolicy(s.DisableNotFoundRetries, "database")
243+
244+
response, err := s.Client.DisableExternalPluggableDatabaseDatabaseManagement(context.Background(), request)
245+
if err != nil {
246+
return err
247+
}
248+
249+
workId := response.OpcWorkRequestId
250+
if workId != nil {
251+
_, err = WaitForWorkRequestWithErrorHandling(s.workRequestClient, workId, "externalPluggableDatabase", oci_work_requests.WorkRequestResourceActionTypeUpdated, s.D.Timeout(schema.TimeoutCreate), s.DisableNotFoundRetries)
252+
if err != nil {
253+
return err
254+
}
255+
}
256+
s.Res.disableResponse = &response
257+
return nil
258+
}
259+
218260
func (s *DatabaseExternalPluggableDatabaseManagementResourceCrud) SetData() error {
219261
return nil
220262
}

oci/database_external_pluggable_database_management_test.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,30 @@ func TestDatabaseExternalPluggableDatabaseManagementResource_basic(t *testing.T)
9494
{
9595
Config: config + compartmentIdVariableStr + ExternalPluggableDatabaseManagementResourceDependencies,
9696
},
97+
// Enablement of parent CDB
98+
{
99+
Config: config + compartmentIdVariableStr + ExternalPluggableDatabaseManagementResourceDependencies +
100+
generateResourceFromRepresentationMap("oci_database_external_container_database_management", "test_external_container_database_management", Optional, Create, externalContainerDatabaseManagementRepresentation),
101+
},
102+
// Enablement of PDB
103+
{
104+
Config: config + compartmentIdVariableStr + ExternalPluggableDatabaseManagementResourceDependencies +
105+
generateResourceFromRepresentationMap("oci_database_external_container_database_management", "test_external_container_database_management", Optional, Create, externalContainerDatabaseManagementRepresentation) +
106+
generateResourceFromRepresentationMap("oci_database_external_pluggable_database_management", "test_external_pluggable_database_management", Optional, Create, externalPluggableDatabaseManagementRepresentation),
107+
Check: resource.ComposeAggregateTestCheckFunc(
108+
resource.TestCheckResourceAttrSet(resourceName, "external_pluggable_database_id"),
109+
resource.TestCheckResourceAttrSet(resourceName, "external_database_connector_id"),
110+
),
111+
},
112+
// Verify Enablement of PDB
113+
{
114+
Config: config + compartmentIdVariableStr + ExternalPluggableDatabaseManagementResourceDependencies +
115+
generateResourceFromRepresentationMap("oci_database_external_container_database_management", "test_external_container_database_management", Optional, Create, externalContainerDatabaseManagementRepresentation) +
116+
generateResourceFromRepresentationMap("oci_database_external_pluggable_database_management", "test_external_pluggable_database_management", Optional, Create, externalPluggableDatabaseManagementRepresentation),
117+
Check: resource.ComposeAggregateTestCheckFunc(
118+
resource.TestCheckResourceAttr(resourcePDB, "database_management_config.0.database_management_status", "ENABLED"),
119+
),
120+
},
97121
// Disablement of parent CDB
98122
{
99123
Config: config + compartmentIdVariableStr + ExternalPluggableDatabaseManagementResourceDependencies +

0 commit comments

Comments
 (0)