summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2012-01-21 05:18:26 +0000
committerGerrit Code Review <review@openstack.org>2012-01-21 05:18:26 +0000
commitee75f9efb4d69bca400ad4b5a2c901540963ebb4 (patch)
tree6c182b0fae18bb268ed7da1cd78eaa938fe95651
parentc7646aa88d564694b99a569c3cdd2c7ffbbb745d (diff)
parentd7448fc86a929226a34e92ef77684441f451edaf (diff)
downloadnova-ee75f9efb4d69bca400ad4b5a2c901540963ebb4.tar.gz
nova-ee75f9efb4d69bca400ad4b5a2c901540963ebb4.tar.xz
nova-ee75f9efb4d69bca400ad4b5a2c901540963ebb4.zip
Merge "Handle FlavorNotFound on server list w/ filter"
-rw-r--r--nova/compute/api.py16
-rw-r--r--nova/tests/test_compute.py6
2 files changed, 16 insertions, 6 deletions
diff --git a/nova/compute/api.py b/nova/compute/api.py
index 2f3749ca0..5254757de 100644
--- a/nova/compute/api.py
+++ b/nova/compute/api.py
@@ -1020,8 +1020,12 @@ class API(base.Base):
filters = {}
def _remap_flavor_filter(flavor_id):
- instance_type = instance_types.get_instance_type_by_flavor_id(
- flavor_id)
+ try:
+ instance_type = instance_types.get_instance_type_by_flavor_id(
+ flavor_id)
+ except exception.FlavorNotFound:
+ raise ValueError()
+
filters['instance_type_id'] = instance_type['id']
def _remap_fixed_ip_filter(fixed_ip):
@@ -1054,7 +1058,13 @@ class API(base.Base):
if isinstance(remap_object, basestring):
filters[remap_object] = value
else:
- remap_object(value)
+ try:
+ remap_object(value)
+
+ # We already know we can't match the filter, so
+ # return an empty list
+ except ValueError:
+ return []
local_zone_only = search_opts.get('local_zone_only', False)
diff --git a/nova/tests/test_compute.py b/nova/tests/test_compute.py
index 992b1076f..421a0ef89 100644
--- a/nova/tests/test_compute.py
+++ b/nova/tests/test_compute.py
@@ -2469,9 +2469,9 @@ class ComputeAPITestCase(BaseTestCase):
search_opts={'flavor': 5})
self.assertEqual(len(instances), 0)
- self.assertRaises(exception.FlavorNotFound,
- self.compute_api.get_all,
- c, search_opts={'flavor': 99})
+ # ensure unknown filter maps to an empty list, not an exception
+ instances = self.compute_api.get_all(c, search_opts={'flavor': 99})
+ self.assertEqual(instances, [])
instances = self.compute_api.get_all(c, search_opts={'flavor': 3})
self.assertEqual(len(instances), 1)