summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--nova/exception.py7
-rw-r--r--nova/scheduler/api.py5
2 files changed, 11 insertions, 1 deletions
diff --git a/nova/exception.py b/nova/exception.py
index 95d8229b5..aa6609461 100644
--- a/nova/exception.py
+++ b/nova/exception.py
@@ -806,3 +806,10 @@ class CannotResizeToSmallerSize(NovaException):
class ImageTooLarge(NovaException):
message = _("Image is larger than instance type allows")
+
+
+class ZoneRequestError(Error):
+ def __init__(self, message=None):
+ if message is None:
+ message = _("1 or more Zones could not complete the request")
+ super(ZoneRequestError, self).__init__(message=message)
diff --git a/nova/scheduler/api.py b/nova/scheduler/api.py
index a5124678d..05685fc15 100644
--- a/nova/scheduler/api.py
+++ b/nova/scheduler/api.py
@@ -168,7 +168,10 @@ def child_zone_helper(zone_list, func):
url = zone.api_url
LOG.warn(_("Failed request to zone; URL=%(url)s: %(e)s")
% locals())
- return e
+ # This is being returned instead of raised, so that when results are
+ # processed in unmarshal_result() after the greenpool.imap completes,
+ # the exception can be raised there if no other zones had a response.
+ return exception.ZoneRequestError()
else:
return func(nova, zone)