From 19c13fc59da96f1112a8bf67700b1fa446972010 Mon Sep 17 00:00:00 2001 From: Gary Kotton Date: Mon, 1 Dec 2014 06:22:19 -0800 Subject: [PATCH] Scheduler: return a namedtuple from _get_group_details Commit 459ca56de2366aea53efc9ad3295fdf4ddcd452c added the utility method _get_group_details. This patch returns a namedtuple that contains the hosts and policies for the instance group. This makes the code easier to read and more robust. TrivialFix Change-Id: I76208092b06408022f48b1d965b982af86c78161 --- nova/scheduler/utils.py | 12 ++++++++---- nova/tests/unit/scheduler/test_scheduler_utils.py | 3 ++- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/nova/scheduler/utils.py b/nova/scheduler/utils.py index 6e4906de2d34..903b2c643820 100644 --- a/nova/scheduler/utils.py +++ b/nova/scheduler/utils.py @@ -14,6 +14,7 @@ """Utility methods for scheduling.""" +import collections import sys from oslo.config import cfg @@ -43,6 +44,8 @@ CONF.register_opts(scheduler_opts) CONF.import_opt('scheduler_default_filters', 'nova.scheduler.host_manager') +GroupDetails = collections.namedtuple('GroupDetails', ['hosts', 'policies']) + def build_request_spec(ctxt, image, instances, instance_type=None): """Build a request_spec for the scheduler. @@ -254,7 +257,7 @@ def _get_group_details(context, instance_uuids, user_group_hosts=None): :param instance_uuids: list of instance uuids :param user_group_hosts: Hosts from the group or empty set - :returns: None or tuple (group_hosts, group_policies) + :returns: None or namedtuple GroupDetails """ global _SUPPORTS_AFFINITY if _SUPPORTS_AFFINITY is None: @@ -290,7 +293,8 @@ def _get_group_details(context, instance_uuids, user_group_hosts=None): raise exception.NoValidHost(reason=msg) group_hosts = set(group.get_hosts(context)) user_hosts = set(user_group_hosts) if user_group_hosts else set() - return (user_hosts | group_hosts, group.policies) + return GroupDetails(hosts=user_hosts | group_hosts, + policies=group.policies) def setup_instance_group(context, request_spec, filter_properties): @@ -306,5 +310,5 @@ def setup_instance_group(context, request_spec, filter_properties): group_info = _get_group_details(context, instance_uuids, group_hosts) if group_info is not None: filter_properties['group_updated'] = True - (filter_properties['group_hosts'], - filter_properties['group_policies']) = group_info + filter_properties['group_hosts'] = group_info.hosts + filter_properties['group_policies'] = group_info.policies diff --git a/nova/tests/unit/scheduler/test_scheduler_utils.py b/nova/tests/unit/scheduler/test_scheduler_utils.py index b655ab64a2af..5b15519f5f0d 100644 --- a/nova/tests/unit/scheduler/test_scheduler_utils.py +++ b/nova/tests/unit/scheduler/test_scheduler_utils.py @@ -316,7 +316,8 @@ class SchedulerUtilsTestCase(test.NoDBTestCase): @mock.patch.object(scheduler_utils, '_get_group_details') def test_setup_instance_group_in_filter_properties(self, mock_ggd): - mock_ggd.return_value = (set(['hostA', 'hostB']), ['policy']) + mock_ggd.return_value = scheduler_utils.GroupDetails( + hosts=set(['hostA', 'hostB']), policies=['policy']) spec = {'instance_uuids': ['fake-uuid']} filter_props = {'group_hosts': ['hostC']}