Bug 1078 fixed by using try block for user update 29/9029/1
authorK Sai Kiran <saikiran.k@tataelxsi.co.in>
Wed, 27 May 2020 11:00:10 +0000 (16:30 +0530)
committertierno <alfonso.tiernosepulveda@telefonica.com>
Wed, 3 Jun 2020 09:48:13 +0000 (09:48 +0000)
Following the documentation of LDAP in devops repo, the user profiles are read only.
Try Except block resolves the issue. Raise error to NBI when change
for username/password is requested.

Change-Id: Id5919af575ec7cd128424fc53f7365d6cd4c29a7
Signed-off-by: K Sai Kiran <saikiran.k@tataelxsi.co.in>
osm_nbi/authconn_keystone.py

index 408b72f..05f803a 100644 (file)
@@ -345,8 +345,14 @@ class AuthconnKeystone(Authconn):
                     or user_info.get("add_project_role_mappings") or user_info.get("remove_project_role_mappings"):
                 # if user_index>0, it is an external domain, that should not be updated
                 ctime = user_obj._admin.get("created", 0) if hasattr(user_obj, "_admin") else 0
                     or user_info.get("add_project_role_mappings") or user_info.get("remove_project_role_mappings"):
                 # if user_index>0, it is an external domain, that should not be updated
                 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": ctime, "modified": time.time()})
+                try:
+                    self.keystone.users.update(user_id, password=user_info.get("password"),
+                                               name=user_info.get("username"),
+                                               _admin={"created": ctime, "modified": time.time()})
+                except Exception as e:
+                    if user_info.get("username") or user_info.get("password"):
+                        raise AuthconnOperationException("Error during username/password change: {}".format(str(e)))
+                    self.logger.error("Error during updating user profile: {}".format(str(e)))
 
             for mapping in user_info.get("remove_project_role_mappings", []):
                 self.remove_role_from_user(user_obj, mapping["project"], mapping["role"])
 
             for mapping in user_info.get("remove_project_role_mappings", []):
                 self.remove_role_from_user(user_obj, mapping["project"], mapping["role"])