diff --git a/nova/scheduler/multi.py b/nova/scheduler/multi.py deleted file mode 100644 index 2077fce5b..000000000 --- a/nova/scheduler/multi.py +++ /dev/null @@ -1,78 +0,0 @@ -# vim: tabstop=4 shiftwidth=4 softtabstop=4 - -# Copyright (c) 2010 OpenStack Foundation -# Copyright 2010 United States Government as represented by the -# Administrator of the National Aeronautics and Space Administration. -# All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -""" -Scheduler that allows routing some calls to one driver and others to another. - -This scheduler was originally used to deal with both compute and volume. But -is now used for openstack extensions that want to use the nova-scheduler to -schedule requests to compute nodes but provide their own manager and topic. - -https://bugs.launchpad.net/nova/+bug/1009681 -""" - -from oslo.config import cfg - -from nova.openstack.common import importutils -from nova.scheduler import driver - - -multi_scheduler_opts = [ - cfg.StrOpt('compute_scheduler_driver', - default='nova.scheduler.' - 'filter_scheduler.FilterScheduler', - help='Driver to use for scheduling compute calls'), - cfg.StrOpt('default_scheduler_driver', - default='nova.scheduler.chance.ChanceScheduler', - help='Default driver to use for scheduling calls'), - ] - -CONF = cfg.CONF -CONF.register_opts(multi_scheduler_opts) - - -class MultiScheduler(driver.Scheduler): - """A scheduler that holds multiple sub-schedulers. - - This exists to allow flag-driven composibility of schedulers, allowing - third parties to integrate custom schedulers more easily. - - """ - - def __init__(self): - super(MultiScheduler, self).__init__() - compute_driver = importutils.import_object( - CONF.compute_scheduler_driver) - default_driver = importutils.import_object( - CONF.default_scheduler_driver) - - self.drivers = {'compute': compute_driver, - 'default': default_driver} - - def schedule_run_instance(self, *args, **kwargs): - return self.drivers['compute'].schedule_run_instance(*args, **kwargs) - - def schedule_prep_resize(self, *args, **kwargs): - return self.drivers['compute'].schedule_prep_resize(*args, **kwargs) - - def update_service_capabilities(self, service_name, host, capabilities): - # Multi scheduler is only a holder of sub-schedulers, so - # pass the capabilities to the schedulers that matter - for d in self.drivers.values(): - d.update_service_capabilities(service_name, host, capabilities) diff --git a/nova/tests/scheduler/test_multi_scheduler.py b/nova/tests/scheduler/test_multi_scheduler.py deleted file mode 100644 index fb25ae9da..000000000 --- a/nova/tests/scheduler/test_multi_scheduler.py +++ /dev/null @@ -1,77 +0,0 @@ -# vim: tabstop=4 shiftwidth=4 softtabstop=4 - -# Copyright 2010 United States Government as represented by the -# Administrator of the National Aeronautics and Space Administration. -# Copyright 2011 OpenStack Foundation -# All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. -""" -Tests For Multi Scheduler -""" - -from nova.scheduler import driver -from nova.scheduler import multi -from nova.tests.scheduler import test_scheduler - - -class FakeComputeScheduler(driver.Scheduler): - is_fake_compute = True - - def __init__(self): - super(FakeComputeScheduler, self).__init__() - self.is_update_caps_called = False - - def schedule_theoretical(self, *args, **kwargs): - pass - - -class FakeDefaultScheduler(driver.Scheduler): - is_fake_default = True - - def __init__(self): - super(FakeDefaultScheduler, self).__init__() - self.is_update_caps_called = False - - -class MultiDriverTestCase(test_scheduler.SchedulerTestCase): - """Test case for multi driver.""" - - driver_cls = multi.MultiScheduler - - def setUp(self): - super(MultiDriverTestCase, self).setUp() - base_name = 'nova.tests.scheduler.test_multi_scheduler.%s' - compute_cls_name = base_name % 'FakeComputeScheduler' - default_cls_name = base_name % 'FakeDefaultScheduler' - self.flags(compute_scheduler_driver=compute_cls_name, - default_scheduler_driver=default_cls_name) - self._manager = multi.MultiScheduler() - - def test_drivers_inited(self): - mgr = self._manager - self.assertEqual(len(mgr.drivers), 2) - self.assertTrue(mgr.drivers['compute'].is_fake_compute) - self.assertTrue(mgr.drivers['default'].is_fake_default) - - def test_update_service_capabilities(self): - def fake_update_service_capabilities(self, service, host, caps): - self.is_update_caps_called = True - - mgr = self._manager - self.stubs.Set(driver.Scheduler, - 'update_service_capabilities', - fake_update_service_capabilities) - self.assertFalse(mgr.drivers['compute'].is_update_caps_called) - mgr.update_service_capabilities('foo_svc', 'foo_host', 'foo_caps') - self.assertTrue(mgr.drivers['compute'].is_update_caps_called)