From a87a79bd108ef20eb37a1e5005d67a21f478e864 Mon Sep 17 00:00:00 2001 From: Tao <104055472+teowa@users.noreply.github.com> Date: Wed, 8 Mar 2023 19:10:32 +0800 Subject: [PATCH 1/2] add AVNM connection resource delete check --- ...er_management_group_connection_resource.go | 28 +++++++++++++++++++ ...twork_manager_scope_connection_resource.go | 27 ++++++++++++++++++ ...anager_subscription_connection_resource.go | 28 +++++++++++++++++++ 3 files changed, 83 insertions(+) diff --git a/internal/services/network/network_manager_management_group_connection_resource.go b/internal/services/network/network_manager_management_group_connection_resource.go index 888ad088c36d..ea30b15a549a 100644 --- a/internal/services/network/network_manager_management_group_connection_resource.go +++ b/internal/services/network/network_manager_management_group_connection_resource.go @@ -234,6 +234,34 @@ func (r ManagerManagementGroupConnectionResource) Delete() sdk.ResourceFunc { return fmt.Errorf("deleting %s: %+v", id, err) } + deadline, ok := ctx.Deadline() + if !ok { + return fmt.Errorf("context had no deadline") + } + + // confirm the connection is fully deleted + stateChangeConf := &pluginsdk.StateChangeConf{ + Pending: []string{"Exists"}, + Target: []string{"NotFound"}, + Refresh: func() (result interface{}, state string, err error) { + resp, err := client.Get(ctx, id.ManagementGroupName, id.NetworkManagerConnectionName) + if err != nil { + if utils.ResponseWasNotFound(resp.Response) { + return "NotFound", "NotFound", nil + } + return "Error", "Error", err + } + return resp, "Exists", nil + }, + PollInterval: 3 * time.Second, + ContinuousTargetOccurence: 3, + Timeout: time.Until(deadline), + } + + if _, err = stateChangeConf.WaitForStateContext(ctx); err != nil { + return fmt.Errorf("waiting for %s to be deleted: %+v", id, err) + } + return nil }, } diff --git a/internal/services/network/network_manager_scope_connection_resource.go b/internal/services/network/network_manager_scope_connection_resource.go index 52c3fb6dc81c..26304d261dcb 100644 --- a/internal/services/network/network_manager_scope_connection_resource.go +++ b/internal/services/network/network_manager_scope_connection_resource.go @@ -253,6 +253,33 @@ func (r ManagerScopeConnectionResource) Delete() sdk.ResourceFunc { return fmt.Errorf("deleting %s: %+v", id, err) } + deadline, ok := ctx.Deadline() + if !ok { + return fmt.Errorf("context had no deadline") + } + + // confirm the connection is fully deleted + stateChangeConf := &pluginsdk.StateChangeConf{ + Pending: []string{"Exists"}, + Target: []string{"NotFound"}, + Refresh: func() (result interface{}, state string, err error) { + resp, err := client.Get(ctx, id.ResourceGroup, id.NetworkManagerName, id.ScopeConnectionName) + if err != nil { + if utils.ResponseWasNotFound(resp.Response) { + return "NotFound", "NotFound", nil + } + return "Error", "Error", err + } + return resp, "Exists", nil + }, + MinTimeout: 3 * time.Second, + ContinuousTargetOccurence: 3, + Timeout: time.Until(deadline), + } + + if _, err = stateChangeConf.WaitForStateContext(ctx); err != nil { + return fmt.Errorf("waiting for %s to be deleted: %+v", id, err) + } return nil }, } diff --git a/internal/services/network/network_manager_subscription_connection_resource.go b/internal/services/network/network_manager_subscription_connection_resource.go index 6ec2f947d1ff..f7ccccb0ae17 100644 --- a/internal/services/network/network_manager_subscription_connection_resource.go +++ b/internal/services/network/network_manager_subscription_connection_resource.go @@ -232,6 +232,34 @@ func (r ManagerSubscriptionConnectionResource) Delete() sdk.ResourceFunc { return fmt.Errorf("deleting %s: %+v", id, err) } + deadline, ok := ctx.Deadline() + if !ok { + return fmt.Errorf("context had no deadline") + } + + // confirm the connection is fully deleted + stateChangeConf := &pluginsdk.StateChangeConf{ + Pending: []string{"Exists"}, + Target: []string{"NotFound"}, + Refresh: func() (result interface{}, state string, err error) { + resp, err := client.Get(ctx, id.NetworkManagerConnectionName) + if err != nil { + if utils.ResponseWasNotFound(resp.Response) { + return "NotFound", "NotFound", nil + } + return "Error", "Error", err + } + return resp, "Exists", nil + }, + MinTimeout: 3 * time.Second, + ContinuousTargetOccurence: 3, + Timeout: time.Until(deadline), + } + + if _, err = stateChangeConf.WaitForStateContext(ctx); err != nil { + return fmt.Errorf("waiting for %s to be deleted: %+v", id, err) + } + return nil }, } From 5ff260aad9018cc6e1155ba99e9e3e3dba30c188 Mon Sep 17 00:00:00 2001 From: Tao <104055472+teowa@users.noreply.github.com> Date: Tue, 21 Mar 2023 13:10:22 +0800 Subject: [PATCH 2/2] link to https://github.com/Azure/azure-rest-api-specs/issues/23188 --- .../network_manager_management_group_connection_resource.go | 1 + .../network/network_manager_scope_connection_resource.go | 1 + .../network/network_manager_subscription_connection_resource.go | 1 + 3 files changed, 3 insertions(+) diff --git a/internal/services/network/network_manager_management_group_connection_resource.go b/internal/services/network/network_manager_management_group_connection_resource.go index ea30b15a549a..84cddb77d8c5 100644 --- a/internal/services/network/network_manager_management_group_connection_resource.go +++ b/internal/services/network/network_manager_management_group_connection_resource.go @@ -239,6 +239,7 @@ func (r ManagerManagementGroupConnectionResource) Delete() sdk.ResourceFunc { return fmt.Errorf("context had no deadline") } + // https://github.com/Azure/azure-rest-api-specs/issues/23188 // confirm the connection is fully deleted stateChangeConf := &pluginsdk.StateChangeConf{ Pending: []string{"Exists"}, diff --git a/internal/services/network/network_manager_scope_connection_resource.go b/internal/services/network/network_manager_scope_connection_resource.go index 26304d261dcb..79c7dcb56e27 100644 --- a/internal/services/network/network_manager_scope_connection_resource.go +++ b/internal/services/network/network_manager_scope_connection_resource.go @@ -258,6 +258,7 @@ func (r ManagerScopeConnectionResource) Delete() sdk.ResourceFunc { return fmt.Errorf("context had no deadline") } + // https://github.com/Azure/azure-rest-api-specs/issues/23188 // confirm the connection is fully deleted stateChangeConf := &pluginsdk.StateChangeConf{ Pending: []string{"Exists"}, diff --git a/internal/services/network/network_manager_subscription_connection_resource.go b/internal/services/network/network_manager_subscription_connection_resource.go index f7ccccb0ae17..77e9a259000e 100644 --- a/internal/services/network/network_manager_subscription_connection_resource.go +++ b/internal/services/network/network_manager_subscription_connection_resource.go @@ -237,6 +237,7 @@ func (r ManagerSubscriptionConnectionResource) Delete() sdk.ResourceFunc { return fmt.Errorf("context had no deadline") } + // https://github.com/Azure/azure-rest-api-specs/issues/23188 // confirm the connection is fully deleted stateChangeConf := &pluginsdk.StateChangeConf{ Pending: []string{"Exists"},