Update Error Statement WRT recent rebase

Continuing to improve error message
catching with regard to the recent
overhaul of error base code.

Change-Id: I1635647ad7edc5ebb3021c421a82cc81ee976256
This commit is contained in:
jh629g 2020-11-16 08:28:42 -06:00 committed by Jeremy Houser
parent baecd4b567
commit 987cc8c770
27 changed files with 122 additions and 151 deletions

View File

@ -38,7 +38,7 @@ class NotAllowedError(wsme.exc.ClientSideError):
class NoContentError(wsme.exc.ClientSideError):
def __init__(self, message="Main json body empty", status_code=406):
def __init__(self, message="Main json body empty", status_code=400):
self.message = message
self.status_code = status_code
super().__init__(msg=message, status_code=status_code)

View File

@ -2,7 +2,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, 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.customer_logic import CustomerLogic
@ -44,12 +44,12 @@ class EnabledController(rest.RestController):
@wsexpose(None, str, rest_content_types='json')
def post(self, customer_id):
raise err_utils.get_error(request.transaction_id, status_code=405)
raise NotAllowedError()
@wsexpose(None, str, rest_content_types='json')
def get(self, customer_id):
raise err_utils.get_error(request.transaction_id, status_code=405)
raise NotAllowedError()
@wsexpose(None, str, rest_content_types='json')
def delete(self, customer_id):
raise err_utils.get_error(request.transaction_id, status_code=405)
raise NotAllowedError()

View File

@ -60,7 +60,7 @@ class CustomerController(rest.RestController):
uuid = utils.create_or_validate_uuid(customer.uuid, 'custId')
except TypeError as exception:
LOG.error("UUID Error: " + str(exception))
raise ErrorStatus(409, str(exception))
raise ErrorStatus(str(exception), 409)
result = customer_logic.create_customer(customer, uuid, request.transaction_id)

View File

