예제 #1
0
    def delete_pool(self, context, id):
        # Check if the pool is in use
        vip = context.session.query(Vip).filter_by(pool_id=id).first()
        if vip:
            raise loadbalancer.PoolInUse(pool_id=id)

        with context.session.begin(subtransactions=True):
            self._delete_pool_stats(context, id)
            pool_db = self._get_resource(context, Pool, id)
            context.session.delete(pool_db)
예제 #2
0
 def _handle_pool(self, context, pool, delete=False):
     vip_id = self.plugin.get_pool(context, pool['id']).get('vip_id', None)
     if vip_id:
         if delete:
             raise loadbalancer.PoolInUse(pool_id=pool['id'])
         else:
             vip = self.plugin.get_vip(context, vip_id)
             ext_vip = self._populate_vip_graph(context, vip)
             self._update_workflow(pool['id'], self.l4_action_name, ext_vip,
                                   context, delete, lb_db.Pool, pool['id'])
     else:
         if delete:
             self.plugin._delete_db_pool(context, pool['id'])
         else:
             # we keep the pool in PENDING_UPDATE
             # no point to modify it since it is not connected to vip yet
             pass
예제 #3
0
 def _ensure_pool_delete_conditions(self, context, pool_id):
     if context.session.query(Vip).filter_by(pool_id=pool_id).first():
         raise loadbalancer.PoolInUse(pool_id=pool_id)
 def get_exception_inuse(self, id=None):
     return loadbalancer.PoolInUse(pool_id=id)