X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FNBI.git;a=blobdiff_plain;f=osm_nbi%2Fauthconn_keystone.py;h=f819d3fb84664a3889568c4cde01bb64cefeec34;hp=7f592700c581d2a8ae6726f689c3dfaa06192d25;hb=44603906f6eeefb0546b9fa26cd0fb4a6e346c4a;hpb=1ac7f465e8e465980690daba3414a7aadb6fb0b4 diff --git a/osm_nbi/authconn_keystone.py b/osm_nbi/authconn_keystone.py index 7f59270..f819d3f 100644 --- a/osm_nbi/authconn_keystone.py +++ b/osm_nbi/authconn_keystone.py @@ -23,7 +23,7 @@ AuthconnKeystone implements implements the connector for Openstack Keystone and leverages the RBAC model, to bring it for OSM. """ -import time + __author__ = "Eduardo Sousa " __date__ = "$27-jul-2018 23:59:59$" @@ -32,12 +32,14 @@ from authconn import Authconn, AuthException, AuthconnOperationException import logging import requests +import time from keystoneauth1 import session from keystoneauth1.identity import v3 from keystoneauth1.exceptions.base import ClientException from keystoneauth1.exceptions.http import Conflict from keystoneclient.v3 import client from http import HTTPStatus +from validation import is_valid_uuid class AuthconnKeystone(Authconn): @@ -420,9 +422,20 @@ class AuthconnKeystone(Authconn): :raises AuthconnOperationException: if role assignment failed. """ try: - user_obj = list(filter(lambda x: x.name == user, self.keystone.users.list()))[0] - project_obj = list(filter(lambda x: x.name == project, self.keystone.projects.list()))[0] - role_obj = list(filter(lambda x: x.name == role, self.keystone.roles.list()))[0] + if is_valid_uuid(user): + user_obj = self.keystone.users.get(user) + else: + user_obj = self.keystone.users.list(name=user)[0] + + if is_valid_uuid(project): + project_obj = self.keystone.projects.get(project) + else: + project_obj = self.keystone.projects.list(name=project)[0] + + if is_valid_uuid(role): + role_obj = self.keystone.roles.get(role) + else: + role_obj = self.keystone.roles.list(name=role)[0] self.keystone.roles.grant(role_obj, user=user_obj, project=project_obj) except ClientException: