"""
-__author__ = "Eduardo Sousa <esousa@whitestack.com>"
+__author__ = "Eduardo Sousa <esousa@whitestack.com>, " \
+ "Pedro de la Cruz Ramos <pdelacruzramos@altran.com>"
__date__ = "$27-jul-2018 23:59:59$"
-from authconn import Authconn, AuthException, AuthconnOperationException, AuthconnNotFoundException, \
+from osm_nbi.authconn import Authconn, AuthException, AuthconnOperationException, AuthconnNotFoundException, \
AuthconnConflictException
import logging
from keystoneauth1.exceptions.http import Conflict
from keystoneclient.v3 import client
from http import HTTPStatus
-from validation import is_valid_uuid
+from osm_nbi.validation import is_valid_uuid
class AuthconnKeystone(Authconn):
- def __init__(self, config, db, token_cache):
- Authconn.__init__(self, config, db, token_cache)
+ def __init__(self, config, db):
+ Authconn.__init__(self, config, db)
self.logger = logging.getLogger("nbi.authenticator.keystone")
user_id = user_obj.id
if user_info.get("password") or user_info.get("username") \
or user_info.get("add_project_role_mappings") or user_info.get("remove_project_role_mappings"):
+ ctime = user_obj._admin.get("created", 0) if hasattr(user_obj, "_admin") else 0
self.keystone.users.update(user_id, password=user_info.get("password"), name=user_info.get("username"),
- _admin={"created": user_obj._admin["created"], "modified": time.time()})
+ _admin={"created": ctime, "modified": time.time()})
for mapping in user_info.get("remove_project_role_mappings", []):
self.remove_role_from_user(user_id, mapping["project"], mapping["role"])
for mapping in user_info.get("add_project_role_mappings", []):
projects = [{
"name": project.name,
"_id": project.id,
- "_admin": project.to_dict().get("_admin", {}) # TODO: REVISE
+ "_admin": project.to_dict().get("_admin", {}), # TODO: REVISE
+ "quotas": project.to_dict().get("quotas", {}), # TODO: REVISE
} for project in projects]
if filter_q and filter_q.get("_id"):
"""
try:
result = self.keystone.projects.create(project_info["name"], self.project_domain_name,
- _admin=project_info["_admin"])
+ _admin=project_info["_admin"],
+ quotas=project_info.get("quotas", {})
+ )
return result.id
except ClientException as e:
# self.logger.exception("Error during project creation using keystone: {}".format(e))
:return: None
"""
try:
- self.keystone.projects.update(project_id, name=project_info["name"], _admin=project_info["_admin"])
+ self.keystone.projects.update(project_id, name=project_info["name"],
+ _admin=project_info["_admin"],
+ quotas=project_info.get("quotas", {})
+ )
except ClientException as e:
# self.logger.exception("Error during project update using keystone: {}".format(e))
raise AuthconnOperationException("Error during project update using Keystone: {}".format(e))