From aa15e29fb3f9f4e314f36961f8fdc45cec756cfc Mon Sep 17 00:00:00 2001
From: Chi Lo <cl566n@att.com>
Date: Wed, 9 Dec 2020 11:37:40 -0800
Subject: [PATCH] Refactor catching exception at services controller level

Change-Id: I17ba7b9f1142b9bc52e3facc0813cf962ecf87c0
---
 .../controllers/v1/orm/group/region_roles.py  |  7 ++---
 .../controllers/v1/orm/group/region_users.py  | 18 ++++++------
 .../controllers/v1/orm/group/regions.py       | 15 +++++-----
 .../controllers/v1/orm/group/roles.py         | 20 ++++++-------
 .../cms_rest/controllers/v1/orm/group/root.py | 19 +++++++------
 .../controllers/v1/orm/group/users.py         | 25 +++++++----------
 .../cms_rest/logic/group_logic.py             |  4 +--
 .../controllers/v1/orm/images/customers.py    | 14 +++++-----
 .../ims/controllers/v1/orm/images/enabled.py  | 28 ++++++-------------
 .../ims/controllers/v1/orm/images/images.py   | 16 +++++------
 .../ims/controllers/v1/orm/images/metadata.py |  9 ++----
 .../ims/controllers/v1/orm/images/regions.py  | 10 +++----
 .../image_manager/ims/logic/image_logic.py    | 15 +++++-----
 .../rms/controllers/lcp_controller.py         |  8 +++---
 .../region_manager/rms/controllers/logs.py    |  2 +-
 .../controllers/v2/orm/resources/groups.py    | 13 +++++----
 .../controllers/v2/orm/resources/metadata.py  | 16 +++++------
 .../controllers/v2/orm/resources/regions.py   |  2 +-
 .../controllers/v2/orm/resources/status.py    |  2 +-
 .../rms/controllers/v2/orm/resources/uuid.py  |  8 +++---
 .../rds/ordupdate/ord_notifier.py             | 21 ++++++++------
 .../rds/services/resource.py                  |  5 +---
 orm/tests/unit/ims/logic/test_image_logic.py  |  4 +--
 23 files changed, 129 insertions(+), 152 deletions(-)

diff --git a/orm/services/customer_manager/cms_rest/controllers/v1/orm/group/region_roles.py b/orm/services/customer_manager/cms_rest/controllers/v1/orm/group/region_roles.py
index 53a8baa0..7d210aee 100644
--- a/orm/services/customer_manager/cms_rest/controllers/v1/orm/group/region_roles.py
+++ b/orm/services/customer_manager/cms_rest/controllers/v1/orm/group/region_roles.py
@@ -49,9 +49,8 @@ class RegionRoleController(rest.RestController):
                 exception)
             raise err_utils.get_error(
                 request.transaction_id,
-                status_code=409,
-                message='Duplicate Entry-Group Region Roles already assigned.',
-                error_details=exception.message)
+                status_code=409.2,
+                message=exception.message)
 
         except ErrorStatus as exception:
             LOG.log_exception(
@@ -64,6 +63,6 @@ class RegionRoleController(rest.RestController):
                 "Exception - Failed in assign roles for region.", exception)
             raise err_utils.get_error(request.transaction_id,
                                       status_code=500,
-                                      error_details=str(exception))
+                                      message=str(exception))
 
         return result
diff --git a/orm/services/customer_manager/cms_rest/controllers/v1/orm/group/region_users.py b/orm/services/customer_manager/cms_rest/controllers/v1/orm/group/region_users.py
index 157898d2..d90ad1d9 100644
--- a/orm/services/customer_manager/cms_rest/controllers/v1/orm/group/region_users.py
+++ b/orm/services/customer_manager/cms_rest/controllers/v1/orm/group/region_users.py
@@ -6,7 +6,7 @@ from orm.common.orm_common.utils import api_error_utils as err_utils
 from orm.common.orm_common.utils import utils
 from orm.services.customer_manager.cms_rest.logger import get_logger
 from orm.common.orm_common.utils.error_base import \
-    ErrorStatus, NotFoundError
+    ErrorStatus, NotFoundError, ConflictError
 from orm.services.customer_manager.cms_rest.logic.group_logic import GroupLogic
 from orm.services.customer_manager.cms_rest.model.GroupModels import \
     RegionUser, RegionUserResultWrapper
@@ -44,17 +44,15 @@ class RegionUserController(rest.RestController):
                               group_id,
                               event_details=event_details)
 
-        except DBDuplicateEntry as exception:
+        except (ConflictError, DBDuplicateEntry) as exception:
             LOG.log_exception(
-                "DBDuplicateEntry - Group users already assigned.", exception)
-            print(exception.message)
+                "Duplicate Entry - Group users already assigned.", exception)
             raise err_utils.get_error(
                 request.transaction_id,
-                status_code=409,
-                message='Duplicate Entry - Group users already assigned.',
-                error_details=exception.message)
+                status_code=409.2,
+                message=exception.message)
 
-        except ErrorStatus as exception:
+        except (NotFoundError, ErrorStatus) as exception:
             LOG.log_exception(
                 "ErrorStatus - Failed to add users", exception)
             raise err_utils.get_error(request.transaction_id,
@@ -65,7 +63,7 @@ class RegionUserController(rest.RestController):
                 "Exception - Failed in add region users", exception)
             raise err_utils.get_error(request.transaction_id,
                                       status_code=500,
-                                      error_details=str(exception))
+                                      message=str(exception))
 
         return result
 
@@ -115,4 +113,4 @@ class RegionUserController(rest.RestController):
                               exception)
             raise err_utils.get_error(request.transaction_id,
                                       status_code=500,
-                                      error_details=str(exception))
+                                      message=str(exception))
diff --git a/orm/services/customer_manager/cms_rest/controllers/v1/orm/group/regions.py b/orm/services/customer_manager/cms_rest/controllers/v1/orm/group/regions.py
index 5040c6c0..8f3cea3e 100644
--- a/orm/services/customer_manager/cms_rest/controllers/v1/orm/group/regions.py
+++ b/orm/services/customer_manager/cms_rest/controllers/v1/orm/group/regions.py
@@ -3,7 +3,7 @@ from pecan import request, rest
 from wsmeext.pecan import wsexpose
 
 from orm.common.orm_common.utils import api_error_utils as err_utils
