From 2d3c304090a760dc707b38ff0981f6c499ea46c0 Mon Sep 17 00:00:00 2001 From: weikeyou Date: Thu, 17 May 2018 23:15:07 +0800 Subject: [PATCH] Filter disabled service for Chance Filter When use chance filter, it filters down node and chooses randomly. Maybe it is better to filter disable node. Change-Id: If2384090e58c30f9f6c2238db42958e61024b492 --- zun/scheduler/driver.py | 3 ++- zun/tests/unit/scheduler/test_scheduler.py | 8 ++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/zun/scheduler/driver.py b/zun/scheduler/driver.py index 9bbcd894b..86e8b63f7 100644 --- a/zun/scheduler/driver.py +++ b/zun/scheduler/driver.py @@ -40,7 +40,8 @@ class Scheduler(object): services = objects.ZunService.list_by_binary(context, 'zun-compute') return [service.host for service in services - if self.servicegroup_api.service_is_up(service)] + if self.servicegroup_api.service_is_up(service) + and not service.disabled] @abc.abstractmethod def select_destinations(self, context, containers, extra_spec): diff --git a/zun/tests/unit/scheduler/test_scheduler.py b/zun/tests/unit/scheduler/test_scheduler.py index ef8288b16..e1dbc4fc9 100644 --- a/zun/tests/unit/scheduler/test_scheduler.py +++ b/zun/tests/unit/scheduler/test_scheduler.py @@ -32,8 +32,12 @@ class SchedulerTestCase(base.TestCase): @mock.patch('zun.objects.ZunService.list_by_binary') @mock.patch('zun.api.servicegroup.ServiceGroup.service_is_up') def test_hosts_up(self, mock_service_is_up, mock_list_by_binary): - service1 = objects.ZunService(host='host1') - service2 = objects.ZunService(host='host2') + service1 = objects.ZunService() + service2 = objects.ZunService() + service1.host = 'host1' + service1.disabled = False + service2.host = 'host2' + service2.disabled = False services = [service1, service2] mock_list_by_binary.return_value = services