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)
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)
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)