+ # users = self.keystone.users.list()
+ # user_obj = [user for user in users if user.id == user_id][0]
+ # result, _ = self.keystone.users.delete(user_obj)
+
+ result, detail = self.keystone.users.delete(user_id)
+ if result.status_code != 204:
+ raise ClientException("error {} {}".format(result.status_code, detail))
+
+ return True
+ except ClientException as e:
+ # self.logger.exception("Error during user deletion using keystone: {}".format(e))
+ raise AuthconnOperationException("Error during user deletion using Keystone: {}".format(e))
+
+ def get_user_list(self, filter_q=None):
+ """
+ Get user list.
+
+ :param filter_q: dictionary to filter user list by name (username is also admited) and/or _id
+ :return: returns a list of users.
+ """
+ try:
+ filter_name = None
+ if filter_q:
+ filter_name = filter_q.get("name") or filter_q.get("username")
+ users = self.keystone.users.list(name=filter_name)
+ users = [{
+ "username": user.name,
+ "_id": user.id,
+ "id": user.id
+ } for user in users if user.name != self.admin_username]
+
+ if filter_q and filter_q.get("_id"):
+ users = [user for user in users if filter_q["_id"] == user["_id"]]
+
+ for user in users:
+ projects = self.keystone.projects.list(user=user["_id"])
+ projects = [{
+ "name": project.name,
+ "_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
+ } for role in roles]
+ project["roles"] = roles
+
+ user["projects"] = projects
+
+ return users
+ except ClientException as e:
+ # self.logger.exception("Error during user listing using keystone: {}".format(e))
+ raise AuthconnOperationException("Error during user listing using Keystone: {}".format(e))
+
+ def get_role_list(self, filter_q=None):
+ """
+ Get role list.
+
+ :param filter_q: dictionary to filter role list by _id and/or name.
+ :return: returns the list of roles.
+ """
+ try:
+ filter_name = None
+ if filter_q:
+ filter_name = filter_q.get("name")
+ roles_list = self.keystone.roles.list(name=filter_name)
+
+ roles = [{
+ "name": role.name,
+ "_id": role.id
+ } for role in roles_list if role.name != "service"]
+
+ if filter_q and filter_q.get("_id"):
+ roles = [role for role in roles if filter_q["_id"] == role["_id"]]
+
+ return roles
+ except ClientException as e:
+ # self.logger.exception("Error during user role listing using keystone: {}".format(e))
+ raise AuthException("Error during user role listing using Keystone: {}".format(e),
+ http_code=HTTPStatus.UNAUTHORIZED)