Merge "Ensure anti affinity scheduling works" into stable/grizzly
This commit is contained in:
commit
4655df12b9
|
@ -240,7 +240,7 @@ def exact_filter(query, model, filters, legal_keys):
|
||||||
# OK, filtering on this key; what value do we search for?
|
# OK, filtering on this key; what value do we search for?
|
||||||
value = filters.pop(key)
|
value = filters.pop(key)
|
||||||
|
|
||||||
if key == 'metadata':
|
if key == 'metadata' or key == 'system_metadata':
|
||||||
column_attr = getattr(model, key)
|
column_attr = getattr(model, key)
|
||||||
if isinstance(value, list):
|
if isinstance(value, list):
|
||||||
for item in value:
|
for item in value:
|
||||||
|
@ -1691,7 +1691,8 @@ def instance_get_all_by_filters(context, filters, sort_key, sort_dir,
|
||||||
# For other filters that don't match this, we will do regexp matching
|
# For other filters that don't match this, we will do regexp matching
|
||||||
exact_match_filter_names = ['project_id', 'user_id', 'image_ref',
|
exact_match_filter_names = ['project_id', 'user_id', 'image_ref',
|
||||||
'vm_state', 'instance_type_id', 'uuid',
|
'vm_state', 'instance_type_id', 'uuid',
|
||||||
'metadata', 'task_state']
|
'metadata', 'host', 'task_state',
|
||||||
|
'system_metadata']
|
||||||
|
|
||||||
# Filter the query
|
# Filter the query
|
||||||
query_prefix = exact_filter(query_prefix, models.Instance,
|
query_prefix = exact_filter(query_prefix, models.Instance,
|
||||||
|
|
|
@ -144,7 +144,7 @@ class Scheduler(object):
|
||||||
|
|
||||||
# The system_metadata 'group' will be filtered
|
# The system_metadata 'group' will be filtered
|
||||||
members = db.instance_get_all_by_filters(context,
|
members = db.instance_get_all_by_filters(context,
|
||||||
{'deleted': False, 'group': group})
|
{'deleted': False, 'system_metadata': {'group': group}})
|
||||||
return [member['host']
|
return [member['host']
|
||||||
for member in members
|
for member in members
|
||||||
if member.get('host') is not None]
|
if member.get('host') is not None]
|
||||||
|
|
|
@ -181,6 +181,14 @@ class DbApiTestCase(DbTestCase):
|
||||||
{'metadata': {'foo': 'bar'}})
|
{'metadata': {'foo': 'bar'}})
|
||||||
self.assertEqual(1, len(result))
|
self.assertEqual(1, len(result))
|
||||||
|
|
||||||
|
def test_instance_get_all_by_filters_system_metadata(self):
|
||||||
|
instance = self.create_instances_with_args(
|
||||||
|
system_metadata={'foo': 'bar'})
|
||||||
|
self.create_instances_with_args()
|
||||||
|
result = db.instance_get_all_by_filters(self.context,
|
||||||
|
{'system_metadata': {'foo': 'bar'}})
|
||||||
|
self.assertEqual(1, len(result))
|
||||||
|
|
||||||
def test_instance_get_all_by_filters_unicode_value(self):
|
def test_instance_get_all_by_filters_unicode_value(self):
|
||||||
self.create_instances_with_args(display_name=u'test♥')
|
self.create_instances_with_args(display_name=u'test♥')
|
||||||
result = db.instance_get_all_by_filters(self.context,
|
result = db.instance_get_all_by_filters(self.context,
|
||||||
|
|
Loading…
Reference in New Issue