Add missing exceptions in code borrowed from Ironic

Change-Id: I35ab778c4c9a0843ef94c4dd294043f033940715
This commit is contained in:
Davanum Srinivas
2014-12-04 08:34:14 -05:00
parent 3db1457eeb
commit dbb697208e
3 changed files with 177 additions and 7 deletions

View File

@@ -55,13 +55,13 @@ class Bay(base.APIBase):
# FIXME(comstud): One should only allow UUID here, but
# there seems to be a bug in that tests are passing an
# ID. See bug #1301046 for more details.
bay = objects.Node.get(pecan.request.context, value)
bay = objects.Bay.get(pecan.request.context, value)
self._bay_uuid = bay.uuid
# NOTE(lucasagomes): Create the bay_id attribute on-the-fly
# to satisfy the api -> rpc object
# conversion.
self.bay_id = bay.id
except exception.NodeNotFound as e:
except exception.BayNotFound as e:
# Change error code because 404 (NotFound) is inappropriate
# response for a POST request to create a Bay
e.code = 400 # BadRequest
@@ -164,7 +164,7 @@ class BaysController(rest.RestController):
from_bays = False
"""A flag to indicate if the requests to this controller are coming
from the top-level resource Nodes."""
from the top-level resource Bays."""
_custom_actions = {
'detail': ['GET'],

View File

@@ -56,12 +56,12 @@ class Container(base.APIBase):
# FIXME(comstud): One should only allow UUID here, but
# there seems to be a bug in that tests are passing an
# ID. See bug #1301046 for more details.
container = objects.Node.get(pecan.request.context, value)
container = objects.Container.get(pecan.request.context, value)
self._container_uuid = container.uuid
# NOTE(lucasagomes): Create the container_id attribute
# on-the-fly to satisfy the api -> rpc object conversion.
self.container_id = container.id
except exception.NodeNotFound as e:
except exception.BayNotFound as e:
# Change error code because 404 (NotFound) is inappropriate
# response for a POST request to create a Container
e.code = 400 # BadRequest
@@ -301,7 +301,7 @@ class ContainersController(rest.RestController):
if rpc_container[field] != patch_val:
rpc_container[field] = patch_val
rpc_container = objects.Node.get_by_id(pecan.request.context,
rpc_container = objects.Container.get_by_id(pecan.request.context,
rpc_container.container_id)
topic = pecan.request.rpcapi.get_topic_for(rpc_container)

View File

@@ -237,4 +237,174 @@ class ResourceExists(ObjectNotUnique):
class AuthorizationFailure(MagnumException):
msg_fmt = _("%(client)s connection failed. %(message)s")
msg_fmt = _("%(client)s connection failed. %(message)s")
class UnsupportedObjectError(MagnumException):
message = _('Unsupported object type %(objtype)s')
class IncompatibleObjectVersion(MagnumException):
message = _('Version %(objver)s of %(objname)s is not supported')
class OrphanedObjectError(MagnumException):
message = _('Cannot call %(method)s on orphaned %(objtype)s object')
class Invalid(MagnumException):
message = _("Unacceptable parameters.")
code = 400
class InvalidUUID(Invalid):
message = _("Expected a uuid but received %(uuid)s.")
class InvalidIdentity(Invalid):
message = _("Expected an uuid or int but received %(identity)s.")
class HTTPNotFound(ResourceNotFound):
pass
class Conflict(MagnumException):
message = _('Conflict.')
code = 409
class Invalid(MagnumException):
message = _("Unacceptable parameters.")
code = 400
class InvalidState(Conflict):
message = _("Invalid resource state.")
# Cannot be templated as the error syntax varies.
# msg needs to be constructed when raised.
class InvalidParameterValue(Invalid):
message = _("%(err)s")
class InstanceAssociated(Conflict):
message = _("Instance %(instance_uuid)s is already associated with a node,"
" it cannot be associated with this other node %(node)s")
class InstanceNotFound(ResourceNotFound):
message = _("Instance %(instance)s could not be found.")
class PatchError(Invalid):
message = _("Couldn't apply patch '%(patch)s'. Reason: %(reason)s")
class NotAuthorized(MagnumException):
message = _("Not authorized.")
code = 403
class OperationNotPermitted(NotAuthorized):
message = _("Operation not permitted.")
class InvalidMAC(Invalid):
message = _("Expected a MAC address but received %(mac)s.")
class SSHConnectFailed(MagnumException):
message = _("Failed to establish SSH connection to host %(host)s.")
class FileSystemNotSupported(MagnumException):
message = _("Failed to create a file system. "
"File system %(fs)s is not supported.")
class BayNotFound(ResourceNotFound):
message = _("Bay %(bay)s could not be found.")
class BayAssociated(InvalidState):
message = _("Bay %(bay)s is associated with instance %(instance)s.")
class BayAlreadyExists(Conflict):
message = _("A node with UUID %(uuid)s already exists.")
class BayLocked(Conflict):
message = _("Bay %(bay)s is locked by host %(host)s, please retry "
"after the current operation is completed.")
class BayNotLocked(Invalid):
message = _("Bay %(bay)s found not to be locked on release")
class ContainerNotFound(ResourceNotFound):
message = _("Container %(container)s could not be found.")
class ContainerAssociated(InvalidState):
message = _("Container %(container)s is associated with "
"instance %(instance)s.")
class ContainerAlreadyExists(Conflict):
message = _("A node with UUID %(uuid)s already exists.")
class ContainerLocked(Conflict):
message = _("Container %(container)s is locked by host %(host)s, "
"please retry after the current operation is completed.")
class ContainerNotLocked(Invalid):
message = _("Container %(container)s found not to be locked on release")
class PodNotFound(ResourceNotFound):
message = _("Pod %(pod)s could not be found.")
class PodAssociated(InvalidState):
message = _("Pod %(pod)s is associated with instance %(instance)s.")
class PodAlreadyExists(Conflict):
message = _("A node with UUID %(uuid)s already exists.")
class PodLocked(Conflict):
message = _("Pod %(pod)s is locked by host %(host)s, please retry "
"after the current operation is completed.")
class PodNotLocked(Invalid):
message = _("Pod %(pod)s found not to be locked on release")
class ServiceNotFound(ResourceNotFound):
message = _("Service %(service)s could not be found.")
class ServiceAssociated(InvalidState):
message = _("Service %(service)s is associated with "
"instance %(instance)s.")
class ServiceAlreadyExists(Conflict):
message = _("A node with UUID %(uuid)s already exists.")
class ServiceLocked(Conflict):
message = _("Service %(service)s is locked by host %(host)s, please retry "
"after the current operation is completed.")
class ServiceNotLocked(Invalid):
message = _("Service %(service)s found not to be locked on release")