-from orm.common.orm_common.utils.error_base import ErrorStatus
+from orm.common.orm_common.utils.error_base import ErrorStatus, NotFoundError
 from orm.common.orm_common.utils import utils
 from orm.services.customer_manager.cms_rest.controllers.v1.orm.group.\
     region_roles import RegionRoleController
@@ -52,11 +52,10 @@ class RegionController(rest.RestController):
             LOG.log_exception(
                 "RegionController - Group Region already exists", exception)
             raise err_utils.get_error(request.transaction_id,
-                                      status_code=409,
-                                      message='Region already exists',
-                                      error_details=str(exception))
+                                      status_code=409.2,
+                                      message=str(exception))
 
-        except ErrorStatus as exception:
+        except (NotFoundError, ErrorStatus) as exception:
             LOG.log_exception(
                 "RegionController - Failed to add regions", exception)
             raise err_utils.get_error(request.transaction_id,
@@ -67,7 +66,7 @@ class RegionController(rest.RestController):
                 "RegionController - Failed in add regions", exception)
             raise err_utils.get_error(request.transaction_id,
                                       status_code=500,
-                                      error_details=str(exception))
+                                      message=str(exception))
 
         return result
 
@@ -100,7 +99,7 @@ class RegionController(rest.RestController):
             raise err_utils.get_error(request.transaction_id,
                                       message=str(exception),
                                       status_code=404)
-        except ErrorStatus as exception:
+        except (NotFoundError, ErrorStatus) as exception:
             LOG.log_exception("RegionController - Failed to delete region",
                               exception)
             raise err_utils.get_error(request.transaction_id,
@@ -111,4 +110,4 @@ class RegionController(rest.RestController):
                               exception)
             raise err_utils.get_error(request.transaction_id,
                                       status_code=500,
-                                      error_details=str(exception))
+                                      message=str(exception))
diff --git a/orm/services/customer_manager/cms_rest/controllers/v1/orm/group/roles.py b/orm/services/customer_manager/cms_rest/controllers/v1/orm/group/roles.py
index 846b3d87..9a9b037f 100644
--- a/orm/services/customer_manager/cms_rest/controllers/v1/orm/group/roles.py
+++ b/orm/services/customer_manager/cms_rest/controllers/v1/orm/group/roles.py
@@ -3,7 +3,8 @@ from pecan import request, rest
 from wsmeext.pecan import wsexpose
 
 from orm.common.orm_common.utils import api_error_utils as err_utils
-from orm.common.orm_common.utils.error_base import ErrorStatus
+from orm.common.orm_common.utils.error_base import \
+    ErrorStatus, InputValueError, NotFoundError, NotAllowedError
 from orm.common.orm_common.utils import utils
 from orm.services.customer_manager.cms_rest.logger import get_logger
 from orm.services.customer_manager.cms_rest.logic.group_logic import GroupLogic
@@ -45,9 +46,8 @@ class RoleController(rest.RestController):
                 "DBDuplicateEntry - Group Roles already assigned.", exception)
             raise err_utils.get_error(
                 request.transaction_id,
-                status_code=409,
-                message='Duplicate Entry - Group Roles already assigned.',
-                error_details=exception.message)
+                status_code=409.2,
+                message=exception.message)
 
         except ErrorStatus as exception:
             LOG.log_exception(
@@ -60,7 +60,7 @@ class RoleController(rest.RestController):
                 "Exception - Failed in assign roles", exception)
             raise err_utils.get_error(request.transaction_id,
                                       status_code=500,
-                                      error_details=str(exception))
+                                      message=str(exception))
 
         return result
 
@@ -92,11 +92,11 @@ class RoleController(rest.RestController):
                               group_id,
                               event_details=event_details)
 
-        except ValueError as exception:
+        except (InputValueError, ValueError) as exception:
             raise err_utils.get_error(request.transaction_id,
                                       message=str(exception),
                                       status_code=404)
-        except ErrorStatus as exception:
+        except (NotFoundError, ErrorStatus) as exception:
             LOG.log_exception("ErrorStatus - Failed to unassign roles",
                               exception)
             raise err_utils.get_error(request.transaction_id,
@@ -107,7 +107,7 @@ class RoleController(rest.RestController):
                               exception)
             raise err_utils.get_error(request.transaction_id,
                                       status_code=500,
-                                      error_details=str(exception))
+                                      message=str(exception))
 
     @wsexpose([RoleResult], str, str, str, str, rest_content_types='json')
     def get_all(self, group_id, region=None, customer=None, domain=None):
@@ -121,7 +121,7 @@ class RoleController(rest.RestController):
                                                              customer,
                                                              domain)
             return result
-        except ErrorStatus as exception:
+        except (NotAllowedError, ErrorStatus) as exception:
             LOG.log_exception("RoleController - Failed to GetRolelist",
                               exception)
             raise err_utils.get_error(request.transaction_id,
@@ -133,4 +133,4 @@ class RoleController(rest.RestController):
                               exception)
             raise err_utils.get_error(request.transaction_id,
                                       status_code=500,
-                                      error_details=str(exception))
+                                      message=str(exception))
diff --git a/orm/services/customer_manager/cms_rest/controllers/v1/orm/group/root.py b/orm/services/customer_manager/cms_rest/controllers/v1/orm/group/root.py
index adef0210..df876afe 100755
--- a/orm/services/customer_manager/cms_rest/controllers/v1/orm/group/root.py
+++ b/orm/services/customer_manager/cms_rest/controllers/v1/orm/group/root.py
@@ -3,7 +3,8 @@ import oslo_db
 from wsmeext.pecan import wsexpose
 
 from orm.common.orm_common.utils import api_error_utils as err_utils
-from orm.common.orm_common.utils.error_base import ErrorStatus
+from orm.common.orm_common.utils.error_base \
+    import ErrorStatus, NotFoundError, NotAllowedError
 from orm.common.orm_common.utils import utils
 from orm.services.customer_manager.cms_rest.controllers.v1.orm.group.regions \
     import RegionController
@@ -35,7 +36,7 @@ class GroupController(rest.RestController):
             LOG.info(
                 "GroupController - GetGroupDetails finished: " + str(result))
 
