예제 #1
0
 def get_all(self, tenant_id=None, project_id=None):
     """Lists all load balancers."""
     # NOTE(blogan): tenant_id and project_id are optional query parameters
     # tenant_id and project_id are the same thing.  tenant_id will be kept
     # around for a long amount of time.
     context = pecan.request.context.get('octavia_context')
     project_id = context.project_id or project_id or tenant_id
     load_balancers = self.repositories.load_balancer.get_all(
         context.session, project_id=project_id)
     result = self._convert_db_to_type(load_balancers,
                                       [lb_types.LoadBalancerResponse])
     return lb_types.LoadBalancersRootResponse(loadbalancers=result)
예제 #2
0
    def get_all(self, project_id=None, fields=None):
        """Lists all load balancers."""
        pcontext = pecan.request.context
        context = pcontext.get('octavia_context')

        query_filter = self._auth_get_all(context, project_id)

        load_balancers, links = self.repositories.load_balancer.get_all(
            context.session, show_deleted=False,
            pagination_helper=pcontext.get(constants.PAGINATION_HELPER),
            **query_filter)
        result = self._convert_db_to_type(
            load_balancers, [lb_types.LoadBalancerResponse])
        if fields is not None:
            result = self._filter_fields(result, fields)
        return lb_types.LoadBalancersRootResponse(
            loadbalancers=result, loadbalancers_links=links)
예제 #3
0
 def get_all(self, tenant_id=None, project_id=None):
     """Lists all load balancers."""
     # NOTE(blogan): tenant_id and project_id are optional query parameters
     # tenant_id and project_id are the same thing.  tenant_id will be kept
     # around for a long amount of time.
     context = pecan.request.context.get('octavia_context')
     if context.is_admin or CONF.auth_strategy == constants.NOAUTH:
         if project_id or tenant_id:
             project_id = {'project_id': project_id or tenant_id}
         else:
             project_id = {}
     else:
         project_id = {'project_id': context.project_id}
     load_balancers = self.repositories.load_balancer.get_all(
         context.session, **project_id)
     result = self._convert_db_to_type(load_balancers,
                                       [lb_types.LoadBalancerResponse])
     return lb_types.LoadBalancersRootResponse(loadbalancers=result)
예제 #4
0
    def _delete(self, id, cascade=False):
        """Deletes a load balancer."""
        context = pecan.request.context.get('octavia_context')
        db_lb = self._get_db_lb(context.session, id)
        self._test_lb_status(context.session, id,
                             lb_status=constants.PENDING_DELETE)

        try:
            LOG.info(_LI("Sending deleted Load Balancer %s to the handler"),
                     db_lb.id)
            self.handler.delete(db_lb, cascade)
        except Exception:
            with excutils.save_and_reraise_exception(reraise=False):
                self.repositories.load_balancer.update(
                    context.session, db_lb.id,
                    provisioning_status=constants.ERROR)
        result = self._convert_db_to_type(db_lb, lb_types.LoadBalancerResponse)
        return lb_types.LoadBalancersRootResponse(loadbalancer=result)