diff --git a/nova/scheduler/filters/compute_capabilities_filter.py b/nova/scheduler/filters/compute_capabilities_filter.py index 75ad488b7d48..9b3fc20f1b7f 100644 --- a/nova/scheduler/filters/compute_capabilities_filter.py +++ b/nova/scheduler/filters/compute_capabilities_filter.py @@ -37,10 +37,11 @@ class ComputeCapabilitiesFilter(filters.BaseHostFilter): for key, req in instance_type['extra_specs'].iteritems(): # Either not scope format, or in capabilities scope scope = key.split(':') - if len(scope) > 1 and scope[0] != "capabilities": - continue - elif scope[0] == "capabilities": - del scope[0] + if len(scope) > 1: + if scope[0] != "capabilities": + continue + else: + del scope[0] cap = capabilities for index in range(0, len(scope)): try: diff --git a/nova/tests/scheduler/test_host_filters.py b/nova/tests/scheduler/test_host_filters.py index 93cd28d20975..dcfe75c2590a 100644 --- a/nova/tests/scheduler/test_host_filters.py +++ b/nova/tests/scheduler/test_host_filters.py @@ -795,6 +795,13 @@ class HostFiltersTestCase(test.NoDBTestCase): 'trust:trusted_host': 'true'}, passes=True) + def test_compute_filter_pass_extra_specs_same_as_scope(self): + # Make sure this still works even if the key is the same as the scope + self._do_test_compute_filter_extra_specs( + ecaps={'capabilities': 1}, + especs={'capabilities': '1'}, + passes=True) + def test_compute_filter_extra_specs_simple_with_wrong_scope(self): self._do_test_compute_filter_extra_specs( ecaps={'opt1': 1, 'opt2': 2},