-        except ErrorStatus as exception:
+        except (NotFoundError, ErrorStatus) as exception:
             LOG.log_exception("GroupController - Failed to GetGroupDetails",
                               exception)
             raise err_utils.get_error(request.transaction_id,
@@ -47,7 +48,7 @@ class GroupController(rest.RestController):
                               exception)
             raise err_utils.get_error(request.transaction_id,
                                       status_code=500,
-                                      error_details=exception.message)
+                                      message=exception.message)
         return result
 
     @wsexpose(GroupResultWrapper, body=Group, rest_content_types='json',
@@ -112,7 +113,7 @@ class GroupController(rest.RestController):
                               request.headers, group_uuid,
                               event_details=event_details)
 
-        except ErrorStatus as exception:
+        except (NotFoundError, ErrorStatus) as exception:
             LOG.log_exception("Failed in UpdateGroup", exception)
             raise err_utils.get_error(request.transaction_id,
                                       message=exception.message,
@@ -123,7 +124,7 @@ class GroupController(rest.RestController):
                               exception)
             raise err_utils.get_error(request.transaction_id,
                                       status_code=500,
-                                      error_details=exception.message)
+                                      message=exception.message)
 
         return result
 
@@ -145,7 +146,7 @@ class GroupController(rest.RestController):
                                                             start,
                                                             limit)
             return result
-        except ErrorStatus as exception:
+        except (NotAllowedError, ErrorStatus) as exception:
             LOG.log_exception("GroupController - Failed to GetGrouplist",
                               exception)
             raise err_utils.get_error(request.transaction_id,
@@ -156,7 +157,7 @@ class GroupController(rest.RestController):
                               exception)
             raise err_utils.get_error(request.transaction_id,
                                       status_code=500,
-                                      error_details=exception.message)
+                                      message=exception.message)
 
     @wsexpose(None, str, rest_content_types='json', status_code=204)
     def delete(self, group_uuid):
@@ -173,7 +174,7 @@ class GroupController(rest.RestController):
                               request.headers, group_uuid,
                               event_details=event_details)
 
-        except ErrorStatus as exception:
+        except (ErrorStatus, NotAllowedError, NotFoundError) as exception:
             LOG.log_exception("GroupController - Failed to DeleteGroup",
                               exception)
             raise err_utils.get_error(request.transaction_id,
@@ -185,4 +186,4 @@ class GroupController(rest.RestController):
                               exception)
             raise err_utils.get_error(request.transaction_id,
                                       status_code=500,
-                                      error_details=exception.message)
+                                      message=exception.message)
diff --git a/orm/services/customer_manager/cms_rest/controllers/v1/orm/group/users.py b/orm/services/customer_manager/cms_rest/controllers/v1/orm/group/users.py
index e08577ec..3bf383eb 100644
--- a/orm/services/customer_manager/cms_rest/controllers/v1/orm/group/users.py
+++ b/orm/services/customer_manager/cms_rest/controllers/v1/orm/group/users.py
@@ -5,7 +5,8 @@ from wsmeext.pecan import wsexpose
 from orm.common.orm_common.utils import api_error_utils as err_utils
 from orm.common.orm_common.utils import utils
 from orm.services.customer_manager.cms_rest.logger import get_logger
-from orm.common.orm_common.utils.error_base import ErrorStatus, NotFoundError
+from orm.common.orm_common.utils.error_base import \
+    ErrorStatus, NotFoundError, ConflictError
 from orm.services.customer_manager.cms_rest.logic.group_logic import GroupLogic
 from orm.services.customer_manager.cms_rest.model.GroupModels import \
     User, UserResultWrapper
@@ -42,17 +43,15 @@ class UserController(rest.RestController):
                               group_id,
                               event_details=event_details)
 
-        except DBDuplicateEntry as exception:
+        except (ConflictError, DBDuplicateEntry) as exception:
             LOG.log_exception(
                 "DBDuplicateEntry - Group users already assigned.", exception)
-            print(exception.message)
             raise err_utils.get_error(
                 request.transaction_id,
-                status_code=409,
-                message='Duplicate Entry - Group users already assigned.',
-                error_details=exception.message)
+                status_code=409.2,
+                message=exception.message)
 
-        except ErrorStatus as exception:
+        except (NotFoundError, ErrorStatus) as exception:
             LOG.log_exception(
                 "ErrorStatus - Failed to add users", exception)
             raise err_utils.get_error(request.transaction_id,
@@ -63,7 +62,7 @@ class UserController(rest.RestController):
                 "Exception - Failed in add default users", exception)
             raise err_utils.get_error(request.transaction_id,
                                       status_code=500,
-                                      error_details=str(exception))
+                                      message=str(exception))
 
         return result
 
@@ -94,21 +93,17 @@ class UserController(rest.RestController):
             raise err_utils.get_error(request.transaction_id,
                                       message=str(exception),
                                       status_code=404)
-        except ErrorStatus as exception:
+
+        except (NotFoundError, ErrorStatus) as exception:
             LOG.log_exception("ErrorStatus - Failed to delete user from group",
                               exception)
             raise err_utils.get_error(request.transaction_id,
                                       message=exception.message,
                                       status_code=exception.status_code)
 
-        except NotFoundError as e:
-            raise err_utils.get_error(request.transaction_id,
-                                      message=e.message,
-                                      status_code=404)
-
         except Exception as exception:
             LOG.log_exception("Exception - Failed in delete default user",
                               exception)
             raise err_utils.get_error(request.transaction_id,
                                       status_code=500,
-                                      error_details=str(exception))
+                                      message=str(exception))
diff --git a/orm/services/customer_manager/cms_rest/logic/group_logic.py b/orm/services/customer_manager/cms_rest/logic/group_logic.py
index f75f579d..11d18575 100755
--- a/orm/services/customer_manager/cms_rest/logic/group_logic.py
+++ b/orm/services/customer_manager/cms_rest/logic/group_logic.py
@@ -421,8 +421,8 @@ class GroupLogic(object):
         try:
             group = datamanager.get_group_by_uuid_or_name(group_uuid)
             if group is None:
-                raise NotFoundStatus("group {} does not exist".format(
-                                     group_uuid))
+                raise NotFoundError("group {} does not exist".format(
+                                    group_uuid))
             user_record = datamanager.get_record('groups_user')
             result = user_record.remove_user_from_group(group_uuid, region_id,
                                                         user_domain, user)
