Fix service_mapped_to_host filter

The service_mapped_to_host filter is used to check if a service is
mapped to a host, based on the group for the service or its
host_in_groups attribute if one exists. We check if the service's group
is in the 'groups' list. However, to get the list of groups to which a
host belongs, we should use the 'group_names' list.

This filter is currently only used in neutron IPv6 module loading, so
the effects are minimal.

Change-Id: I37409ca8d273b0426df0a648db222dc5432e738a
Closes-Bug: #1868285
This commit is contained in:
Mark Goddard 2020-03-20 17:03:14 +00:00
parent 9643dd54e2
commit 35966c9186
2 changed files with 3 additions and 3 deletions

View File

@ -63,7 +63,7 @@ def service_mapped_to_host(context, service):
group = service.get("group")
if group is not None:
return group in context.get("groups")
return group in context.get("group_names")
raise exception.FilterError(
"Service definition for '%s' does not have a 'group' or "

View File

@ -104,14 +104,14 @@ class TestFilters(unittest.TestCase):
service = {
'group': 'foo'
}
context = self._make_context({'groups': ['foo', 'bar']})
context = self._make_context({'group_names': ['foo', 'bar']})
self.assertTrue(filters.service_mapped_to_host(context, service))
def test_service_mapped_to_host_not_in_group(self):
service = {
'group': 'foo'
}
context = self._make_context({'groups': ['bar']})
context = self._make_context({'group_names': ['bar']})
self.assertFalse(filters.service_mapped_to_host(context, service))
def test_service_mapped_to_host_no_attr(self):