Ejemplo n.º 1
0
    def _get_metadata(self, user_id=None, tenant_id=None,
                      domain_id=None, group_id=None, session=None):
        # TODO(henry-nash): This method represents the last vestiges of the old
        # metadata concept in this driver.  Although we no longer need it here,
        # since the Manager layer uses the metadata concept across all
        # assignment drivers, we need to remove it from all of them in order to
        # finally remove this method.

        # We aren't given a session when called by the manager directly.
        if session is None:
            session = sql.get_session()

        q = session.query(RoleAssignment)
        q = q.filter_by(actor_id=user_id or group_id)
        q = q.filter_by(target_id=tenant_id or domain_id)
        refs = q.all()
        if not refs:
            raise exception.MetadataNotFound()

        metadata_ref = {}
        metadata_ref['roles'] = []
        for assignment in refs:
            role_ref = {}
            role_ref['id'] = assignment.role_id
            if assignment.inherited and (
                    assignment.type == AssignmentType.USER_DOMAIN or
                    assignment.type == AssignmentType.GROUP_DOMAIN):
                role_ref['inherited_to'] = 'projects'
            metadata_ref['roles'].append(role_ref)

        return metadata_ref
Ejemplo n.º 2
0
    def get_metadata(self,
                     user_id=None,
                     tenant_id=None,
                     domain_id=None,
                     group_id=None):
        session = self.get_session()

        if user_id:
            if tenant_id:
                q = session.query(UserProjectGrant)
                q = q.filter_by(project_id=tenant_id)
            elif domain_id:
                q = session.query(UserDomainGrant)
                q = q.filter_by(domain_id=domain_id)
            q = q.filter_by(user_id=user_id)
        elif group_id:
            if tenant_id:
                q = session.query(GroupProjectGrant)
                q = q.filter_by(project_id=tenant_id)
            elif domain_id:
                q = session.query(GroupDomainGrant)
                q = q.filter_by(domain_id=domain_id)
            q = q.filter_by(group_id=group_id)
        try:
            return q.one().data
        except sql.NotFound:
            raise exception.MetadataNotFound()
Ejemplo n.º 3
0
 def _get_metadata(self,
                   user_id=None,
                   tenant_id=None,
                   domain_id=None,
                   group_id=None,
                   session=None):
     # We aren't given a session when called by the manager directly.
     if session is None:
         session = db_session.get_session()
     if user_id:
         if tenant_id:
             q = session.query(UserProjectGrant)
             q = q.filter_by(project_id=tenant_id)
         elif domain_id:
             q = session.query(UserDomainGrant)
             q = q.filter_by(domain_id=domain_id)
         q = q.filter_by(user_id=user_id)
     elif group_id:
         if tenant_id:
             q = session.query(GroupProjectGrant)
             q = q.filter_by(project_id=tenant_id)
         elif domain_id:
             q = session.query(GroupDomainGrant)
             q = q.filter_by(domain_id=domain_id)
         q = q.filter_by(group_id=group_id)
     try:
         return q.one().data
     except sql.NotFound:
         raise exception.MetadataNotFound()
Ejemplo n.º 4
0
 def get_metadata(self, user_id, tenant_id):
     session = self.get_session()
     query = session.query(Metadata)
     query = query.filter_by(user_id=user_id)
     query = query.filter_by(tenant_id=tenant_id)
     metadata_ref = query.first()
     if metadata_ref is None:
         raise exception.MetadataNotFound()
     return metadata_ref.data
Ejemplo n.º 5
0
    def get_metadata(self, user_id, tenant_id=None, domain_id=None):
        session = self.get_session()

        if tenant_id:
            q = session.query(UserProjectMetadata)
            q = q.filter_by(tenant_id=tenant_id)
        elif domain_id:
            q = session.query(UserDomainMetadata)
            q = q.filter_by(domain_id=domain_id)
        q = q.filter_by(user_id=user_id)

        try:
            return q.one().data
        except sql.NotFound:
            raise exception.MetadataNotFound()
Ejemplo n.º 6
0
 def _get_metadata(self, user_id=None, tenant_id=None,
                   domain_id=None, group_id=None):
     try:
         if user_id:
             if tenant_id:
                 return self.db.get('metadata-%s-%s' % (tenant_id,
                                                        user_id))
             else:
                 return self.db.get('metadata-%s-%s' % (domain_id,
                                                        user_id))
         else:
             if tenant_id:
                 return self.db.get('metadata-%s-%s' % (tenant_id,
                                                        group_id))
             else:
                 return self.db.get('metadata-%s-%s' % (domain_id,
                                                        group_id))
     except exception.NotFound:
         raise exception.MetadataNotFound()
Ejemplo n.º 7
0
 def get_metadata(self, user_id, tenant_id):
     try:
         return self.db.get('metadata-%s-%s' % (tenant_id, user_id))
     except exception.NotFound:
         raise exception.MetadataNotFound()