diff --git a/orm/services/image_manager/ims/controllers/v1/orm/images/customers.py b/orm/services/image_manager/ims/controllers/v1/orm/images/customers.py
index be859b2a..98838685 100755
--- a/orm/services/image_manager/ims/controllers/v1/orm/images/customers.py
+++ b/orm/services/image_manager/ims/controllers/v1/orm/images/customers.py
@@ -1,6 +1,6 @@
 from orm.common.orm_common.injector import injector
 from orm.common.orm_common.utils import api_error_utils as err_utils
-from orm.common.orm_common.utils.error_base import ErrorStatus
+from orm.common.orm_common.utils.error_base import ErrorStatus, NotFoundError, ConflictError
 from orm.services.image_manager.ims.logger import get_logger
 from orm.services.image_manager.ims.persistency.wsme.models import CustomerWrapper, ImageWrapper
 from orm.services.image_manager.ims.utils import authentication as auth
@@ -35,7 +35,7 @@ class CustomerController(rest.RestController):
                               event_details=event_details)
             return result
 
-        except ErrorStatus as exception:
+        except (NotFoundError, ErrorStatus, ConflictError) as exception:
             LOG.log_exception("TenantController - Failed to add tenants", exception)
             raise err_utils.get_error(request.transaction_id,
                                       message=exception.message,
@@ -44,7 +44,7 @@ class CustomerController(rest.RestController):
             LOG.log_exception("TenantController - Failed to add tenants", exception)
             raise err_utils.get_error(request.transaction_id,
                                       status_code=500,
-                                      error_details=str(exception))
+                                      message=str(exception))
 
     @wsexpose(ImageWrapper, str, body=CustomerWrapper, rest_content_types='json', status_code=200)
     def put(self, image_id, cust_wrapper):
@@ -64,7 +64,7 @@ class CustomerController(rest.RestController):
                               event_details=event_details)
             return result
 
-        except ErrorStatus as exception:
+        except (NotFoundError, ErrorStatus, ConflictError) as exception:
             LOG.log_exception("TenantController - Failed to replace tenants", exception)
             raise err_utils.get_error(request.transaction_id,
                                       message=exception.message,
@@ -73,7 +73,7 @@ class CustomerController(rest.RestController):
             LOG.log_exception("TenantController - Failed to replace tenants", exception)
             raise err_utils.get_error(request.transaction_id,
                                       status_code=500,
-                                      error_details=str(exception))
+                                      message=str(exception))
 
     @wsexpose(None, str, str, rest_content_types='json', status_code=204)
     def delete(self, image_id, cust_id):
@@ -93,7 +93,7 @@ class CustomerController(rest.RestController):
                               request.headers, image_id,
                               event_details=event_details)
 
-        except ErrorStatus as exception:
+        except (NotFoundError, ErrorStatus) as exception:
             LOG.log_exception("TenantController - Failed to delete tenant", exception)
             raise err_utils.get_error(request.transaction_id,
                                       message=exception.message,
@@ -102,4 +102,4 @@ class CustomerController(rest.RestController):
             LOG.log_exception("TenantController - Failed to delete tenant", exception)
             raise err_utils.get_error(request.transaction_id,
                                       status_code=500,
-                                      error_details=str(exception))
+                                      message=str(exception))
diff --git a/orm/services/image_manager/ims/controllers/v1/orm/images/enabled.py b/orm/services/image_manager/ims/controllers/v1/orm/images/enabled.py
index a84c2fb6..519e4691 100755
--- a/orm/services/image_manager/ims/controllers/v1/orm/images/enabled.py
+++ b/orm/services/image_manager/ims/controllers/v1/orm/images/enabled.py
@@ -2,7 +2,7 @@
 
 from orm.common.orm_common.injector import injector
 from orm.common.orm_common.utils import api_error_utils as err_utils
-from orm.common.orm_common.utils.error_base import ErrorStatus
+from orm.common.orm_common.utils.error_base import ErrorStatus, NotFoundError
 from orm.services.image_manager.ims.logger import get_logger
 from orm.services.image_manager.ims.persistency.wsme.models import Enabled, ImageWrapper
 from orm.services.image_manager.ims.utils import authentication as auth
@@ -39,7 +39,7 @@ class EnabledController(rest.RestController):
                               event_details=event_details)
             return result
 
-        except ErrorStatus as exception:
+        except (NotFoundError, ErrorStatus) as exception:
             LOG.log_exception("Failed in EnableImage", exception)
             raise err_utils.get_error(request.transaction_id,
                                       message=exception.message,
@@ -49,26 +49,14 @@ class EnabledController(rest.RestController):
             LOG.log_exception("Failed in EnableImage", exception)
             raise err_utils.get_error(request.transaction_id,
                                       status_code=500,
-                                      error_details=str(exception))
+                                      message=str(exception))
 
-    @wsexpose(None, str, body=Enabled, rest_content_types='json',
-              status_code=200)
+    @wsexpose(None, str, body=Enabled, rest_content_types='json')
     def post(self, image_id, enabled):
         image_logic, utils = di.resolver.unpack(EnabledController)
         auth.authorize(request, "image:enable")
-        try:
-            LOG.debug("method not allowed only put allowed")
-            raise ErrorStatus("Method not allowed, only 'put' method allowed")
-            return None
 
-        except ErrorStatus as exception:
-            LOG.log_exception("Failed in EnableImage", exception)
-            raise err_utils.get_error(request.transaction_id,
-                                      message=exception.message,
-                                      status_code=exception.status_code)
-
-        except Exception as exception:
-            LOG.log_exception("Failed in EnableImage", exception)
-            raise err_utils.get_error(request.transaction_id,
-                                      status_code=500,
-                                      error_details=str(exception))
+        message = "Post method not allowed to enable image"
+        raise err_utils.get_error(request.transaction_id,
+                                  message=message,
+                                  status_code=405)
diff --git a/orm/services/image_manager/ims/controllers/v1/orm/images/images.py b/orm/services/image_manager/ims/controllers/v1/orm/images/images.py
index 0fcc965e..ee7e3fe8 100755
--- a/orm/services/image_manager/ims/controllers/v1/orm/images/images.py
+++ b/orm/services/image_manager/ims/controllers/v1/orm/images/images.py
@@ -2,7 +2,7 @@ import oslo_db
 
 from orm.common.orm_common.injector import injector
 from orm.common.orm_common.utils import api_error_utils as err_utils
