Пример #1
0
    def delete(self, context, pool, completor):
        lb_id = pool['loadbalancer_id']
        pool_client = self.core_plugin.nsxlib.load_balancer.pool

        binding = nsx_db.get_nsx_lbaas_pool_binding(context.session, lb_id,
                                                    pool['id'])
        if binding:
            vs_id = binding.get('lb_vs_id')
            lb_pool_id = binding.get('lb_pool_id')

            if vs_id:
                # NOTE(salv-orlando): Guard against accidental compat breakages
                try:
                    listener = pool['listener'] or pool['listeners'][0]
                except IndexError:
                    # If listeners is an empty list we hit this exception
                    listener = None
                if listener:
                    self._process_vs_update(context, pool, listener, None,
                                            vs_id, completor)
            try:
                pool_client.delete(lb_pool_id)
            except nsxlib_exc.ResourceNotFound:
                pass
            except nsxlib_exc.ManagerError:
                completor(success=False)
                msg = (_('Failed to delete lb pool from nsx: %(pool)s') % {
                    'pool': lb_pool_id
                })
                raise n_exc.BadRequest(resource='lbaas-pool', msg=msg)
            nsx_db.delete_nsx_lbaas_pool_binding(context.session, lb_id,
                                                 pool['id'])

        completor(success=True)
Пример #2
0
    def delete(self, context, pool, completor):
        lb_id = pool['loadbalancer_id']
        pool_client = self.core_plugin.nsxlib.load_balancer.pool
        vs_client = self.core_plugin.nsxlib.load_balancer.virtual_server

        binding = nsx_db.get_nsx_lbaas_pool_binding(
            context.session, lb_id, pool['id'])
        if binding:
            vs_id = binding.get('lb_vs_id')
            lb_pool_id = binding.get('lb_pool_id')
            if vs_id:
                try:
                    vs_client.update(vs_id, pool_id='')
                except nsxlib_exc.ResourceNotFound:
                    pass
                except nsxlib_exc.ManagerError:
                    completor(success=False)
                    msg = _('Failed to remove lb pool %(pool)s from virtual '
                            'server %(vs)s') % {'pool': lb_pool_id,
                                                'vs': vs_id}
                    raise n_exc.BadRequest(resource='lbaas-pool', msg=msg)
            try:
                pool_client.delete(lb_pool_id)
            except nsxlib_exc.ResourceNotFound:
                pass
            except nsxlib_exc.ManagerError:
                completor(success=False)
                msg = (_('Failed to delete lb pool from nsx: %(pool)s') %
                       {'pool': lb_pool_id})
                raise n_exc.BadRequest(resource='lbaas-pool', msg=msg)
            nsx_db.delete_nsx_lbaas_pool_binding(context.session,
                                                 lb_id, pool['id'])

        completor(success=True)
Пример #3
0
    def delete(self, context, pool):
        lb_id = pool.loadbalancer_id
        pool_client = self.core_plugin.nsxlib.load_balancer.pool
        vs_client = self.core_plugin.nsxlib.load_balancer.virtual_server

        binding = nsx_db.get_nsx_lbaas_pool_binding(context.session, lb_id,
                                                    pool.id)
        if binding:
            vs_id = binding.get('lb_vs_id')
            lb_pool_id = binding.get('lb_pool_id')
            if vs_id:
                try:
                    vs_client.update(vs_id, pool_id='')
                except nsxlib_exc.ManagerError:
                    self.lbv2_driver.pool.failed_completion(context, pool)
                    msg = _('Failed to remove lb pool %(pool)s from virtual '
                            'server %(vs)s') % {
                                'pool': lb_pool_id,
                                'vs': vs_id
                            }
                    raise n_exc.BadRequest(resource='lbaas-pool', msg=msg)
            try:
                pool_client.delete(lb_pool_id)
            except nsxlib_exc.ManagerError:
                self.lbv2_driver.pool.failed_completion(context, pool)
                msg = (_('Failed to delete lb pool from nsx: %(pool)s') % {
                    'pool': lb_pool_id
                })
                raise n_exc.BadRequest(resource='lbaas-pool', msg=msg)
            nsx_db.delete_nsx_lbaas_pool_binding(context.session, lb_id,
                                                 pool.id)

        self.lbv2_driver.pool.successful_completion(context, pool, delete=True)
Пример #4
0
    def delete(self, context, pool):
        lb_id = pool.loadbalancer_id
        pool_client = self.core_plugin.nsxlib.load_balancer.pool
        vs_client = self.core_plugin.nsxlib.load_balancer.virtual_server
        service_client = self.core_plugin.nsxlib.load_balancer.service

        binding = nsx_db.get_nsx_lbaas_pool_binding(
            context.session, lb_id, pool.id)
        if binding:
            vs_id = binding['lb_vs_id']
            lb_pool_id = binding['lb_pool_id']
            try:
                vs_client.update(vs_id, pool_id='')
            except nsxlib_exc.ManagerError:
                self.lbv2_driver.pool.failed_completion(context, pool)
                msg = _('Failed to remove lb pool %(pool)s from virtual '
                        'server %(vs)s') % {'pool': lb_pool_id,
                                            'vs': vs_id}
                raise n_exc.BadRequest(resource='lbaas-pool', msg=msg)
            try:
                pool_client.delete(lb_pool_id)
            except nsxlib_exc.ManagerError:
                self.lbv2_driver.pool.failed_completion(context, pool)
                msg = (_('Failed to delete lb pool from nsx: %(pool)s') %
                       {'pool': lb_pool_id})
                raise n_exc.BadRequest(resource='lbaas-pool', msg=msg)
            nsx_db.delete_nsx_lbaas_pool_binding(context.session,
                                                 lb_id, pool.id)
            lb_binding = nsx_db.get_nsx_lbaas_loadbalancer_binding(
                context.session, lb_id)
            if lb_binding:
                lb_service_id = lb_binding['lb_service_id']
                try:
                    lb_service = service_client.get(lb_service_id)
                    vs_list = lb_service.get('virtual_server_ids')
                    if vs_list and vs_id in vs_list:
                        vs_list.remove(vs_id)
                    else:
                        LOG.debug('virtual server id %s is not in the lb '
                                  'service virtual server list %s',
                                  vs_id, vs_list)
                    service_client.update(lb_service_id,
                                          virtual_server_ids=vs_list)
                    if not vs_list:
                        service_client.delete(lb_service_id)
                        nsx_db.delete_nsx_lbaas_loadbalancer_binding(
                            context.session, lb_id)
                except nsxlib_exc.ManagerError:
                    self.lbv2_driver.pool.failed_completion(context, pool)
                    msg = (_('Failed to delete lb pool from nsx: %(pool)s') %
                           {'pool': lb_pool_id})
                    raise n_exc.BadRequest(resource='lbaas-pool', msg=msg)

        self.lbv2_driver.pool.successful_completion(
            context, pool, delete=True)