def delete(self, context, pool, completor): lb_id = pool['loadbalancer_id'] lb_binding = nsxv_db.get_nsxv_lbaas_loadbalancer_binding( context.session, lb_id) pool_binding = nsxv_db.get_nsxv_lbaas_pool_binding( context.session, lb_id, pool['id']) edge_id = lb_binding['edge_id'] if not pool_binding: completor(success=True) return edge_pool_id = pool_binding['edge_pool_id'] listeners_to_update = [] try: if pool['listeners']: for listener in pool['listeners']: # the pool session persistence may affect the associated # pool application profile if (pool['session_persistence'] and listener['default_pool'] and listener['default_pool']['id'] == pool['id']): listeners_to_update.append(listener) listener_binding = nsxv_db.get_nsxv_lbaas_listener_binding( context.session, lb_id, listener['id']) vse = listener_mgr.listener_to_edge_vse( context, listener, lb_binding['vip_address'], None, listener_binding['app_profile_id']) with locking.LockManager.get_lock(edge_id): self.vcns.update_vip( edge_id, listener_binding['vse_id'], vse) self.vcns.delete_pool(edge_id, edge_pool_id) completor(success=True) nsxv_db.del_nsxv_lbaas_pool_binding( context.session, lb_id, pool['id']) for listener in listeners_to_update: # need to update the listeners too, now with no default pool listener['default_pool'] = None listener_mgr.update_app_profile( self.vcns, context, listener, edge_id) old_lb = lb_common.is_lb_on_router_edge( context, self.core_plugin, lb_binding['edge_id']) if old_lb: lb_common.update_pool_fw_rule(self.vcns, pool['id'], edge_id, self._get_lbaas_fw_section_id(), []) except nsxv_exc.VcnsApiException: completor(success=False) LOG.error('Failed to delete pool %s', pool['id'])
def delete(self, context, pool): listener = pool.listener lb_id = listener.loadbalancer_id lb_binding = nsxv_db.get_nsxv_lbaas_loadbalancer_binding( context.session, lb_id) pool_binding = nsxv_db.get_nsxv_lbaas_pool_binding( context.session, lb_id, listener.id, pool.id) listener_binding = nsxv_db.get_nsxv_lbaas_listener_binding( context.session, lb_id, listener.id) edge_id = lb_binding['edge_id'] edge_pool_id = pool_binding['edge_pool_id'] try: vse = listener_mgr.listener_to_edge_vse( listener, lb_binding['vip_address'], None, listener_binding['app_profile_id']) with locking.LockManager.get_lock(edge_id): self.vcns.update_vip(edge_id, listener_binding['vse_id'], vse) self.vcns.delete_pool(edge_id, edge_pool_id) self.lbv2_driver.pool.successful_completion( context, pool, delete=True) nsxv_db.del_nsxv_lbaas_pool_binding( context.session, lb_id, listener.id, pool.id) except nsxv_exc.VcnsApiException: self.lbv2_driver.pool.failed_completion(context, pool) LOG.error(_LE('Failed to delete pool %s'), pool['id'])
def delete(self, context, pool): listener = pool.listener lb_id = listener.loadbalancer_id lb_binding = nsxv_db.get_nsxv_lbaas_loadbalancer_binding( context.session, lb_id) pool_binding = nsxv_db.get_nsxv_lbaas_pool_binding( context.session, lb_id, listener.id, pool.id) listener_binding = nsxv_db.get_nsxv_lbaas_listener_binding( context.session, lb_id, listener.id) edge_id = lb_binding['edge_id'] edge_pool_id = pool_binding['edge_pool_id'] try: vse = listener_mgr.listener_to_edge_vse( listener, lb_binding['vip_address'], None, listener_binding['app_profile_id']) with locking.LockManager.get_lock(edge_id): self.vcns.update_vip(edge_id, listener_binding['vse_id'], vse) self.vcns.delete_pool(edge_id, edge_pool_id) self.lbv2_driver.pool.successful_completion(context, pool, delete=True) nsxv_db.del_nsxv_lbaas_pool_binding(context.session, lb_id, listener.id, pool.id) except nsxv_exc.VcnsApiException: self.lbv2_driver.pool.failed_completion(context, pool) LOG.error(_LE('Failed to delete pool %s'), pool['id'])
def delete(self, context, pool): lb_id = pool.loadbalancer_id lb_binding = nsxv_db.get_nsxv_lbaas_loadbalancer_binding( context.session, lb_id) pool_binding = nsxv_db.get_nsxv_lbaas_pool_binding( context.session, lb_id, pool.id) edge_id = lb_binding['edge_id'] if not pool_binding: self.lbv2_driver.pool.successful_completion(context, pool, delete=True) return edge_pool_id = pool_binding['edge_pool_id'] listeners_to_update = [] try: if pool.listeners: for listener in pool.listeners: # the pool session persistence may affect the associated # pool application profile if (pool.session_persistence and listener.default_pool and listener.default_pool.id == pool.id): listeners_to_update.append(listener) listener_binding = nsxv_db.get_nsxv_lbaas_listener_binding( context.session, lb_id, listener.id) vse = listener_mgr.listener_to_edge_vse( context, listener, lb_binding['vip_address'], None, listener_binding['app_profile_id']) with locking.LockManager.get_lock(edge_id): self.vcns.update_vip(edge_id, listener_binding['vse_id'], vse) self.vcns.delete_pool(edge_id, edge_pool_id) self.lbv2_driver.pool.successful_completion(context, pool, delete=True) nsxv_db.del_nsxv_lbaas_pool_binding(context.session, lb_id, pool.id) for listener in listeners_to_update: # need to update the listeners too, now with no default pool listener.default_pool = None listener_mgr.update_app_profile(self.vcns, context, listener, edge_id) except nsxv_exc.VcnsApiException: self.lbv2_driver.pool.failed_completion(context, pool) LOG.error('Failed to delete pool %s', pool.id)