@ -94,19 +94,15 @@ class DefaultUserController(rest.RestController):
except ErrorStatus as exception:
LOG.log_exception("DefaultUserController - Failed to delete default users", exception)
raise err_utils.get_error(request.transaction_id,
message=exception.message,
status_code=exception.status_code)
except LookupError as exception:
except (LookupError, NotFoundError) as exception:
LOG.log_exception("DefaultUserController - {0}".format(exception.message), exception)
raise err_utils.get_error(request.transaction_id,
message=exception.message,
status_code=404)
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("DefaultUserController - Failed in Delete default User", exception)
raise err_utils.get_error(request.transaction_id,
@ -134,13 +130,13 @@ class UserController(rest.RestController):
@wsexpose(UserResultWrapper, str, str, body=[User], rest_content_types='json', status_code=200)
def post(self, customer_id, region_id, users):
self._validate(locals()) # more validations for input
title = "Add users to Region '{}' for customer: '{}', users: {}".format(region_id, customer_id, str(users))
LOG.info("UserController - {}".format(title))
event = "Adding users to Region '{}' for customer: '{}', users: {}".format(region_id, customer_id, str(users))
LOG.info("UserController - {}".format(event))
authentication.authorize(request, 'customers:add_region_user')
try:
customer_logic = CustomerLogic()
result = customer_logic.add_users(customer_id, region_id, users, request.transaction_id)
LOG.info("UserController - {} Finished well".format(title))
LOG.info("UserController - {} Finished well".format(event))
event_details = 'Customer {} users: {} added in region {}'.format(
customer_id, [u.id for u in users], region_id)
@ -149,12 +145,12 @@ class UserController(rest.RestController):
event_details=event_details)
except ErrorStatus as exception:
LOG.log_exception("DefaultUserController - Failed to {}".format(title), exception)
LOG.log_exception("DefaultUserController - Failed to {}".format(event), exception)
raise err_utils.get_error(request.transaction_id,
message=exception.message,
status_code=exception.status_code)
except LookupError as exception:
except (LookupError, NotFoundError) as exception:
LOG.log_exception("DefaultUserController - {0}".format(exception.message), exception)
raise err_utils.get_error(request.transaction_id,
message=exception.message,
@ -180,13 +176,13 @@ class UserController(rest.RestController):
@wsexpose(UserResultWrapper, str, str, body=[User], rest_content_types='json', status_code=200)
def put(self, customer_id, region_id, users):
self._validate(locals()) # more validations for input
title = "Replace users to Region '{}' for customer: '{}', users: {}".format(region_id, customer_id, str(users))
LOG.info("UserController - {}".format(title))
event = "Replacing users in Region '{}' for customer: '{}', users: {}".format(region_id, customer_id, str(users))
LOG.info("UserController - {}".format(event))
authentication.authorize(request, 'customers:update_region_user')
try:
customer_logic = CustomerLogic()
result = customer_logic.replace_users(customer_id, region_id, users, request.transaction_id)
LOG.info("UserController - {} Finished well".format(title))
LOG.info("UserController - {} Finished well".format(event))
event_details = 'Customer {} users: {} updated in region {}'.format(
customer_id, [u.id for u in users], region_id)
@ -195,7 +191,7 @@ class UserController(rest.RestController):
event_details=event_details)
except ErrorStatus as exception:
LOG.log_exception("DefaultUserController - Failed to {}".format(title), exception)
LOG.log_exception("DefaultUserController - Failed to {}".format(event), exception)
raise err_utils.get_error(request.transaction_id,
message=exception.message,
status_code=exception.status_code)
@ -208,7 +204,7 @@ class UserController(rest.RestController):
except Exception as exception:
result = UserResultWrapper(transaction_id="Users Not Replaced", users=[])
LOG.log_exception("UserController - Failed to Replaced Users (put)", exception)
LOG.log_exception("UserController - Failed to Replaced Users", exception)
raise err_utils.get_error(request.transaction_id,
status_code=500,
error_details=str(exception))
@ -236,17 +232,12 @@ class UserController(rest.RestController):
message=exception.message,
status_code=exception.status_code)
except LookupError as exception:
except (LookupError, NotFoundError) as exception:
LOG.log_exception("DefaultUserController - {0}".format(exception.message), exception)
raise err_utils.get_error(request.transaction_id,
message=exception.message,
status_code=404)
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("UserController - Failed to Delete User (delete) ", exception)
raise err_utils.get_error(request.transaction_id,

View File

@ -386,7 +386,7 @@ class DataManager(object):
message = "Duplicate Entry - GroupsDomainRole record: " \
"group[{0}], region[{1}], domain[{2}], role[{3}]".format(
group_id, region_id, domain, role_id)
raise ErrorStatus(409.2, message)
raise ErrorStatus(message, 409.2)
except Exception:
raise
@ -406,7 +406,7 @@ class DataManager(object):
message = "Duplicate Entry - GroupsCustomerRole record: " \
"group[{0}], region[{1}], customer[{2}], role[{3}]".format(
group_id, region_id, customer_id, role_id)
raise ErrorStatus(409.2, message)
raise ErrorStatus(message, 409.2)
except Exception:
raise

View File

@ -600,12 +600,12 @@ class CustomerMetadata(Base, CMSBaseModel):
if bad_key:
raise ErrorStatus(
400, "Metadata key '%s' contains one or more invalid "
"characters %s" % (field_key, str(list(set(bad_key)))))
"Metadata key '%s' contains one or more invalid "
"characters %s" % (field_key, str(list(set(bad_key)))))
if bad_value:
raise ErrorStatus(
400, "Metadata value '%s' contains one or more invalid "
"characters %s" % (field_value, str(list(set(bad_value)))))
"Metadata value '%s' contains one or more invalid "
"characters %s" % (field_value, str(list(set(bad_value)))))
def __json__(self):
return dict(

View File

@ -291,7 +291,7 @@ class GroupLogic(object):
except Exception as exception:
datamanager.rollback()
if 'Duplicate' in str(exception):
raise ConflictError(409, str(exception))
raise ConflictError(str(exception))
LOG.log_exception("Failed to add_group_default_users", exception)
raise
@ -362,7 +362,7 @@ class GroupLogic(object):
except Exception as exception:
datamanager.rollback()
if 'Duplicate' in str(exception):
raise ConflictError(409, str(exception))
raise ConflictError(str(exception))
LOG.log_exception("Failed to add_group_region_users", exception)
raise
@ -438,7 +438,7 @@ class GroupLogic(object):
"%s@%s domain is a default user for "\
"group %s. Use 'delete_group_default_user' "\
"instead." % (user, user_domain, group_uuid)
raise ErrorStatus(400, message)
raise ErrorStatus(message)
group_record = datamanager.get_record('group')
group = group_record.read_group_by_uuid(group_uuid)
@ -785,10 +785,10 @@ class GroupLogic(object):
self, group_uuid, region_name, customer_uuid, domain_name):
if region_name is None:
raise NotAllowedError(400, "region must be specified in request "
raise NotAllowedError("region must be specified in request "
"uri query.")
if customer_uuid is not None and domain_name is not None:
raise NotAllowedError(400, "customer and domain cannot be used at "
raise NotAllowedError("customer and domain cannot be used at "
"the same time for query in request uri.")
role_result = []
@ -866,7 +866,6 @@ class GroupLogic(object):
if len(regions) > 0:
# Do not delete a group that still has region(s)
raise NotAllowedError(
405,
" Cannot delete a group that has region(s)."
" Please delete the region(s) first and then"
" delete the group.")
@ -901,10 +900,9 @@ class GroupLogic(object):
status = invalid_status
if status == invalid_status:
raise ErrorStatus(500, "Could not get group status")
raise ErrorStatus("Could not get group status")
elif status != expected_status:
raise ErrorStatus(
409,
"The group has not been deleted "
"successfully from all of its regions "
"(either the deletion failed on one of the "

View File

@ -21,13 +21,11 @@ class RoleAssignment(Model):
def validate_model(self):
if self.customer and self.domain:
raise ErrorStatus(400,
"Found both customer and domain tag used. "
raise ErrorStatus("Found both customer and domain tag used. "
"Only one can be specified for role assignment.")
if len(set(self.roles)) != len(self.roles):
raise ErrorStatus(400,
"Duplicate role in roles tag found ")
raise ErrorStatus("Duplicate role in roles tag found ")
class User(Model):
@ -121,8 +119,7 @@ class Group(Model):
if context == "update":
for region in self.regions:
if region.type == "group":
raise ErrorStatus(400,
"region type is invalid for update, "
raise ErrorStatus("region type is invalid for update, "
" \'group\' can be only in create")
def handle_region_group(self):
@ -133,7 +130,7 @@ class Group(Model):
group_regions = self.get_regions_for_group(region.name)
if not group_regions:
raise ErrorStatus(
404, 'Group {} Not found'.format(region.name))
'Group {} Not found'.format(region.name))
self.regions.remove(region)
# remove duplicates if exist
self.regions.extend(set(regions_to_add))

View File

@ -264,7 +264,7 @@ class Customer(Model):
if context == "update":
for region in self.regions:
if region.type == "group":
raise ErrorStatus(400, "region type is invalid for update, \'group\' can be only in create")
raise ErrorStatus("region type is invalid for update, \'group\' can be only in create")
def handle_region_group(self):
regions_to_add = []

View File

@ -40,7 +40,7 @@ class FlavorController(rest.RestController):
uuid = common_utils.create_or_validate_uuid(flavors.flavor.id, 'fmsId')
except TypeError as exception:
LOG.error("UUID Error: " + str(exception))
raise ErrorStatus(409, str(exception))
raise ErrorStatus(str(exception), 409)
result = flavor_logic.create_flavor(flavors, uuid, request.transaction_id)
@ -60,7 +60,7 @@ class FlavorController(rest.RestController):
message=str(exception),
status_code=exception.status_code)
except ValueError as exception:
except (InputValueError, ValueError) as exception:
LOG.error("FlavorController - Failed to CreateFlavor", exception)
raise err_utils.get_error(request.transaction_id,
status_code=400,

View File

@ -27,8 +27,7 @@ class OsExtraSpecsController(rest.RestController):
extra_specs_wrapper.os_extra_specs and\
extra_specs_wrapper.extra_specs
if valid_json:
raise ErrorStatus(message="Invalid json. please provide supported json",
status_code=400)
raise ErrorStatus(message="Invalid json. please provide supported json")
if extra_specs_wrapper.extra_specs:
extra_specs_wrapper.os_extra_specs = extra_specs_wrapper.extra_specs

View File

@ -128,7 +128,7 @@ class Flavor(Base, FMSBaseModel):
def validate_series(self, key, series):
valid_flvr_series = cfg.CONF.fms.flavor_series
if series not in valid_flvr_series:
raise ValueError(
raise InputValueError(
"Series must be one of {}:".format(str(valid_flvr_series)))
return series
@ -229,7 +229,6 @@ class Flavor(Base, FMSBaseModel):
if not deleted_flag:
raise ErrorStatus(
404,
"Failed to remove tag {0} from flavor id {1}".format(
tag_name, str(self.id)))
@ -269,7 +268,6 @@ class Flavor(Base, FMSBaseModel):
if not deleted_flag:
raise ErrorStatus(
404,
"tenant {0} does not exist for flavor id {1}".format(
tenant_id, str(self.id)))
@ -318,7 +316,6 @@ class Flavor(Base, FMSBaseModel):
if not deleted_flag:
raise ErrorStatus(
404,
"extra spec {0} does not exist for flavor id {1}".format(
extra_spec_key_name, str(self.id)))
@ -336,10 +333,10 @@ class Flavor(Base, FMSBaseModel):
'''
if self.visibility == "public" and len(self.flavor_tenants) > 0:
raise ValueError(
raise InputValueError(
"tenants should not be specified for a public flavor")
elif self.visibility not in ["private", "public"]:
raise ValueError(
raise InputValueError(
"Flavor visibility can be 'public' or 'private',"
"got {0}".format(self.visibility))

View File

@ -343,12 +343,12 @@ class Flavor(Model):
raise InputValueError("Invalid value. vlan_category possible"
" values: " + str(valid_vnf))
# region type can be group only in create flavor!!
# region type can be group only in create flavor
if not context == "create":
for region in self.regions:
if region.type == "group":
raise InputValueError("region type \'group\' is invalid in"
" this action, \'group\' can be only"
raise InputValueError("region type group is invalid in"
" this action, group can be only"
" in create flavor action")
def to_db_model(self):

View File

@ -268,7 +268,7 @@ def add_regions(flavor_uuid, regions, transaction_id):
if region.name == '' or region.name.isspace():
raise InputValueError('Cannot add region with an empty name')
if region.type == "group":
raise InputValueError("Adding \'group\' type region is supported"
raise InputValueError("Adding group type region is supported"
" only when creating a flavor")
db_region = FlavorRegion(region_name=region.name,
region_type='single')

View File

@ -79,28 +79,32 @@ def send_flavor(flavor_dict, transaction_id, action="put"):
headers=headers,
verify=conf.verify)
else:
raise Exception("Invalid action in RdxProxy.send_flavor(flavor_dict, transaction_id, action) action can be post or delete, got {0}".format(action))
raise Exception("RdsProxy.send_flavor action_type invalid."
" Action can be post or delete, got {0}".format(action))
content = resp.content
LOG.debug("return from rds server status code: {0} content: {1}".format(resp.status_code, resp.content))
LOG.debug("return from rds server status code: {0} content: {1}".format(
resp.status_code,
resp.content))
if resp.content and 200 <= resp.status_code < 300:
content = resp.json()
else:
raise ErrorStatus("Got error from rds server, code: {0} message: {1}".format(resp.status_code, resp.json()['faultstring']), resp.status_code)
raise ErrorStatus("Got error from rds server: {0}".format(
resp.json()['faultstring']),
resp.status_code)
return content
def get_status(resource_id):
try:
LOG.debug("Sending to RDS Server to get status: " + conf.api.rds_server.base + conf.api.rds_server.status + resource_id)
LOG.debug("Calling to RDS Server to get status")
resp = requests.get(conf.api.rds_server.base + conf.api.rds_server.status + resource_id, verify=conf.verify)
LOG.debug("Sending to RDS Server to get status: " + conf.api.rds_server.base + conf.api.rds_server.status + resource_id)
pp = pprint.PrettyPrinter(width=30)
pretty_text = pp.pformat(resp.json())
LOG.debug("Response from RDS Server:\n" + pretty_text)
return resp
except Exception as exp:
LOG.log_exception("FlavorLogic - Failed to Get status for flavor : " + resource_id, exp)
LOG.log_exception("FlavorLogic - Failed to Get status for flavor: " + resource_id, exp)
raise

View File

@ -58,8 +58,7 @@ class EnabledController(rest.RestController):
auth.authorize(request, "image:enable")
try:
LOG.debug("method not allowed only put allowed")
raise ErrorStatus(405,
"method not allowed only 'put' method allowed")
raise ErrorStatus("Method not allowed, only 'put' method allowed")
return None
except ErrorStatus as exception:

View File

@ -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 ErrorStatus
from orm.common.orm_common.utils.error_base import ConflictError, ErrorStatus, NotFoundError
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
@ -47,13 +47,13 @@ class ImageController(rest.RestController):
uuid = utils.create_or_validate_uuid(image_wrapper.image.id, 'imsId')
except TypeError as exception:
LOG.error("UUID Error: " + str(exception))
raise ErrorStatus(409, str(exception))
raise ErrorStatus(str(exception), 409)
try:
ret_image = image_logic.create_image(image_wrapper, uuid,
request.transaction_id)
except oslo_db.exception.DBDuplicateEntry as exception:
raise ErrorStatus(409.2, 'The field {0} already exists'.format(exception.columns))
except ConflictError as exception:
raise ErrorStatus('The field {0} already exists'.format(exception.columns), 409.2)
LOG.info("ImageController - Image Created: " + str(ret_image))
@ -89,7 +89,7 @@ class ImageController(rest.RestController):
result = image_logic.update_image(image_wrapper, image_id,
request.transaction_id)
except oslo_db.exception.DBDuplicateEntry as exception:
raise ErrorStatus(409.2, 'The field {0} already exists'.format(exception.columns))
raise ErrorStatus('The field {0} already exists'.format(exception.columns), 409.2)
LOG.info("ImageController - UpdateImage finished well: " + str(image_wrapper.image.name))
@ -103,7 +103,7 @@ class ImageController(rest.RestController):
event_details=event_details)
return result
except ErrorStatus as exception:
except (ErrorStatus, NotFoundError) as exception:
LOG.log_exception("Failed in UpdateImage", exception)
raise err_utils.get_error(request.transaction_id,
message=str(exception),
@ -125,7 +125,7 @@ class ImageController(rest.RestController):
try:
return image_logic.get_image_by_uuid(image_uuid, query_by_id_or_name=True)
except ErrorStatus as exception:
except (ErrorStatus, NotFoundError) as exception:
LOG.log_exception("ImageController - Failed to GetImageDetails", exception)
raise err_utils.get_error(request.transaction_id,
message=str(exception),
@ -175,7 +175,7 @@ class ImageController(rest.RestController):
request.headers, image_uuid,
event_details=event_details)
except ErrorStatus as exp:
except (ErrorStatus, NotFoundError) as exp:
LOG.log_exception("ImageController - Failed to delete image", exp)
raise err_utils.get_error(request.transaction_id,
message=str(exp),

View File

@ -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
from orm.services.image_manager.ims.controllers.v1.orm.images.metadata import MetadataController
from orm.services.image_manager.ims.logger import get_logger
from orm.services.image_manager.ims.persistency.wsme.models import RegionWrapper
@ -32,8 +32,7 @@ class RegionController(rest.RestController):
try:
if not region_wrapper.regions:
raise ErrorStatus(400,
" bad resquest please provide correct json")
raise ErrorStatus("Bad resquest, invalid json provided")
LOG.info("RegionController - add regions: " + str(region_wrapper))
result = image_logic.add_regions(image_id, region_wrapper, request.transaction_id)
@ -64,8 +63,7 @@ class RegionController(rest.RestController):
auth.authorize(request, "region:update")
try:
if not region_wrapper.regions:
raise ErrorStatus(400,
" bad resquest please provide correct json")
raise ErrorStatus("Bad request, invalid json provided")
LOG.info("RegionController - replace regions: " + str(region_wrapper))
result = image_logic.replace_regions(image_id, region_wrapper, request.transaction_id)
@ -110,7 +108,7 @@ class RegionController(rest.RestController):
request.headers, image_id,
event_details=event_details)
except ErrorStatus as exception: # include NotFoundError
except (ErrorStatus, NotFoundError) as exception:
LOG.log_exception("RegionController - Failed to delete region", exception)
raise err_utils.get_error(request.transaction_id,
message=str(exception),

View File

@ -153,7 +153,7 @@ class Image(Base, IMSBaseModel):
str(self)))
region_list = [region for region in self.regions if region.region_name == image_region.region_name]
if len(region_list) > 0:
raise ErrorStatus(409, "Region {} already exist in Image {}".format(image_region.region_name, self.name))
raise ErrorStatus("Region {} already exist in Image {}".format(image_region.region_name, self.name), 409)
self.regions.append(image_region)
except Exception as exception:

View File

@ -220,51 +220,47 @@ class Image(Model):
def validate_model(self, context=None):
if self.name.strip() == '':
raise ErrorStatus(400, 'Image name is required.')
raise ErrorStatus('Image name is required.')
if self.url.strip() == '':
raise ErrorStatus(400, 'Image location URL is required.')
raise ErrorStatus('Image location URL is required.')
# Validate visibility
if self.visibility not in ["private", "public", "community", "shared"]:
raise ErrorStatus(400,
'Image visibility can only be public, private,'
raise ErrorStatus('Image visibility can only be public, private,'
' community, or shared')
elif self.customers and self.visibility != "shared":
raise ErrorStatus(400,
'Customers can only be specified with shared'
raise ErrorStatus('Customers can only be specified with shared'
' image!')
# Validate disk format
valid_disk_formats = ('ami', 'ari', 'aki', 'vhd', 'vmdk', 'raw',
'qcow2', 'vdi', 'iso',)
if self.disk_format not in valid_disk_formats:
raise ErrorStatus(400, 'Invalid disk format!')
raise ErrorStatus('Invalid disk format!')
# validate customer input unique
customer_input = set()
for customer in self.customers:
if customer in customer_input:
raise ErrorStatus(
400, "customer {} exist more than one".format(customer))
"customer {} exist more than one".format(customer))
customer_input.add(customer)
# Validate container format
valid_container_formats = ('ami', 'ari', 'aki', 'bare', 'ovf', 'ova',
'docker')
if self.container_format not in valid_container_formats:
raise ErrorStatus(
400,
'Invalid container format! {}'.format(self.container_format))
if int(self.min_ram) not in list(range(0, self.min_ram + 1, 1024)):
raise ErrorStatus(
400, 'mininum RAM value must be a multiple of 1024')
'mininum RAM value must be a multiple of 1024')
if context == "update":
for region in self.regions:
if region.type == "group":
raise ErrorStatus(
400,
'region {} type is invalid for update, \'group\' can'
' be only in create'.format(region.name))
@ -380,7 +376,7 @@ class Image(Model):
group_regions = self.get_regions_for_group(region.name)
if group_regions is None:
raise ErrorStatus(
404, "Group {} does not exist".format(region.name))
"Group {} does not exist".format(region.name))
for group_region in group_regions:
regions_to_add.append(
Region(name=group_region, type='single'))
@ -419,28 +415,25 @@ class ImageWrapper(Model):
if sql_image and new_image:
if sql_image.name != new_image.name:
raise ErrorStatus(400, "Cannot change name of existing image")
raise ErrorStatus("Cannot change name of existing image")
if sql_image.container_format != new_image.container_format:
raise ErrorStatus(400, "Cannot change container format of "
"existing image")
raise ErrorStatus("Cannot change container format of"
" existing image")
if sql_image.disk_format != new_image.disk_format:
raise ErrorStatus(
400,
"Cannot change disk format of existing image")
if sql_image.min_ram != new_image.min_ram:
raise ErrorStatus(400,
"Cannot change min_ram of existing image")
raise ErrorStatus("Cannot change min_ram of existing image")
if sql_image.min_disk != new_image.min_disk:
raise ErrorStatus(400,
"Cannot change min_disk of existing image")
raise ErrorStatus("Cannot change min_disk of existing image")
if sql_image.url != new_image.url:
raise ErrorStatus(400, "Cannot change source data URL of "
"existing image")
raise ErrorStatus("Cannot change source data URL of "
"existing image")
def handle_region_group(self):
return self.image.handle_region_group()

View File

@ -90,8 +90,7 @@ def send_image(image_dict, transaction_id, action="put"):
else:
# In case of error from rds, the response is WSME format response.
# the error message is within the 'faultstring'
raise ErrorStatus(resp.status_code,
json.loads(content)["faultstring"])
raise ErrorStatus(json.loads(content)["faultstring"], resp.status_code)
except Exception as exp:
LOG.log_exception("ImageLogic - Failed to update image", exp)

View File

@ -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 import error_base
from orm.common.orm_common.utils.error_base import ErrorStatus
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 error_base.ErrorStatus as exp:
except ErrorStatus as exp:
logger.error("RegionsController - {}".format(exp.message))
raise err_utils.get_error(request.transaction_id,
message=exp.message,
@ -78,7 +78,7 @@ class RegionMetadataController(rest.RestController):
event_details=event_details)
return MetaData(result)
except error_base.ErrorStatus as e:
except ErrorStatus as e:
logger.error(e.message)
raise err_utils.get_error(request.transaction_id,
message=e.message,
@ -115,7 +115,7 @@ class RegionMetadataController(rest.RestController):
event_details=event_details)
return MetaData(result)
except error_base.ErrorStatus as e:
except ErrorStatus as e:
logger.error(e.message)
raise err_utils.get_error(request.transaction_id,
message=e.message,
@ -149,7 +149,7 @@ class RegionMetadataController(rest.RestController):
request.headers, region_id,
event_details=event_details)
except error_base.ErrorStatus as e:
except ErrorStatus as e:
logger.error(e.message)
raise err_utils.get_error(request.transaction_id,
message=e.message,
@ -167,5 +167,5 @@ class RegionMetadataController(rest.RestController):
if isinstance(v, str):
logger.error("Invalid json. value type list is expected, "
"received string, for metadata key {}".format(k))
raise error_base.ErrorStatus(400, "Invalid json. Expecting list "
"of metadata values, got string")
raise ErrorStatus("Invalid json. Expecting list "
"of metadata values, got string")

View File

@ -351,7 +351,7 @@ class RegionsController(rest.RestController):
except ConflictError as exp:
logger.error("Region with resources cannot be deleted")
raise err_utils.get_error(request.transaction_id,
status_code=400,
status_code=exp.status_code,
message=exp.message)
except Exception as exp:

View File

@ -2,7 +2,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, InputValueError
ErrorStatus, NotAllowedError, InputValueError
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
@ -86,16 +86,13 @@ class RegionStatusController(rest.RestController):
@wsexpose(str, str, rest_content_types='json')
def get(self, region_id):
raise err_utils.get_error(request.transaction_id,
status_code=405)
raise NotAllowedError("Method not allowed; call region endpoint instead")
@wsexpose(RegionStatus, str, body=RegionStatus, status_code=200,
rest_content_types='json')
def post(self, region_id, status):
raise err_utils.get_error(request.transaction_id,
status_code=405)
raise NotAllowedError("Method not allowed; status endpoint only supports update")
@wsexpose(str, str, rest_content_types='json')
def delete(self, region_id):
raise err_utils.get_error(request.transaction_id,
status_code=405)
raise NotAllowedError("Method not allowed; status endpoint only supports update")

View File

@ -19,7 +19,7 @@ from orm.services.resource_distributor.rds.utils import utils, uuid_utils
from pecan import conf, request
my_logger = logging.getLogger(__name__)
LOG = logging.getLogger(__name__)
def _get_inputs_from_resource_type(jsondata,
@ -56,13 +56,11 @@ def _create_or_update_resource_status(input_data, target, error_msg='',
status="Submitted"):
# check rms region status
if not _region_valid(target):
status = 'Error'
error_msg = "Not sent to ord as status equal to " + \
target['rms_status']
raise ErrorStatus("Not sent to ord as status equal to %s"
% target['rms_status'])
raise ErrorStatus(error_msg)
my_logger.debug("save status as %s" % status)
LOG.debug("save status as %s" % status)
data_to_save = dict(
timestamp=int(time.time() * 1000),
region=target['name'],
@ -75,7 +73,7 @@ def _create_or_update_resource_status(input_data, target, error_msg='',
resource_type=input_data.resource_type,
ord_notifier_id='')
regionResourceIdStatus.add_status(data_to_save)
my_logger.debug("status %s saved" % status)
LOG.debug("status %s saved" % status)
def _set_all_statuses_to_error(input_data, message=None):
@ -172,7 +170,7 @@ def _create_template_data(input_data):
def send_data_to_ord(tracking_id, transaction_id, resource_list,
application_id, user_id, headers={}):
my_logger.info("Prepping data to send to ord ...")
LOG.info("Prepping data to send to ord ...")
# This method is called also in case exception raised.
# Notification to ords will not be sent but status db and audit
@ -194,11 +192,11 @@ def send_data_to_ord(tracking_id, transaction_id, resource_list,
"NA", # external_id is not available
headers)
except NoTokenError as e:
my_logger.error("Failed to get token for resource id {} "
"region {}".format(resource["resource_name"],
resource["region_id"]))
LOG.error("Failed to get token for resource id {} "
"region {}".format(resource["resource_name"],
resource["region_id"]))
except Exception as e:
my_logger.error("Error in updating ORD! Error: {}".format(
LOG.error("Error in updating ORD! Error: {}".format(
str(e)))
@ -257,10 +255,10 @@ def _check_resource_status(input_data):
def _generate_resource_data(input_data):
"""create resource."""
my_logger.debug("build yaml file for %s id: %s" % (
LOG.debug("build yaml file for %s id: %s" % (
input_data.resource_type, input_data.resource_id))
targetslist = _create_template_data(input_data)
my_logger.debug("submit yaml to ranger-agent...")
LOG.debug("submit yaml to ranger-agent...")
_submit_template_data(input_data.resource_id,
input_data.transaction_id,
targetslist)
@ -271,7 +269,7 @@ def _generate_resource_data(input_data):
# validate roles
def main(jsondata, external_transaction_id, resource_type, operation):
"""main function handle resource operation."""
my_logger.info("got %s for %s resource" % (operation, resource_type))
LOG.info("got %s for %s resource" % (operation, resource_type))
try:
input_data = _get_inputs_from_resource_type(
jsondata=jsondata,
@ -279,22 +277,23 @@ def main(jsondata, external_transaction_id, resource_type, operation):
operation=operation,
external_transaction_id=external_transaction_id
)
my_logger.debug("iterate through the regions see if none in submitted")
LOG.debug("iterate through the regions see if none in submitted")
_check_resource_status(input_data)
my_logger.debug("get uuid from uuid generator")
LOG.debug("get uuid from uuid generator")
input_data.transaction_id = uuid_utils.get_random_uuid()
my_logger.debug("uuid ={}".format(input_data.transaction_id))
LOG.debug("uuid ={}".format(input_data.transaction_id))
# add regions status from rms (to check if it down)
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:
my_logger.error(str(exp))
LOG.error(str(exp))
raise
except Exception as e:
_set_all_statuses_to_error(input_data)
my_logger.error("deleting failed, Error: {}".format(str(e)))
LOG.error("deleting failed, Error: {}".format(str(e)))
raise
return input_data.resource_id

View File

@ -134,7 +134,6 @@ class TestUpdateImage(FunctionalTest):
response = self.app.put_json('/v1/orm/images/updatetest', image_json,
expect_errors=True)
self.assertEqual(404, response.status_code)
@mock.patch.object(images, 'err_utils')

View File

@ -2,6 +2,7 @@ import json
from unittest.mock import patch, MagicMock
from orm.common.orm_common.utils.error_base import ConflictError, NotFoundError
from orm.services.region_manager.rms.controllers.v2.orm.resources import metadata
from orm.services.region_manager.rms.model import model
from orm.tests.unit.rms import FunctionalTest
@ -57,7 +58,7 @@ class TestMetadataController(FunctionalTest):
@patch.object(metadata, 'authentication')
@patch.object(metadata.RegionService, 'delete_metadata_from_region',
side_effect=metadata.error_base.NotFoundError("region not found !!!?"))
side_effect=NotFoundError("region not found !!!?"))
@patch.object(metadata.err_utils, 'get_error',
return_value=ClientSideError(json.dumps({
'code': 404,
@ -123,7 +124,7 @@ class TestMetadataController(FunctionalTest):
@patch.object(metadata, 'authentication')
@patch.object(metadata.RegionService, 'update_region_metadata',
side_effect=metadata.error_base.NotFoundError("region not found !!!?"))
side_effect=NotFoundError("region not found !!!?"))
@patch.object(metadata.err_utils, 'get_error',
return_value=ClientSideError(json.dumps({
'code': 404,
@ -189,7 +190,7 @@ class TestMetadataController(FunctionalTest):
@patch.object(metadata, 'authentication')
@patch.object(metadata.RegionService, 'add_region_metadata',
side_effect=metadata.error_base.NotFoundError("region not found !!!?"))
side_effect=NotFoundError("region not found !!!?"))
@patch.object(metadata.err_utils, 'get_error',
return_value=ClientSideError(json.dumps({
'code': 404,
@ -216,7 +217,7 @@ class TestMetadataController(FunctionalTest):
@patch.object(metadata, 'authentication')
@patch.object(metadata.RegionService, 'add_region_metadata',
side_effect=metadata.error_base.ConflictError("unknown error"))
side_effect=ConflictError("unknown error"))
@patch.object(metadata.err_utils, 'get_error',
return_value=ClientSideError(json.dumps({
'code': 409,
@ -308,7 +309,7 @@ class TestMetadataController(FunctionalTest):
@patch.object(metadata, 'authentication')
@patch.object(metadata.RegionService, 'get_region_by_id_or_name',
side_effect=metadata.error_base.NotFoundError("no content !!!?"))
side_effect=NotFoundError("no content !!!?"))
@patch.object(metadata.err_utils, 'get_error',
return_value=ClientSideError(json.dumps({
'code': 404,