From c6a39a2506e0b6d8670f4870f02cf4b2c90be64a Mon Sep 17 00:00:00 2001 From: n-marton Date: Fri, 9 Mar 2018 15:50:15 +0100 Subject: [PATCH 1/2] fix for openstack member cleanup for multiple port cases --- .../openstack/openstack_loadbalancer.go | 23 +++++++------------ 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/pkg/cloudprovider/providers/openstack/openstack_loadbalancer.go b/pkg/cloudprovider/providers/openstack/openstack_loadbalancer.go index d2a85dab5f..6490b156d8 100644 --- a/pkg/cloudprovider/providers/openstack/openstack_loadbalancer.go +++ b/pkg/cloudprovider/providers/openstack/openstack_loadbalancer.go @@ -1423,18 +1423,6 @@ func (lbaas *LbaasV2) EnsureLoadBalancerDeleted(clusterName string, service *v1. } } - // get all members associated with each poolIDs - var memberIDs []string - for _, pool := range poolIDs { - membersList, err := getMembersByPoolID(lbaas.lb, pool) - if err != nil && !isNotFound(err) { - return fmt.Errorf("error getting pool members %s: %v", pool, err) - } - for _, member := range membersList { - memberIDs = append(memberIDs, member.ID) - } - } - // delete all monitors for _, monitorID := range monitorIDs { err := v2monitors.Delete(lbaas.lb, monitorID).ExtractErr() @@ -1449,9 +1437,14 @@ func (lbaas *LbaasV2) EnsureLoadBalancerDeleted(clusterName string, service *v1. // delete all members and pools for _, poolID := range poolIDs { + // get members for current pool + membersList, err := getMembersByPoolID(lbaas.lb, poolID) + if err != nil && !isNotFound(err) { + return fmt.Errorf("error getting pool members %s: %v", poolID, err) + } // delete all members for this pool - for _, memberID := range memberIDs { - err := v2pools.DeleteMember(lbaas.lb, poolID, memberID).ExtractErr() + for _, member := range membersList { + err := v2pools.DeleteMember(lbaas.lb, poolID, member.ID).ExtractErr() if err != nil && !isNotFound(err) { return err } @@ -1462,7 +1455,7 @@ func (lbaas *LbaasV2) EnsureLoadBalancerDeleted(clusterName string, service *v1. } // delete pool - err := v2pools.Delete(lbaas.lb, poolID).ExtractErr() + err = v2pools.Delete(lbaas.lb, poolID).ExtractErr() if err != nil && !isNotFound(err) { return err } From 5ec508f7e80f56c8c91f47c7bc374316fe17d366 Mon Sep 17 00:00:00 2001 From: Jesse Haka Date: Mon, 19 Mar 2018 23:28:39 +0200 Subject: [PATCH 2/2] fix isnotfound remove changes to isnotfound --- pkg/cloudprovider/providers/openstack/openstack_loadbalancer.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/cloudprovider/providers/openstack/openstack_loadbalancer.go b/pkg/cloudprovider/providers/openstack/openstack_loadbalancer.go index 6490b156d8..d3bcfe403c 100644 --- a/pkg/cloudprovider/providers/openstack/openstack_loadbalancer.go +++ b/pkg/cloudprovider/providers/openstack/openstack_loadbalancer.go @@ -366,7 +366,7 @@ func waitLoadbalancerDeleted(client *gophercloud.ServiceClient, loadbalancerID s err := wait.ExponentialBackoff(backoff, func() (bool, error) { _, err := loadbalancers.Get(client, loadbalancerID).Extract() if err != nil { - if err == ErrNotFound { + if isNotFound(err) { return true, nil } return false, err