X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FNBI.git;a=blobdiff_plain;f=osm_nbi%2Fauthconn_keystone.py;h=7f592700c581d2a8ae6726f689c3dfaa06192d25;hp=e9173063669c44a830b4d5f2b8459fb8c7e7c8d2;hb=37de09105822b2b4db8b0ebac1ec5994af5d0fd9;hpb=2d5a515d32cf20f526e5922fae130868c9710dc3 diff --git a/osm_nbi/authconn_keystone.py b/osm_nbi/authconn_keystone.py index e917306..7f59270 100644 --- a/osm_nbi/authconn_keystone.py +++ b/osm_nbi/authconn_keystone.py @@ -258,10 +258,11 @@ class AuthconnKeystone(Authconn): users = self.keystone.users.list() users = [{ "username": user.name, - "_id": user.id + "_id": user.id, + "id": user.id } for user in users if user.name != self.admin_username] - allowed_fields = ["_id", "username"] + allowed_fields = ["_id", "id", "username"] for key in filter_q.keys(): if key not in allowed_fields: continue @@ -273,14 +274,16 @@ class AuthconnKeystone(Authconn): projects = self.keystone.projects.list(user=user["_id"]) projects = [{ "name": project.name, - "_id": project.id + "_id": project.id, + "id": project.id } for project in projects] for project in projects: roles = self.keystone.roles.list(user=user["_id"], project=project["_id"]) roles = [{ "name": role.name, - "_id": role.id + "_id": role.id, + "id": role.id } for role in roles] project["roles"] = roles @@ -295,8 +298,7 @@ class AuthconnKeystone(Authconn): """ Get role list. - :return: returns the list of roles for the user in that project. If - the token is unscoped it returns None. + :return: returns the list of roles. """ try: roles_list = self.keystone.roles.list() @@ -347,10 +349,11 @@ class AuthconnKeystone(Authconn): self.logger.exception("Error during role deletion using keystone") raise AuthconnOperationException("Error during role deletion using Keystone") - def get_project_list(self): + def get_project_list(self, filter_q={}): """ Get all the projects. + :param filter_q: dictionary to filter project list. :return: list of projects """ try: @@ -360,6 +363,14 @@ class AuthconnKeystone(Authconn): "_id": project.id } for project in projects if project.name != self.admin_project] + allowed_fields = ["_id", "name"] + for key in filter_q.keys(): + if key not in allowed_fields: + continue + + projects = [project for project in projects + if filter_q[key] == project[key]] + return projects except ClientException: self.logger.exception("Error during user project listing using keystone")