diff options
| -rw-r--r-- | nova/api/openstack/common.py | 11 | ||||
| -rw-r--r-- | nova/tests/api/openstack/test_common.py | 11 |
2 files changed, 20 insertions, 2 deletions
diff --git a/nova/api/openstack/common.py b/nova/api/openstack/common.py index 903649c02..e5231c483 100644 --- a/nova/api/openstack/common.py +++ b/nova/api/openstack/common.py @@ -27,6 +27,7 @@ from nova.api.openstack import wsgi from nova.api.openstack import xmlutil from nova.compute import vm_states from nova.compute import task_states +from nova import exception from nova import flags from nova import log as logging from nova import network @@ -334,10 +335,16 @@ def get_networks_for_instance(context, instance): # sqlalchemy FK (KeyError, AttributeError) # fail fall back to calling out the the # network api - network_api = network.API() + pass + network_api = network.API() + + try: nw_info = network_api.get_instance_nw_info(context, instance) - return get_networks_for_instance_from_nw_info(nw_info) + except exception.InstanceNotFound: + nw_info = [] + + return get_networks_for_instance_from_nw_info(nw_info) def raise_http_conflict_for_instance_invalid_state(exc, action): diff --git a/nova/tests/api/openstack/test_common.py b/nova/tests/api/openstack/test_common.py index e8f967976..6103b6d13 100644 --- a/nova/tests/api/openstack/test_common.py +++ b/nova/tests/api/openstack/test_common.py @@ -26,6 +26,7 @@ from webob import Request import xml.dom.minidom as minidom from nova import exception +from nova import network from nova import test from nova.api.openstack import common from nova.api.openstack import xmlutil @@ -328,6 +329,16 @@ class MiscFunctionsTest(test.TestCase): else: self.fail("webob.exc.HTTPConflict was not raised") + def test_get_networks_for_instance_handles_instance_not_found(self): + + def raise_not_found(*args, **kwargs): + raise exception.InstanceNotFound(instance_id='abcd') + + self.stubs.Set(network.API, 'get_instance_nw_info', raise_not_found) + + networks = common.get_networks_for_instance(context={}, instance={}) + self.assertEqual(networks, {}) + class MetadataXMLDeserializationTest(test.TestCase): |
