Ejemplo n.º 1
0
    def delete(self, id):
        """Deletes a pool member."""
        context = pecan.request.context.get('octavia_context')
        db_member = self._get_db_member(context.session, id)
        self._test_lb_and_listener_and_pool_statuses(context.session,
                                                     member=db_member)
        self.repositories.member.update(
            context.session, db_member.id,
            provisioning_status=constants.PENDING_DELETE)

        try:
            LOG.info(_LI("Sending Deletion of Member %s to handler"),
                     db_member.id)
            self.handler.delete(db_member)
        except Exception:
            with excutils.save_and_reraise_exception(
                    reraise=False), db_api.get_lock_session() as lock_session:
                self._reset_lb_listener_pool_statuses(
                    lock_session, member=db_member)
                # Member now goes to ERROR
                self.repositories.member.update(
                    lock_session, db_member.id,
                    provisioning_status=constants.ERROR)
        db_member = self.repositories.member.get(context.session, id=id)
        result = self._convert_db_to_type(db_member,
                                          member_types.MemberResponse)
        return member_types.MembersRootResponse(member=result)
Ejemplo n.º 2
0
 def get_all(self):
     """Lists all pool members of a pool."""
     context = pecan.request.context.get('octavia_context')
     db_members = self.repositories.member.get_all(
         context.session, pool_id=self.pool_id)
     result = self._convert_db_to_type(
         db_members, [member_types.MemberResponse])
     return member_types.MembersRootResponse(members=result)
Ejemplo n.º 3
0
    def get_all(self, fields=None):
        """Lists all pool members of a pool."""
        pcontext = pecan.request.context
        context = pcontext.get('octavia_context')

        pool = self._get_db_pool(context.session, self.pool_id)

        self._auth_validate_action(context, pool.project_id,
                                   constants.RBAC_GET_ALL)

        db_members, links = self.repositories.member.get_all(
            context.session, show_deleted=False,
            pool_id=self.pool_id,
            pagination_helper=pcontext.get(constants.PAGINATION_HELPER))
        result = self._convert_db_to_type(
            db_members, [member_types.MemberResponse])
        if fields is not None:
            result = self._filter_fields(result, fields)
        return member_types.MembersRootResponse(
            members=result, members_links=links)