summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--nova/api/zone_redirect.py34
-rw-r--r--nova/scheduler/api.py11
2 files changed, 23 insertions, 22 deletions
diff --git a/nova/api/zone_redirect.py b/nova/api/zone_redirect.py
index ad47a6216..fec1b1af3 100644
--- a/nova/api/zone_redirect.py
+++ b/nova/api/zone_redirect.py
@@ -57,9 +57,20 @@ class ZoneRedirectMiddleware(wsgi.Middleware):
# Todo(sandy): This only works for OpenStack API currently.
# Needs to be broken out into a driver.
+ new_req = req.copy()
+
+ scheme, netloc, path, query, frag = \
+ urlparse.urlsplit(new_req.path_qs)
+ query = urlparse.parse_qsl(query)
+ query = [(key, value) for key, value in query if key != 'fresh']
+ query = urllib.urlencode(query)
+ url = urlparse.urlunsplit((scheme, netloc, path, query, frag))
+
+ m = re.search('/v\d+\.\d+/(.+)', url)
+ resource = m.group(1)
+
for zone in e.zones:
- url = zone.api_url
- LOG.info(_("Zone redirect to:[url:%(api_url)s, "
+ LOG.debug(_("Zone redirect to:[url:%(api_url)s, "
"username:%(username)s]"
% dict(api_url=zone.api_url,
username=zone.username)))
@@ -67,21 +78,6 @@ class ZoneRedirectMiddleware(wsgi.Middleware):
nova = client.OpenStackClient(zone.username, zone.password,
zone.api_url)
nova.authenticate()
- new_req = req.copy()
-
- scheme, netloc, path, query, frag = \
- urlparse.urlsplit(new_req.path_qs)
- query = urlparse.parse_qsl(query)
- query = [(key, value) for key, value in query if key != 'fresh']
- query = urllib.urlencode(query)
- url = urlparse.urlunsplit((scheme, netloc, path, query, frag))
-
- m = re.search('/(v\d+\.\d+)/(.+)', url)
- version = m.group(1)
- resource = m.group(2)
-
- #LOG.info(_("New Request Data: %s"), new_req.body)
- #LOG.info(_("New Request Path: %s"), resource)
try:
if req.method == 'GET':
response, body = nova.get(resource, body=new_req.body)
@@ -97,7 +93,7 @@ class ZoneRedirectMiddleware(wsgi.Middleware):
e.code, e.message, e.details)
continue
- LOG.info(_("Zone Response: %s [%s]/ %s"), response,
+ LOG.debug(_("Zone Response: %s [%s]/ %s"), response,
response.status, body)
if response.status == 200:
res = webob.Response()
@@ -106,7 +102,7 @@ class ZoneRedirectMiddleware(wsgi.Middleware):
res.body = json.dumps(body)
return res
- LOG.info(_("Returning 404 ..."))
+ LOG.debug(_("Zone Redirect Middleware returning 404 ..."))
res = webob.Response()
res.status = "404"
return res
diff --git a/nova/scheduler/api.py b/nova/scheduler/api.py
index c0e28a0a9..48da5bcfc 100644
--- a/nova/scheduler/api.py
+++ b/nova/scheduler/api.py
@@ -76,11 +76,16 @@ class API(object):
@classmethod
def get_instance_or_reroute(cls, context, instance_id):
- instance = db.instance_get(context, instance_id)
- zones = db.zone_get_all(context)
+ try:
+ instance = db.instance_get(context, instance_id)
+ return instance
+ except exception.InstanceNotFound, e:
+ LOG.debug(_("Instance %(instance_id)s not found locally: '%(e)s'" %
+ locals()))
- LOG.debug("*** Firing ZoneRouteException")
# Throw a reroute Exception for the middleware to pick up.
+ LOG.debug("Firing ZoneRouteException")
+ zones = db.zone_get_all(context)
raise exception.ZoneRouteException(zones)
@classmethod