-from orm.common.orm_common.utils.error_base import ConflictError, ErrorStatus, NotFoundError
+from orm.common.orm_common.utils.error_base import ConflictError, ErrorStatus, NotFoundError, NotAllowedError
 from orm.services.image_manager.ims.controllers.v1.orm.images.customers import CustomerController
 from orm.services.image_manager.ims.controllers.v1.orm.images.enabled import EnabledController
 from orm.services.image_manager.ims.controllers.v1.orm.images.regions import RegionController
@@ -38,7 +38,7 @@ class ImageController(rest.RestController):
         if invalid_extra_param:
             raise err_utils.get_error(request.transaction_id,
                                       message="URL has invalid extra param '{}' ".format(invalid_extra_param),
-                                      status_code=405)
+                                      status_code=400)
         try:
             LOG.info("ImageController - Create image: " + str(image_wrapper.image.name))
             image_wrapper.image.owner = request.headers.get('X-RANGER-Owner') or ''
@@ -77,7 +77,7 @@ class ImageController(rest.RestController):
             LOG.log_exception("ImageController - Failed to CreateImage", exception)
             raise err_utils.get_error(request.transaction_id,
                                       status_code=500,
-                                      error_details=str(exception))
+                                      message=str(exception))
 
     @wsexpose(ImageWrapper, str, body=ImageWrapper, rest_content_types='json', status_code=200)
     def put(self, image_id, image_wrapper):
@@ -113,7 +113,7 @@ class ImageController(rest.RestController):
             LOG.log_exception("ImageController - Failed to UpdateImage", exception)
             raise err_utils.get_error(request.transaction_id,
                                       status_code=500,
-                                      error_details=str(exception))
+                                      message=str(exception))
 
     @wsexpose(ImageWrapper, str, str, str, str, str, rest_content_types='json')
     def get(self, image_uuid):
@@ -135,7 +135,7 @@ class ImageController(rest.RestController):
             LOG.log_exception("ImageController - Failed to GetImageDetails", exception)
             raise err_utils.get_error(request.transaction_id,
                                       status_code=500,
-                                      error_details=str(exception))
+                                      message=str(exception))
 
     @wsexpose(ImageSummaryResponse, str, str, str, rest_content_types='json')
     def get_all(self, visibility=None, region=None, customer=None):
@@ -158,7 +158,7 @@ class ImageController(rest.RestController):
             LOG.log_exception("ImageController - Failed to GetImagelist", exception)
             raise err_utils.get_error(request.transaction_id,
                                       status_code=500,
-                                      error_details=str(exception))
+                                      message=str(exception))
 
     @wsexpose(None, str, rest_content_types='json', status_code=204)
     def delete(self, image_uuid):
@@ -175,7 +175,7 @@ class ImageController(rest.RestController):
                               request.headers, image_uuid,
                               event_details=event_details)
 
