Skip to content

Commit 1347cd6

Browse files
Zhigang WangMaxrovr
authored andcommitted
Bug Fix - OS Management Hub: unregister managed instance on resource deletion
1 parent 4b00d89 commit 1347cd6

File tree

2 files changed

+37
-52
lines changed

2 files changed

+37
-52
lines changed

internal/integrationtest/os_management_hub_managed_instance_test.go

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@ import (
2020
var (
2121
OsManagementHubManagedInstanceRequiredOnlyResource = acctest.GenerateResourceFromRepresentationMap("oci_os_management_hub_managed_instance", "test_managed_instance", acctest.Required, acctest.Create, OsManagementHubManagedInstanceRepresentation)
2222

23-
//OsManagementHubManagedInstanceResourceConfig = acctest.GenerateResourceFromRepresentationMap("oci_os_management_hub_managed_instance", "test_managed_instance", acctest.Optional, acctest.Update, OsManagementHubManagedInstanceRepresentation)
24-
2523
OsManagementHubManagedInstanceSingularDataSourceRepresentation = map[string]interface{}{
2624
"managed_instance_id": acctest.Representation{RepType: acctest.Required, Create: utils.GetEnvSettingWithBlankDefault("osmh_managed_instance_ocid")},
2725
}
@@ -44,7 +42,7 @@ var (
4442
"location_not_equal_to": acctest.Representation{RepType: acctest.Optional, Create: []string{`OCI_COMPUTE`}},
4543
"managed_instance_id": acctest.Representation{RepType: acctest.Optional, Create: utils.GetEnvSettingWithBlankDefault("osmh_managed_instance_ocid")},
4644
"os_family": acctest.Representation{RepType: acctest.Optional, Create: []string{`ORACLE_LINUX_8`}},
47-
"software_source_id": acctest.Representation{RepType: acctest.Optional, Create: utils.GetEnvSettingWithBlankDefault("osmh_software_source_ocid")},
45+
"software_source_id": acctest.Representation{RepType: acctest.Optional, Create: ``},
4846
"status": acctest.Representation{RepType: acctest.Optional, Create: []string{`NORMAL`}},
4947
"agent_version": acctest.Representation{RepType: acctest.Optional, Create: `agentVersion`},
5048
"management_station": acctest.Representation{RepType: acctest.Optional, Create: []string{`oci_os_management_hub_management_station.test_management_station.id`}},
@@ -115,16 +113,15 @@ func TestOsManagementHubManagedInstanceResource_basic(t *testing.T) {
115113
ImportState: true,
116114
ImportStateVerify: true,
117115
ImportStateVerifyIgnore: []string{
118-
"managed_instance_id", "time_last_boot", "time_last_checkin",
116+
"managed_instance_id", "time_last_boot", "time_last_checkin", "time_updated",
119117
},
120118
ResourceName: resourceName,
121119
},
122-
123-
//delete before next Create
120+
// delete before next Create
124121
{
125122
Config: config + compartmentIdVariableStr,
126123
},
127-
//// verify Create with optionals
124+
// verify Create with optionals
128125
{
129126
Config: config + compartmentIdVariableStr +
130127
acctest.GenerateResourceFromRepresentationMap("oci_os_management_hub_managed_instance", "test_managed_instance", acctest.Optional, acctest.Create, OsManagementHubManagedInstanceRepresentation),
@@ -174,8 +171,7 @@ func TestOsManagementHubManagedInstanceResource_basic(t *testing.T) {
174171
{
175172
Config: config +
176173
acctest.GenerateDataSourceFromRepresentationMap("oci_os_management_hub_managed_instances", "test_managed_instances", acctest.Optional, acctest.Update, OsManagementHubManagedInstanceDataSourceRepresentation) +
177-
compartmentIdVariableStr +
178-
acctest.GenerateResourceFromRepresentationMap("oci_os_management_hub_managed_instance", "test_managed_instance", acctest.Optional, acctest.Update, OsManagementHubManagedInstanceRepresentation),
174+
compartmentIdVariableStr,
179175
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
180176
resource.TestCheckResourceAttr(datasourceName, "advisory_name.#", "1"),
181177
resource.TestCheckResourceAttr(datasourceName, "agent_version", "agentVersion"),
@@ -196,7 +192,6 @@ func TestOsManagementHubManagedInstanceResource_basic(t *testing.T) {
196192
resource.TestCheckResourceAttr(datasourceName, "management_station.#", "1"),
197193
resource.TestCheckResourceAttr(datasourceName, "management_station_not_equal_to.#", "1"),
198194
resource.TestCheckResourceAttr(datasourceName, "os_family.#", "1"),
199-
//resource.TestCheckResourceAttrSet(datasourceName, "software_source_id"),
200195
resource.TestCheckResourceAttr(datasourceName, "status.#", "1"),
201196

202197
resource.TestCheckResourceAttr(datasourceName, "managed_instance_collection.#", "1"),
@@ -207,7 +202,7 @@ func TestOsManagementHubManagedInstanceResource_basic(t *testing.T) {
207202
{
208203
Config: config +
209204
acctest.GenerateDataSourceFromRepresentationMap("oci_os_management_hub_managed_instance", "test_managed_instance", acctest.Required, acctest.Create, OsManagementHubManagedInstanceSingularDataSourceRepresentation) +
210-
compartmentIdVariableStr + acctest.GenerateResourceFromRepresentationMap("oci_os_management_hub_management_station", "test_management_station", acctest.Optional, acctest.Create, OsManagementHubManagementStationRepresentation),
205+
compartmentIdVariableStr,
211206
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
212207
resource.TestCheckResourceAttrSet(singularDatasourceName, "managed_instance_id"),
213208

internal/service/os_management_hub/os_management_hub_managed_instance_resource.go

Lines changed: 31 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ package os_management_hub
66
import (
77
"context"
88
"fmt"
9+
"log"
910
"strings"
1011
"time"
1112

@@ -17,6 +18,7 @@ import (
1718

1819
"github.com/oracle/terraform-provider-oci/internal/client"
1920
"github.com/oracle/terraform-provider-oci/internal/tfresource"
21+
"github.com/oracle/terraform-provider-oci/internal/utils"
2022
)
2123

2224
func OsManagementHubManagedInstanceResource() *schema.Resource {
@@ -332,14 +334,13 @@ func updateOsManagementHubManagedInstance(d *schema.ResourceData, m interface{})
332334
}
333335

334336
func deleteOsManagementHubManagedInstance(d *schema.ResourceData, m interface{}) error {
335-
//sync := &OsManagementHubManagedInstanceResourceCrud{}
336-
//sync.D = d
337-
//sync.Client = m.(*client.OracleClients).ManagedInstanceClient()
338-
//sync.DisableNotFoundRetries = true
339-
//sync.WorkRequestClient = m.(*client.OracleClients).OsManagementHubWorkRequestClient()
340-
//
341-
//return tfresource.DeleteResource(d, sync)
342-
return nil
337+
sync := &OsManagementHubManagedInstanceResourceCrud{}
338+
sync.D = d
339+
sync.Client = m.(*client.OracleClients).ManagedInstanceClient()
340+
sync.DisableNotFoundRetries = true
341+
sync.WorkRequestClient = m.(*client.OracleClients).OsManagementHubWorkRequestClient()
342+
343+
return tfresource.DeleteResource(d, sync)
343344
}
344345

345346
type OsManagementHubManagedInstanceResourceCrud struct {
@@ -404,21 +405,6 @@ func (s *OsManagementHubManagedInstanceResourceCrud) Create() error {
404405
return nil
405406
}
406407

407-
func (s *OsManagementHubManagedInstanceResourceCrud) getManagedInstanceFromWorkRequest(workId *string, retryPolicy *oci_common.RetryPolicy,
408-
actionTypeEnum oci_os_management_hub.ActionTypeEnum, timeout time.Duration) error {
409-
410-
// Wait until it finishes
411-
managedInstanceId, err := managedInstanceWaitForWorkRequest(workId, "managedinstance",
412-
actionTypeEnum, timeout, s.DisableNotFoundRetries, s.WorkRequestClient)
413-
414-
if err != nil {
415-
return err
416-
}
417-
s.D.SetId(*managedInstanceId)
418-
419-
return s.Get()
420-
}
421-
422408
func managedInstanceWorkRequestShouldRetryFunc(timeout time.Duration) func(response oci_common.OCIOperationResponse) bool {
423409
startTime := time.Now()
424410
stopTime := startTime.Add(timeout)
@@ -585,24 +571,28 @@ func (s *OsManagementHubManagedInstanceResourceCrud) Update() error {
585571
}
586572

587573
func (s *OsManagementHubManagedInstanceResourceCrud) Delete() error {
588-
//request := oci_os_management_hub.DeleteManagedInstanceRequest{}
589-
//
590-
//tmp := s.D.Id()
591-
//request.ManagedInstanceId = &tmp
592-
//
593-
//request.RequestMetadata.RetryPolicy = tfresource.GetRetryPolicy(s.DisableNotFoundRetries, "os_management_hub")
594-
//
595-
//response, err := s.Client.DeleteManagedInstance(context.Background(), request)
596-
//if err != nil {
597-
// return err
598-
//}
599-
//
600-
//workId := response.OpcWorkRequestId
601-
//// Wait until it finishes
602-
//_, delWorkRequestErr := managedInstanceWaitForWorkRequest(workId, "managedinstance",
603-
// oci_os_management_hub.ActionTypeDeleted, s.D.Timeout(schema.TimeoutDelete), s.DisableNotFoundRetries, s.WorkRequestClient)
604-
//return delWorkRequestErr
605-
return nil
574+
if utils.GetEnvSettingWithBlankDefault("osmh_skip_managed_instance_deletion") == "true" {
575+
log.Printf("[INFO] Skipping deletion of managed instance: %s", s.D.Id())
576+
return nil
577+
}
578+
579+
request := oci_os_management_hub.DeleteManagedInstanceRequest{}
580+
581+
tmp := s.D.Id()
582+
request.ManagedInstanceId = &tmp
583+
584+
request.RequestMetadata.RetryPolicy = tfresource.GetRetryPolicy(s.DisableNotFoundRetries, "os_management_hub")
585+
586+
response, err := s.Client.DeleteManagedInstance(context.Background(), request)
587+
if err != nil {
588+
return err
589+
}
590+
591+
workId := response.OpcWorkRequestId
592+
// Wait until it finishes
593+
_, delWorkRequestErr := managedInstanceWaitForWorkRequest(workId, "instance",
594+
oci_os_management_hub.ActionTypeUpdated, s.D.Timeout(schema.TimeoutDelete), s.DisableNotFoundRetries, s.WorkRequestClient)
595+
return delWorkRequestErr
606596
}
607597

608598
func (s *OsManagementHubManagedInstanceResourceCrud) SetData() error {

0 commit comments

Comments
 (0)