Remove metadata/system_metadata filter handling from get_all

Since change I7141eef6a1c85ec6d6e8ee170911572535652978
this is dead code - the REST API handler code will check
to see if the user is trying to filter on joined tables
and return a 400 response, so we'd never get here now.

Change-Id: I75438ffb6cabf797aa98a93963107139a68e20b3
This commit is contained in:
Matt Riedemann 2017-10-05 11:54:57 -04:00
parent e4f89ed5dd
commit ad57e42072
3 changed files with 1 additions and 84 deletions

View File

@ -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():

View File

@ -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')

View File

@ -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)