-        except (ErrorStatus, NotFoundError) as exp:
+        except (ErrorStatus, NotFoundError, NotAllowedError) as exp:
             LOG.log_exception("ImageController - Failed to delete image", exp)
             raise err_utils.get_error(request.transaction_id,
                                       message=str(exp),
@@ -185,7 +185,7 @@ class ImageController(rest.RestController):
             LOG.log_exception("ImageController - Failed to delete image", exp)
             raise err_utils.get_error(request.transaction_id,
                                       status_code=500,
-                                      error_details=str(exp))
+                                      message=str(exp))
 
     '''
     @expose()
diff --git a/orm/services/image_manager/ims/controllers/v1/orm/images/metadata.py b/orm/services/image_manager/ims/controllers/v1/orm/images/metadata.py
index b4a2497e..f0d8e7c6 100644
--- a/orm/services/image_manager/ims/controllers/v1/orm/images/metadata.py
+++ b/orm/services/image_manager/ims/controllers/v1/orm/images/metadata.py
@@ -29,19 +29,14 @@ class MetadataController(rest.RestController):
             LOG.info("MetadataController - metadata added")
             return "OK"
 
-        except NotFoundError as exception:
+        except (NotFoundError, ErrorStatus) as exception:
             LOG.error("MetadataController - failed to add metadata: ", exception)
             raise err_utils.get_error(request.transaction_id,
                                       message=str(exception),
                                       status_code=exception.status_code)
 
-        except ErrorStatus as exception:
-            LOG.error("MetadataController - Failed to add metadata", exception)
-            raise err_utils.get_error(request.transaction_id,
-                                      message=str(exception),
-                                      status_code=exception.status_code)
         except Exception as exception:
             LOG.error("MetadataController - Failed to add metadata", exception)
             raise err_utils.get_error(request.transaction_id,
                                       status_code=500,
-                                      error_details=str(exception))
+                                      message=str(exception))
diff --git a/orm/services/image_manager/ims/controllers/v1/orm/images/regions.py b/orm/services/image_manager/ims/controllers/v1/orm/images/regions.py
index 11c0293e..439c7853 100755
--- a/orm/services/image_manager/ims/controllers/v1/orm/images/regions.py
+++ b/orm/services/image_manager/ims/controllers/v1/orm/images/regions.py
@@ -46,7 +46,7 @@ class RegionController(rest.RestController):
                               event_details=event_details)
             return result
 
-        except ErrorStatus as exception:
+        except (NotFoundError, ErrorStatus) as exception:
             LOG.log_exception("RegionController - Failed to add region", exception)
             raise err_utils.get_error(request.transaction_id,
                                       message=str(exception),
@@ -55,7 +55,7 @@ class RegionController(rest.RestController):
             LOG.log_exception("RegionController - Failed to add region", exception)
             raise err_utils.get_error(request.transaction_id,
                                       status_code=500,
-                                      error_details=str(exception))
+                                      message=str(exception))
 
     @wsexpose(RegionWrapper, str, body=RegionWrapper, rest_content_types='json', status_code=200)
     def put(self, image_id, region_wrapper):  # add regions to image
@@ -77,7 +77,7 @@ class RegionController(rest.RestController):
                               event_details=event_details)
             return result
 
-        except ErrorStatus as exception:
+        except (NotFoundError, ErrorStatus) as exception:
             LOG.log_exception("RegionController - Failed to replace region", exception)
             raise err_utils.get_error(request.transaction_id,
                                       message=str(exception),
@@ -86,7 +86,7 @@ class RegionController(rest.RestController):
             LOG.log_exception("RegionController - Failed to replace region", exception)
             raise err_utils.get_error(request.transaction_id,
                                       status_code=500,
-                                      error_details=str(exception))
+                                      message=str(exception))
 
     @wsexpose(None, str, str, str, rest_content_types='json', status_code=204)
     def delete(self, image_id, region_name, force_delete='False'):
@@ -117,4 +117,4 @@ class RegionController(rest.RestController):
             LOG.log_exception("RegionController - Failed to delete region", exception)
             raise err_utils.get_error(request.transaction_id,
                                       status_code=500,
-                                      error_details=str(exception))
+                                      message=str(exception))
diff --git a/orm/services/image_manager/ims/logic/image_logic.py b/orm/services/image_manager/ims/logic/image_logic.py
index 7839aa45..6f19b8a7 100755
--- a/orm/services/image_manager/ims/logic/image_logic.py
+++ b/orm/services/image_manager/ims/logic/image_logic.py
@@ -345,7 +345,7 @@ def add_customers(image_uuid, customers, transaction_id):
     except Exception as exp:
         if 'conflicts with persistent instance' in str(exp) or \
                 'Duplicate entry' in str(exp):
-            raise ErrorStatus("Duplicate Customer for Image")
+            raise ConflictError("Duplicate Customer for Image")
         LOG.log_exception("ImageLogic - Failed to add Customers", exp)
         datamanager.rollback()
         raise
@@ -363,7 +363,7 @@ def replace_customers(image_uuid, customers, transaction_id):
             raise NotFoundError('image {0} not found'.format(image_uuid))
 
         if sql_image.visibility != "shared":
-            raise ValueError('Customer can only be replaced with shared Image')
+            raise ErrorStatus('Customer can only be replaced with shared Image')
 
         existing_region_names = sql_image.get_existing_region_names()
         sql_image.remove_all_customers()
@@ -384,8 +384,8 @@ def replace_customers(image_uuid, customers, transaction_id):
     except Exception as exp:
         if 'conflicts with persistent instance' in str(exp) or \
                 'Duplicate entry' in str(exp):
-            raise ConflictError("Duplicate Customer for Image")
-        LOG.log_exception("ImageLogic - Failed to add Customers", exp)
+            raise ConflictError("Duplicate customer for image")
+        LOG.log_exception("ImageLogic - Failed to replace customers", exp)
         datamanager.rollback()
         raise
 
@@ -402,7 +402,7 @@ def delete_customer(image_uuid, customer_id, transaction_id):
             raise NotFoundError('image {0} not found'.format(image_uuid))
 
         if sql_image.visibility != "shared":
-            raise ValueError(
+            raise ErrorStatus(
                 "Customer can only be deleted from shared image {}".format(
                     image_uuid))
 
@@ -579,11 +579,10 @@ def enable_image(image_uuid, int_enabled, transaction_id):
                 image_uuid))
 
         sql_image.enabled = int_enabled
-
         existing_region_names = sql_image.get_existing_region_names()
 
-        datamanager.flush()  # i want to get any exception created by this
-        # insert method
+        # Flush to see if there is any exception
+        datamanager.flush()
 
         send_to_rds_if_needed(sql_image, existing_region_names, "put",
                               transaction_id)
diff --git a/orm/services/region_manager/rms/controllers/lcp_controller.py b/orm/services/region_manager/rms/controllers/lcp_controller.py
index 6435ed33..557c6415 100755
--- a/orm/services/region_manager/rms/controllers/lcp_controller.py
+++ b/orm/services/region_manager/rms/controllers/lcp_controller.py
@@ -1,7 +1,7 @@
 import logging
 
 from orm.common.orm_common.utils import api_error_utils as err_utils
-from orm.common.orm_common.utils.error_base import ErrorStatus
+from orm.common.orm_common.utils.error_base import ErrorStatus, NotFoundError
 from orm.services.region_manager.rms.model import url_parm
 from orm.services.region_manager.rms.services import services
 from orm.services.region_manager.rms.utils import authentication
@@ -36,7 +36,7 @@ class LcpController(rest.RestController):
             logger.error(str(exception))
             raise err_utils.get_error(request.transaction_id,
                                       status_code=500,
-                                      error_details=str(exception))
+                                      message=str(exception))
 
     @wsexpose(wtypes.text, str, rest_content_types='json')
     def get_one(self, lcp_id):
@@ -53,7 +53,7 @@ class LcpController(rest.RestController):
             logger.error(str(exception))
             raise err_utils.get_error(request.transaction_id,
                                       status_code=500,
-                                      error_details=str(exception))
+                                      message=str(exception))
 
         for zone in zones:
             if zone["id"] == lcp_id:
@@ -88,7 +88,7 @@ def get_zones():
         logger.debug("Available regions: {}".format(', '.join(
             [region["zone_name"] for region in result])))
 
-    except ErrorStatus as e:
+    except (NotFoundError, ErrorStatus) as e:
         logger.debug(e.message)
     finally:
         return result
diff --git a/orm/services/region_manager/rms/controllers/logs.py b/orm/services/region_manager/rms/controllers/logs.py
index 0253402e..a8f1709b 100755
--- a/orm/services/region_manager/rms/controllers/logs.py
+++ b/orm/services/region_manager/rms/controllers/logs.py
@@ -59,7 +59,7 @@ class LogsController(rest.RestController):
                 str(exception)))
             raise err_utils.get_error(request.transaction_id,
                                       status_code=500,
-                                      error_details=str(exception))
+                                      message=str(exception))
 
     @staticmethod
     def _change_log_level(log_level):
diff --git a/orm/services/region_manager/rms/controllers/v2/orm/resources/groups.py b/orm/services/region_manager/rms/controllers/v2/orm/resources/groups.py
index 60a6f9d9..b5ea95b7 100755
--- a/orm/services/region_manager/rms/controllers/v2/orm/resources/groups.py
+++ b/orm/services/region_manager/rms/controllers/v2/orm/resources/groups.py
@@ -3,7 +3,8 @@ import logging
 import wsme
 
 from orm.common.orm_common.utils import api_error_utils as err_utils
-from orm.common.orm_common.utils.error_base import ErrorStatus, NotFoundError
+from orm.common.orm_common.utils.error_base import \
+    ErrorStatus, NotFoundError, ConflictError, InputValueError
 from orm.common.orm_common.utils import utils
 from orm.services.region_manager.rms.model import model as PythonModel
 from orm.services.region_manager.rms.services import services as GroupService
@@ -135,7 +136,7 @@ class GroupsController(rest.RestController):
             logger.error(exception.message)
             raise err_utils.get_error(request.transaction_id,
                                       status_code=500,
-                                      error_details=exception.message)
+                                      message=exception.message)
 
     @wsexpose(GroupWrapper, status_code=200, rest_content_types='json')
     def get_all(self):
@@ -152,7 +153,7 @@ class GroupsController(rest.RestController):
             logger.exception(exp)
             raise err_utils.get_error(request.transaction_id,
                                       status_code=500,
-                                      error_details=exception.message)
+                                      message=exception.message)
 
         return groups_wrraper
 
@@ -192,7 +193,7 @@ class GroupsController(rest.RestController):
                               event_details=event_details)
             return Result(group)
 
-        except (NotFoundError, ErrorStatus) as e:
+        except (NotFoundError, InputValueError, ErrorStatus, ConflictError) as e:
             logger.error("GroupsController :- {}".format(e.message))
             raise err_utils.get_error(request.transaction_id,
                                       message=e.message,
@@ -201,7 +202,7 @@ class GroupsController(rest.RestController):
             logger.error(exception.message)
             raise err_utils.get_error(request.transaction_id,
                                       status_code=500,
-                                      error_details=exception.message)
+                                      message=exception.message)
 
     @wsexpose(None, str, status_code=204, rest_content_types='json')
     def delete(self, group_id):
@@ -231,7 +232,7 @@ class GroupsController(rest.RestController):
             logger.exception("Failed  to delete group :- {}".format(exp))
             raise err_utils.get_error(request.transaction_id,
                                       status_code=500,
-                                      error_details=exp.message)
+                                      message=exp.message)
         return
 
     @wsexpose(Result, str, body=Groups, status_code=201,
diff --git a/orm/services/region_manager/rms/controllers/v2/orm/resources/metadata.py b/orm/services/region_manager/rms/controllers/v2/orm/resources/metadata.py
index 8677bdf4..fec56a74 100755
--- a/orm/services/region_manager/rms/controllers/v2/orm/resources/metadata.py
+++ b/orm/services/region_manager/rms/controllers/v2/orm/resources/metadata.py
@@ -2,7 +2,7 @@ import json
 import logging
 
 from orm.common.orm_common.utils import api_error_utils as err_utils
-from orm.common.orm_common.utils.error_base import ErrorStatus
+from orm.common.orm_common.utils.error_base import ErrorStatus, NotFoundError
 from orm.common.orm_common.utils import utils
 from orm.services.region_manager.rms.services import services as RegionService
 from orm.services.region_manager.rms.utils import authentication
@@ -41,7 +41,7 @@ class RegionMetadataController(rest.RestController):
             logger.debug("Got region metadata: {}".format(region.metadata))
             return MetaData(region.metadata)
 
-        except ErrorStatus as exp:
+        except (NotFoundError, ErrorStatus) as exp:
             logger.error("RegionsController - {}".format(exp.message))
             raise err_utils.get_error(request.transaction_id,
                                       message=exp.message,
@@ -50,7 +50,7 @@ class RegionMetadataController(rest.RestController):
             logger.exception(str(exp))
             raise err_utils.get_error(request.transaction_id,
                                       status_code=500,
-                                      error_details=str(exp))
+                                      message=str(exp))
 
     @wsexpose(MetaData, str, body=MetaData, status_code=201,
               rest_content_types='json')
@@ -78,7 +78,7 @@ class RegionMetadataController(rest.RestController):
                               event_details=event_details)
             return MetaData(result)
 
-        except ErrorStatus as e:
+        except (NotFoundError, ErrorStatus) as e:
             logger.error(e.message)
             raise err_utils.get_error(request.transaction_id,
                                       message=e.message,
@@ -87,7 +87,7 @@ class RegionMetadataController(rest.RestController):
             logger.error(str(exception))
             raise err_utils.get_error(request.transaction_id,
                                       status_code=500,
-                                      error_details=str(exception))
+                                      message=str(exception))
 
     @wsexpose(MetaData, str, body=MetaData, status_code=201,
               rest_content_types='json')
@@ -115,7 +115,7 @@ class RegionMetadataController(rest.RestController):
                               event_details=event_details)
             return MetaData(result)
 
-        except ErrorStatus as e:
+        except (NotFoundError, ErrorStatus) as e:
             logger.error(e.message)
             raise err_utils.get_error(request.transaction_id,
                                       message=e.message,
@@ -124,7 +124,7 @@ class RegionMetadataController(rest.RestController):
             logger.error(str(exception))
             raise err_utils.get_error(request.transaction_id,
                                       status_code=500,
-                                      error_details=str(exception))
+                                      message=str(exception))
 
     @wsexpose(None, str, str, status_code=204, rest_content_types='json')
     def delete(self, region_id, metadata_key):
@@ -158,7 +158,7 @@ class RegionMetadataController(rest.RestController):
             logger.error(str(exception))
             raise err_utils.get_error(request.transaction_id,
                                       status_code=500,
-                                      error_details=str(exception))
+                                      message=str(exception))
 
     def _validate_request_input(self):
         data_dict = json.loads(request.body)
diff --git a/orm/services/region_manager/rms/controllers/v2/orm/resources/regions.py b/orm/services/region_manager/rms/controllers/v2/orm/resources/regions.py
index b6c3a398..f2a86334 100755
--- a/orm/services/region_manager/rms/controllers/v2/orm/resources/regions.py
+++ b/orm/services/region_manager/rms/controllers/v2/orm/resources/regions.py
@@ -238,7 +238,7 @@ class RegionsController(rest.RestController):
 
             return result
 
-        except ErrorStatus as exp:
+        except (NotFoundError, ErrorStatus) as exp:
             logger.error("RegionsController {}".format(exp.message))
             raise err_utils.get_error(request.transaction_id,
                                       message=exp.message,
diff --git a/orm/services/region_manager/rms/controllers/v2/orm/resources/status.py b/orm/services/region_manager/rms/controllers/v2/orm/resources/status.py
index 0c8da6f3..6805f5a5 100755
--- a/orm/services/region_manager/rms/controllers/v2/orm/resources/status.py
+++ b/orm/services/region_manager/rms/controllers/v2/orm/resources/status.py
@@ -82,7 +82,7 @@ class RegionStatusController(rest.RestController):
             logger.error(str(e))
             raise err_utils.get_error(request.transaction_id,
                                       status_code=500,
-                                      error_details=str(e))
+                                      message=str(e))
 
     @wsexpose(str, str, rest_content_types='json')
     def get(self, region_id):
diff --git a/orm/services/region_manager/rms/controllers/v2/orm/resources/uuid.py b/orm/services/region_manager/rms/controllers/v2/orm/resources/uuid.py
index cacf7f0c..bff64c63 100644
--- a/orm/services/region_manager/rms/controllers/v2/orm/resources/uuid.py
+++ b/orm/services/region_manager/rms/controllers/v2/orm/resources/uuid.py
@@ -43,13 +43,13 @@ class UUIDController(rest.RestController):
                 "Failed to get uuid : {}".format(str(ex)))
             raise err_utils.get_error(request.transaction_id,
                                       status_code=500,
-                                      error_details=str(ex))
+                                      message=str(ex))
 
         if resp.status_code != 200:
             message = "Failed to uuid {}: {}".format(uuid, resp.text)
             raise err_utils.get_error(request.transaction_id,
                                       status_code=resp.status_code,
-                                      error_details=message)
+                                      message=message)
 
         uuid_data = json.loads(resp.content)
         return UUIDData(id=str(uuid_data['id']),
@@ -79,11 +79,11 @@ class UUIDController(rest.RestController):
                 "Failed to delete uuid : {}".format(str(ex)))
             raise err_utils.get_error(request.transaction_id,
                                       status_code=500,
-                                      error_details=str(ex))
+                                      message=str(ex))
 
         if resp.status_code != 200:
             message = "Failed to delete uuid {}: {}".format(uuid, resp.text)
             raise err_utils.get_error(request.transaction_id,
                                       status_code=resp.status_code,
-                                      error_details=message)
+                                      message=message)
         return
diff --git a/orm/services/resource_distributor/rds/ordupdate/ord_notifier.py b/orm/services/resource_distributor/rds/ordupdate/ord_notifier.py
index 99a9e380..87e5420b 100755
--- a/orm/services/resource_distributor/rds/ordupdate/ord_notifier.py
+++ b/orm/services/resource_distributor/rds/ordupdate/ord_notifier.py
@@ -107,7 +107,7 @@ def _notify(ord_url,
         if token_id:
             headers['X-Auth-Token'] = token_id
         else:
-            logger.info('Failed get_token for region %s' % (region_id))
+            logger.error('Failed get_token for region %s' % (region_id))
             raise NoTokenError
 
     # Prepare the request body
@@ -161,7 +161,7 @@ def _notify(ord_url,
                                          cert=conf.ordupdate.cert_path)
 
         except requests.exceptions.SSLError:
-            logger.debug('Received an SSL error (is the certificate valid?)')
+            logger.error('Received an SSL error (is the certificate valid?)')
             raise
     else:
         if is_ord_url_https:
@@ -173,10 +173,10 @@ def _notify(ord_url,
                                  files=files,
                                  headers=headers)
 
-    # Make sure the ORD sent an ACK
+    # Verify if Ranger Agent sent the expected ACK
     if response.status_code != ACK_CODE:
-        message = 'Did not receive an ACK from ORD %s, status code: %d' % (
-            ord_url, response.status_code, )
+        message = 'Received error response code (%d) from Ranger Agent %s' % (
+            response.status_code, ord_url)
         encoded_message = message.replace('\n', '_').replace('\r', '_')
         if encoded_message != message:
             encoded_message = encoded_message + "(encoded)"
@@ -306,7 +306,6 @@ def notify_ord(transaction_id,
                 resource_template_data
                 )
 
-        # All OK
         event_details = '%s notified' % (region_id, )
         status = 'Success'
     except NoTokenError:
@@ -314,10 +313,16 @@ def notify_ord(transaction_id,
         status = 'GET Token Error'
         error_msg = 'Failed to get token for region  %s' % (region_id,)
         raise
-    except Exception:
-        event_details = '%s notification failed' % (region_id, )
+    except NotifyNotAcknowledgedError as exp:
+        event_details = 'Ranger Agent %s respond with error code' % (region_id,)
+        status = 'ORD_Error'
+        error_msg = str(exp)
+        raise
+    except Exception as exp:
+        event_details = 'Notification failed for region %s' % (region_id, )
         status = 'ORD_Error'
         error_msg = 'Notification to Ranger Agent failed'
+        logger.error(str(exp))
         raise
     finally:
         # Update resource_status db with status
diff --git a/orm/services/resource_distributor/rds/services/resource.py b/orm/services/resource_distributor/rds/services/resource.py
index dd732bae..ccea06e7 100755
--- a/orm/services/resource_distributor/rds/services/resource.py
+++ b/orm/services/resource_distributor/rds/services/resource.py
@@ -286,10 +286,7 @@ def main(jsondata, external_transaction_id, resource_type, operation):
         input_data.targets = utils.add_rms_status_to_regions(
             input_data.targets, input_data.resource_type)
         _generate_resource_data(input_data)
-    except ConflictError:
-        LOG.error(str(exp))
-        raise
-    except ErrorStatus as exp:
+    except (ConflictError, ErrorStatus) as exp:
         LOG.error(str(exp))
         raise
     except Exception as e:
diff --git a/orm/tests/unit/ims/logic/test_image_logic.py b/orm/tests/unit/ims/logic/test_image_logic.py
index efa67e48..cae272a4 100755
--- a/orm/tests/unit/ims/logic/test_image_logic.py
+++ b/orm/tests/unit/ims/logic/test_image_logic.py
@@ -588,7 +588,7 @@ class TestAddCustomers(FunctionalTest):
                                            mock_get_image_by_uuid):
         rds_proxy, mock_data_manager = get_data_manager_mock()
         mock_di.resolver.unpack.return_value = mock_data_manager
-        self.assertRaises(ErrorStatus, image_logic.add_customers,
+        self.assertRaises(ConflictError, image_logic.add_customers,
                           'uuid', mock.MagicMock(),
                           'transaction')
 
@@ -644,7 +644,7 @@ class TestReplaceCustomers(FunctionalTest):
         visibility = 'public'
         rds_proxy, mock_data_manager = get_data_manager_mock()
         mock_di.resolver.unpack.return_value = mock_data_manager
-        self.assertRaises(ValueError,
+        self.assertRaises(ErrorStatus,
                           image_logic.replace_customers,
                           'uuid', mock.MagicMock(),
                           'transaction')