diff options
| author | Jenkins <jenkins@review.openstack.org> | 2012-01-21 05:18:26 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2012-01-21 05:18:26 +0000 |
| commit | ee75f9efb4d69bca400ad4b5a2c901540963ebb4 (patch) | |
| tree | 6c182b0fae18bb268ed7da1cd78eaa938fe95651 | |
| parent | c7646aa88d564694b99a569c3cdd2c7ffbbb745d (diff) | |
| parent | d7448fc86a929226a34e92ef77684441f451edaf (diff) | |
| download | nova-ee75f9efb4d69bca400ad4b5a2c901540963ebb4.tar.gz nova-ee75f9efb4d69bca400ad4b5a2c901540963ebb4.tar.xz nova-ee75f9efb4d69bca400ad4b5a2c901540963ebb4.zip | |
Merge "Handle FlavorNotFound on server list w/ filter"
| -rw-r--r-- | nova/compute/api.py | 16 | ||||
| -rw-r--r-- | nova/tests/test_compute.py | 6 |
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) |
