diff --git a/nova/compute/api.py b/nova/compute/api.py index adb8af6f0af5..6b12c1a5b76c 100644 --- a/nova/compute/api.py +++ b/nova/compute/api.py @@ -2325,21 +2325,13 @@ class API(base.Base): # any character, we need to use regexp escaping for it. filters['ip'] = '^%s$' % fixed_ip.replace('.', '\\.') - def _remap_metadata_filter(metadata): - filters['metadata'] = jsonutils.loads(metadata) - - def _remap_system_metadata_filter(metadata): - filters['system_metadata'] = jsonutils.loads(metadata) - # search_option to filter_name mapping. filter_mapping = { 'image': 'image_ref', 'name': 'display_name', 'tenant_id': 'project_id', 'flavor': _remap_flavor_filter, - 'fixed_ip': _remap_fixed_ip_filter, - 'metadata': _remap_metadata_filter, - 'system_metadata': _remap_system_metadata_filter} + 'fixed_ip': _remap_fixed_ip_filter} # copy from search_opts, doing various remappings as necessary for opt, value in search_opts.items(): diff --git a/nova/tests/unit/compute/test_compute.py b/nova/tests/unit/compute/test_compute.py index 8446d88d5b77..8b790ad2e308 100644 --- a/nova/tests/unit/compute/test_compute.py +++ b/nova/tests/unit/compute/test_compute.py @@ -8962,75 +8962,6 @@ class ComputeAPITestCase(BaseTestCase): power_state.RUNNING]}) self.assertEqual(len(instances), 3) - def test_get_all_by_metadata(self): - # Test searching instances by metadata. - - c = context.get_admin_context() - self._create_fake_instance_obj() # instance0 - self._create_fake_instance_obj({ # instance1 - 'metadata': {'key1': 'value1'}}) - instance2 = self._create_fake_instance_obj({ - 'metadata': {'key2': 'value2'}}) - instance3 = self._create_fake_instance_obj({ - 'metadata': {'key3': 'value3'}}) - instance4 = self._create_fake_instance_obj({ - 'metadata': {'key3': 'value3', - 'key4': 'value4'}}) - - # get all instances - instances = self.compute_api.get_all(c, - search_opts={'metadata': u"{}"}) - self.assertEqual(len(instances), 5) - - # wrong key/value combination - instances = self.compute_api.get_all(c, - search_opts={'metadata': u'{"key1": "value3"}'}) - self.assertEqual(len(instances), 0) - - # non-existing keys - instances = self.compute_api.get_all(c, - search_opts={'metadata': u'{"key5": "value1"}'}) - self.assertEqual(len(instances), 0) - - # find existing instance - instances = self.compute_api.get_all(c, - search_opts={'metadata': u'{"key2": "value2"}'}) - self.assertEqual(len(instances), 1) - self.assertEqual(instances[0]['uuid'], instance2['uuid']) - - instances = self.compute_api.get_all(c, - search_opts={'metadata': u'{"key3": "value3"}'}) - self.assertEqual(len(instances), 2) - instance_uuids = [instance['uuid'] for instance in instances] - self.assertIn(instance3['uuid'], instance_uuids) - self.assertIn(instance4['uuid'], instance_uuids) - - # multiple criteria as a dict - instances = self.compute_api.get_all(c, - search_opts={'metadata': u'{"key3": "value3","key4": "value4"}'}) - self.assertEqual(len(instances), 1) - self.assertEqual(instances[0]['uuid'], instance4['uuid']) - - # multiple criteria as a list - instances = self.compute_api.get_all(c, - search_opts= - {'metadata': u'[{"key4": "value4"},{"key3": "value3"}]'}) - self.assertEqual(len(instances), 1) - self.assertEqual(instances[0]['uuid'], instance4['uuid']) - - def test_get_all_by_system_metadata(self): - # Test searching instances by system metadata. - - c = context.get_admin_context() - instance1 = self._create_fake_instance_obj({ - 'system_metadata': {'key1': 'value1'}}) - - # find existing instance - instances = self.compute_api.get_all(c, - search_opts={'system_metadata': u'{"key1": "value1"}'}) - self.assertEqual(len(instances), 1) - self.assertEqual(instances[0]['uuid'], instance1['uuid']) - def test_instance_metadata(self): meta_changes = [None] self.flags(notify_on_state_change='vm_state', group='notifications') diff --git a/nova/tests/unit/compute/test_compute_api.py b/nova/tests/unit/compute/test_compute_api.py index 7aca05d94959..c1757b30d991 100644 --- a/nova/tests/unit/compute/test_compute_api.py +++ b/nova/tests/unit/compute/test_compute_api.py @@ -4204,12 +4204,6 @@ class _ComputeAPIUnitTestMixIn(object): filters = mock_get.call_args_list[0][0][1] self.assertEqual({'project_id': 'foo'}, filters) - def test_metadata_invalid_return_empty_object(self): - api = compute_api.API() - ret = api.get_all(self.context, search_opts={'metadata': 'foo'}) - self.assertIsInstance(ret, objects.InstanceList) - self.assertEqual(0, len(ret)) - def test_populate_instance_names_host_name(self): params = dict(display_name="vm1") instance = self._create_instance_obj(params=params)