Merge "trivial: Remove FakeScheduler"
This commit is contained in:
@@ -32,20 +32,15 @@ of the entrypoints under the namespace 'nova.scheduler.driver' of file
|
|||||||
'setup.cfg'. If nothing is specified in this option, the 'filter_scheduler' is
|
'setup.cfg'. If nothing is specified in this option, the 'filter_scheduler' is
|
||||||
used.
|
used.
|
||||||
|
|
||||||
Other options are:
|
|
||||||
|
|
||||||
* 'fake_scheduler' which is used for testing.
|
|
||||||
|
|
||||||
Possible values:
|
Possible values:
|
||||||
|
|
||||||
* Any of the drivers included in Nova:
|
* Any of the drivers included in Nova:
|
||||||
|
|
||||||
* filter_scheduler
|
* filter_scheduler
|
||||||
* fake_scheduler
|
|
||||||
|
|
||||||
* You may also set this to the entry point name of a custom scheduler driver,
|
* You may also set this to the entry point name of a custom scheduler driver,
|
||||||
but you will be responsible for creating and maintaining it in your setup.cfg
|
but you will be responsible for creating and maintaining it in your
|
||||||
file.
|
``setup.cfg`` file.
|
||||||
|
|
||||||
Related options:
|
Related options:
|
||||||
|
|
||||||
|
@@ -55,16 +55,17 @@ class SchedulerManager(manager.Manager):
|
|||||||
|
|
||||||
_sentinel = object()
|
_sentinel = object()
|
||||||
|
|
||||||
def __init__(self, scheduler_driver=None, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
self.placement_client = report.SchedulerReportClient()
|
self.placement_client = report.SchedulerReportClient()
|
||||||
if not scheduler_driver:
|
|
||||||
scheduler_driver = CONF.scheduler.driver
|
|
||||||
self.driver = driver.DriverManager(
|
self.driver = driver.DriverManager(
|
||||||
"nova.scheduler.driver",
|
'nova.scheduler.driver',
|
||||||
scheduler_driver,
|
CONF.scheduler.driver,
|
||||||
invoke_on_load=True).driver
|
invoke_on_load=True
|
||||||
super(SchedulerManager, self).__init__(service_name='scheduler',
|
).driver
|
||||||
*args, **kwargs)
|
|
||||||
|
super(SchedulerManager, self).__init__(
|
||||||
|
service_name='scheduler', *args, **kwargs
|
||||||
|
)
|
||||||
|
|
||||||
@periodic_task.periodic_task(
|
@periodic_task.periodic_task(
|
||||||
spacing=CONF.scheduler.discover_hosts_in_cells_interval,
|
spacing=CONF.scheduler.discover_hosts_in_cells_interval,
|
||||||
|
@@ -46,16 +46,3 @@ class TestScheduler(test.NoDBTestCase):
|
|||||||
mock_serve.assert_called_once_with(
|
mock_serve.assert_called_once_with(
|
||||||
service_create.return_value, workers=4)
|
service_create.return_value, workers=4)
|
||||||
mock_wait.assert_called_once_with()
|
mock_wait.assert_called_once_with()
|
||||||
|
|
||||||
@mock.patch('nova.service.Service.create')
|
|
||||||
@mock.patch('nova.service.serve')
|
|
||||||
@mock.patch('nova.service.wait')
|
|
||||||
@mock.patch('oslo_concurrency.processutils.get_worker_count')
|
|
||||||
def test_workers_fake_scheduler(self, get_worker_count, mock_wait,
|
|
||||||
mock_serve, service_create):
|
|
||||||
self.flags(driver='fake_scheduler', group='scheduler')
|
|
||||||
scheduler.main()
|
|
||||||
get_worker_count.assert_not_called()
|
|
||||||
mock_serve.assert_called_once_with(
|
|
||||||
service_create.return_value, workers=1)
|
|
||||||
mock_wait.assert_called_once_with()
|
|
||||||
|
@@ -20,14 +20,15 @@ import mock
|
|||||||
from oslo_serialization import jsonutils
|
from oslo_serialization import jsonutils
|
||||||
from oslo_utils.fixture import uuidsentinel as uuids
|
from oslo_utils.fixture import uuidsentinel as uuids
|
||||||
|
|
||||||
|
from nova import context
|
||||||
from nova import exception
|
from nova import exception
|
||||||
from nova import objects
|
from nova import objects
|
||||||
from nova.scheduler import filter_scheduler
|
from nova.scheduler import filter_scheduler
|
||||||
from nova.scheduler import host_manager
|
from nova.scheduler import host_manager
|
||||||
from nova.scheduler import utils as scheduler_utils
|
from nova.scheduler import utils as scheduler_utils
|
||||||
from nova.scheduler import weights
|
from nova.scheduler import weights
|
||||||
|
from nova import servicegroup
|
||||||
from nova import test # noqa
|
from nova import test # noqa
|
||||||
from nova.tests.unit.scheduler import test_scheduler
|
|
||||||
|
|
||||||
|
|
||||||
fake_numa_limit = objects.NUMATopologyLimits(cpu_allocation_ratio=1.0,
|
fake_numa_limit = objects.NUMATopologyLimits(cpu_allocation_ratio=1.0,
|
||||||
@@ -50,19 +51,42 @@ fake_selection = objects.Selection(service_host="fake_host",
|
|||||||
allocation_request_version=fake_alloc_version)
|
allocation_request_version=fake_alloc_version)
|
||||||
|
|
||||||
|
|
||||||
class FilterSchedulerTestCase(test_scheduler.SchedulerTestCase):
|
class FilterSchedulerTestCase(test.NoDBTestCase):
|
||||||
"""Test case for Filter Scheduler."""
|
"""Test case for Filter Scheduler."""
|
||||||
|
|
||||||
driver_cls = filter_scheduler.FilterScheduler
|
@mock.patch.object(host_manager.HostManager, '_init_instance_info',
|
||||||
|
new=mock.Mock())
|
||||||
|
@mock.patch.object(host_manager.HostManager, '_init_aggregates',
|
||||||
|
new=mock.Mock())
|
||||||
|
@mock.patch('nova.scheduler.client.report.SchedulerReportClient',
|
||||||
|
autospec=True, new=mock.Mock())
|
||||||
|
@mock.patch('nova.scheduler.client.query.SchedulerQueryClient',
|
||||||
|
autospec=True, new=mock.Mock())
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
with mock.patch(
|
|
||||||
'nova.scheduler.client.report.SchedulerReportClient',
|
|
||||||
autospec=True), mock.patch(
|
|
||||||
'nova.scheduler.client.query.SchedulerQueryClient',
|
|
||||||
autospec=True):
|
|
||||||
super(FilterSchedulerTestCase, self).setUp()
|
super(FilterSchedulerTestCase, self).setUp()
|
||||||
|
|
||||||
|
self.driver = filter_scheduler.FilterScheduler()
|
||||||
|
self.context = context.RequestContext('fake_user', 'fake_project')
|
||||||
|
self.topic = 'fake_topic'
|
||||||
|
self.servicegroup_api = servicegroup.API()
|
||||||
|
|
||||||
|
@mock.patch('nova.objects.ServiceList.get_by_topic')
|
||||||
|
@mock.patch('nova.servicegroup.API.service_is_up')
|
||||||
|
def test_hosts_up(self, mock_service_is_up, mock_get_by_topic):
|
||||||
|
service1 = objects.Service(host='host1')
|
||||||
|
service2 = objects.Service(host='host2')
|
||||||
|
services = objects.ServiceList(objects=[service1, service2])
|
||||||
|
|
||||||
|
mock_get_by_topic.return_value = services
|
||||||
|
mock_service_is_up.side_effect = [False, True]
|
||||||
|
|
||||||
|
result = self.driver.hosts_up(self.context, self.topic)
|
||||||
|
self.assertEqual(result, ['host2'])
|
||||||
|
|
||||||
|
mock_get_by_topic.assert_called_once_with(self.context, self.topic)
|
||||||
|
calls = [mock.call(service1), mock.call(service2)]
|
||||||
|
self.assertEqual(calls, mock_service_is_up.call_args_list)
|
||||||
|
|
||||||
@mock.patch('nova.scheduler.utils.claim_resources')
|
@mock.patch('nova.scheduler.utils.claim_resources')
|
||||||
@mock.patch('nova.scheduler.filter_scheduler.FilterScheduler.'
|
@mock.patch('nova.scheduler.filter_scheduler.FilterScheduler.'
|
||||||
'_get_all_host_states')
|
'_get_all_host_states')
|
||||||
|
@@ -27,7 +27,6 @@ from nova import objects
|
|||||||
from nova.scheduler import filter_scheduler
|
from nova.scheduler import filter_scheduler
|
||||||
from nova.scheduler import host_manager
|
from nova.scheduler import host_manager
|
||||||
from nova.scheduler import manager
|
from nova.scheduler import manager
|
||||||
from nova import servicegroup
|
|
||||||
from nova import test
|
from nova import test
|
||||||
from nova.tests.unit import fake_server_actions
|
from nova.tests.unit import fake_server_actions
|
||||||
from nova.tests.unit.scheduler import fakes
|
from nova.tests.unit.scheduler import fakes
|
||||||
@@ -60,14 +59,11 @@ class SchedulerManagerTestCase(test.NoDBTestCase):
|
|||||||
"""Test case for scheduler manager."""
|
"""Test case for scheduler manager."""
|
||||||
|
|
||||||
manager_cls = manager.SchedulerManager
|
manager_cls = manager.SchedulerManager
|
||||||
driver_cls = fakes.FakeScheduler
|
|
||||||
driver_plugin_name = 'fake_scheduler'
|
|
||||||
|
|
||||||
@mock.patch.object(host_manager.HostManager, '_init_instance_info')
|
@mock.patch.object(host_manager.HostManager, '_init_instance_info')
|
||||||
@mock.patch.object(host_manager.HostManager, '_init_aggregates')
|
@mock.patch.object(host_manager.HostManager, '_init_aggregates')
|
||||||
def setUp(self, mock_init_agg, mock_init_inst):
|
def setUp(self, mock_init_agg, mock_init_inst):
|
||||||
super(SchedulerManagerTestCase, self).setUp()
|
super(SchedulerManagerTestCase, self).setUp()
|
||||||
self.flags(driver=self.driver_plugin_name, group='scheduler')
|
|
||||||
self.manager = self.manager_cls()
|
self.manager = self.manager_cls()
|
||||||
self.context = context.RequestContext('fake_user', 'fake_project')
|
self.context = context.RequestContext('fake_user', 'fake_project')
|
||||||
self.topic = 'fake_topic'
|
self.topic = 'fake_topic'
|
||||||
@@ -75,11 +71,6 @@ class SchedulerManagerTestCase(test.NoDBTestCase):
|
|||||||
self.fake_kwargs = {'cat': 'meow', 'dog': 'woof'}
|
self.fake_kwargs = {'cat': 'meow', 'dog': 'woof'}
|
||||||
fake_server_actions.stub_out_action_events(self)
|
fake_server_actions.stub_out_action_events(self)
|
||||||
|
|
||||||
def test_1_correct_init(self):
|
|
||||||
# Correct scheduler driver
|
|
||||||
manager = self.manager
|
|
||||||
self.assertIsInstance(manager.driver, self.driver_cls)
|
|
||||||
|
|
||||||
@mock.patch('nova.scheduler.request_filter.process_reqspec')
|
@mock.patch('nova.scheduler.request_filter.process_reqspec')
|
||||||
@mock.patch('nova.scheduler.utils.resources_from_request_spec')
|
@mock.patch('nova.scheduler.utils.resources_from_request_spec')
|
||||||
@mock.patch('nova.scheduler.client.report.SchedulerReportClient.'
|
@mock.patch('nova.scheduler.client.report.SchedulerReportClient.'
|
||||||
@@ -448,36 +439,3 @@ class SchedulerManagerTestCase(test.NoDBTestCase):
|
|||||||
self.manager._discover_hosts_in_cells(mock.sentinel.context)
|
self.manager._discover_hosts_in_cells(mock.sentinel.context)
|
||||||
mock_log_warning.assert_not_called()
|
mock_log_warning.assert_not_called()
|
||||||
mock_log_debug.assert_called_once_with(msg)
|
mock_log_debug.assert_called_once_with(msg)
|
||||||
|
|
||||||
|
|
||||||
class SchedulerTestCase(test.NoDBTestCase):
|
|
||||||
"""Test case for base scheduler driver class."""
|
|
||||||
|
|
||||||
# So we can subclass this test and re-use tests if we need.
|
|
||||||
driver_cls = fakes.FakeScheduler
|
|
||||||
|
|
||||||
@mock.patch.object(host_manager.HostManager, '_init_instance_info')
|
|
||||||
@mock.patch.object(host_manager.HostManager, '_init_aggregates')
|
|
||||||
def setUp(self, mock_init_agg, mock_init_inst):
|
|
||||||
super(SchedulerTestCase, self).setUp()
|
|
||||||
self.driver = self.driver_cls()
|
|
||||||
self.context = context.RequestContext('fake_user', 'fake_project')
|
|
||||||
self.topic = 'fake_topic'
|
|
||||||
self.servicegroup_api = servicegroup.API()
|
|
||||||
|
|
||||||
@mock.patch('nova.objects.ServiceList.get_by_topic')
|
|
||||||
@mock.patch('nova.servicegroup.API.service_is_up')
|
|
||||||
def test_hosts_up(self, mock_service_is_up, mock_get_by_topic):
|
|
||||||
service1 = objects.Service(host='host1')
|
|
||||||
service2 = objects.Service(host='host2')
|
|
||||||
services = objects.ServiceList(objects=[service1, service2])
|
|
||||||
|
|
||||||
mock_get_by_topic.return_value = services
|
|
||||||
mock_service_is_up.side_effect = [False, True]
|
|
||||||
|
|
||||||
result = self.driver.hosts_up(self.context, self.topic)
|
|
||||||
self.assertEqual(result, ['host2'])
|
|
||||||
|
|
||||||
mock_get_by_topic.assert_called_once_with(self.context, self.topic)
|
|
||||||
calls = [mock.call(service1), mock.call(service2)]
|
|
||||||
self.assertEqual(calls, mock_service_is_up.call_args_list)
|
|
@@ -50,7 +50,6 @@ nova.compute.monitors.cpu =
|
|||||||
virt_driver = nova.compute.monitors.cpu.virt_driver:Monitor
|
virt_driver = nova.compute.monitors.cpu.virt_driver:Monitor
|
||||||
nova.scheduler.driver =
|
nova.scheduler.driver =
|
||||||
filter_scheduler = nova.scheduler.filter_scheduler:FilterScheduler
|
filter_scheduler = nova.scheduler.filter_scheduler:FilterScheduler
|
||||||
fake_scheduler = nova.tests.unit.scheduler.fakes:FakeScheduler
|
|
||||||
console_scripts =
|
console_scripts =
|
||||||
nova-api = nova.cmd.api:main
|
nova-api = nova.cmd.api:main
|
||||||
nova-api-metadata = nova.cmd.api_metadata:main
|
nova-api-metadata = nova.cmd.api_metadata:main
|
||||||
|
Reference in New Issue
Block a user