From 77a203c49f6fbfb866d3ddfbfbb4d4d46d8efc87 Mon Sep 17 00:00:00 2001 From: hacktastic Date: Wed, 21 Sep 2016 13:56:51 -0700 Subject: [PATCH] the api does not support filtering health monitors by pool_id, so /lbaas/healthmonitors?pool_id=abc123 will always return all health monitors in your OS tenant. fortunately, we can get the health monitor IDs from the query to /lbaas/pools and delete them --- .../openstack/openstack_loadbalancer.go | 24 +++---------------- 1 file changed, 3 insertions(+), 21 deletions(-) diff --git a/pkg/cloudprovider/providers/openstack/openstack_loadbalancer.go b/pkg/cloudprovider/providers/openstack/openstack_loadbalancer.go index 7f815e6ef9b..c95fc79f06c 100644 --- a/pkg/cloudprovider/providers/openstack/openstack_loadbalancer.go +++ b/pkg/cloudprovider/providers/openstack/openstack_loadbalancer.go @@ -658,8 +658,9 @@ func (lbaas *LbaasV2) EnsureLoadBalancerDeleted(clusterName string, service *api return err } - // get all pools associated with this loadbalancer + // get all pools (and health monitors) associated with this loadbalancer var poolIDs []string + var monitorIDs []string err = v2_pools.List(lbaas.network, v2_pools.ListOpts{LoadbalancerID: loadbalancer.ID}).EachPage(func(page pagination.Page) (bool, error) { poolsList, err := v2_pools.ExtractPools(page) if err != nil { @@ -668,6 +669,7 @@ func (lbaas *LbaasV2) EnsureLoadBalancerDeleted(clusterName string, service *api for _, pool := range poolsList { poolIDs = append(poolIDs, pool.ID) + monitorIDs = append(monitorIDs, pool.MonitorID) } return true, nil @@ -696,26 +698,6 @@ func (lbaas *LbaasV2) EnsureLoadBalancerDeleted(clusterName string, service *api } } - // get all monitors associated with each poolIDs - var monitorIDs []string - for _, poolID := range poolIDs { - err = v2_monitors.List(lbaas.network, v2_monitors.ListOpts{PoolID: poolID}).EachPage(func(page pagination.Page) (bool, error) { - monitorsList, err := v2_monitors.ExtractMonitors(page) - if err != nil { - return false, err - } - - for _, monitor := range monitorsList { - monitorIDs = append(monitorIDs, monitor.ID) - } - - return true, nil - }) - if err != nil { - return err - } - } - // delete all monitors for _, monitorID := range monitorIDs { err := v2_monitors.Delete(lbaas.network, monitorID).ExtractErr()