summaryrefslogtreecommitdiff
path: root/ironic
diff options
context:
space:
mode:
authorZuul <zuul@review.openstack.org>2018-02-01 11:09:59 +0000
committerGerrit Code Review <review@openstack.org>2018-02-01 11:09:59 +0000
commitd4e35611c4be8aba07907e57e684c10219af7f9c (patch)
tree2a6e88981b093846da5efcfb1505a988c134d73d /ironic
parentf1e5b92e446a7bf15e052aaab2692c3d4f5710a1 (diff)
parent02378fdcde330333af851bdf8c42813f5a216c1d (diff)
downloadironic-d4e35611c4be8aba07907e57e684c10219af7f9c.tar.gz
Merge "Deprecate classic drivers"
Diffstat (limited to 'ironic')
-rw-r--r--ironic/conf/default.py6
-rw-r--r--ironic/drivers/base.py4
-rw-r--r--ironic/tests/unit/common/test_driver_factory.py41
3 files changed, 34 insertions, 17 deletions
diff --git a/ironic/conf/default.py b/ironic/conf/default.py
index a5b476bb3..6611b9688 100644
--- a/ironic/conf/default.py
+++ b/ironic/conf/default.py
@@ -85,7 +85,11 @@ driver_opts = [
'complete list of drivers present on your system may '
'be found by enumerating the "ironic.drivers" '
'entrypoint. An example may be found in the '
- 'developer documentation online.')),
+ 'developer documentation online.'),
+ deprecated_for_removal=True,
+ deprecated_reason=_('Hardware types should be used instead '
+ 'of classic drivers. They are enabled '
+ 'via the enabled_hardware_types option.')),
cfg.ListOpt('enabled_hardware_types',
default=['ipmi'],
help=_('Specify the list of hardware types to load during '
diff --git a/ironic/drivers/base.py b/ironic/drivers/base.py
index 0e7b2ffdf..cfc284e1b 100644
--- a/ironic/drivers/base.py
+++ b/ironic/drivers/base.py
@@ -49,11 +49,13 @@ class BaseDriver(object):
the interfaces are appropriate.
"""
- supported = True
+ supported = False
"""Indicates if a driver is supported.
This will be set to False for drivers which are untested in first- or
third-party CI, or in the process of being deprecated.
+
+ All classic drivers are now deprecated, and thus unsupported.
"""
# NOTE(jlvillal): These should be tuples to help prevent child classes from
diff --git a/ironic/tests/unit/common/test_driver_factory.py b/ironic/tests/unit/common/test_driver_factory.py
index 12e7b2e67..12cb0dbe7 100644
--- a/ironic/tests/unit/common/test_driver_factory.py
+++ b/ironic/tests/unit/common/test_driver_factory.py
@@ -31,7 +31,7 @@ from ironic.tests.unit.objects import utils as obj_utils
class FakeEp(object):
- name = 'fake'
+ name = 'fake-hardware'
class DriverLoadTestCase(db_base.DbTestCase):
@@ -45,52 +45,62 @@ class DriverLoadTestCase(db_base.DbTestCase):
driver='aaa', reason='bbb'))
def test_driver_load_error_if_driver_enabled(self):
- self.config(enabled_drivers=['fake'])
+ self.config(enabled_hardware_types=['fake-hardware'])
with mock.patch.object(named.NamedExtensionManager,
'__init__', self._fake_init_driver_err):
self.assertRaises(
exception.DriverLoadError,
- driver_factory.DriverFactory._init_extension_manager)
+ driver_factory.HardwareTypesFactory._init_extension_manager)
def test_wrap_in_driver_load_error_if_driver_enabled(self):
- self.config(enabled_drivers=['fake'])
+ self.config(enabled_hardware_types=['fake-hardware'])
with mock.patch.object(named.NamedExtensionManager,
'__init__', self._fake_init_name_err):
self.assertRaises(
exception.DriverLoadError,
- driver_factory.DriverFactory._init_extension_manager)
+ driver_factory.HardwareTypesFactory._init_extension_manager)
@mock.patch.object(named.NamedExtensionManager, 'names',
autospec=True)
def test_no_driver_load_error_if_driver_disabled(self, mock_em):
- self.config(enabled_drivers=[])
+ self.config(enabled_hardware_types=[])
with mock.patch.object(named.NamedExtensionManager,
'__init__', self._fake_init_driver_err):
- driver_factory.DriverFactory._init_extension_manager()
+ driver_factory.HardwareTypesFactory._init_extension_manager()
self.assertEqual(1, mock_em.call_count)
@mock.patch.object(driver_factory.LOG, 'warning', autospec=True)
def test_driver_duplicated_entry(self, mock_log):
- self.config(enabled_drivers=['fake', 'fake'])
- driver_factory.DriverFactory._init_extension_manager()
+ self.config(enabled_hardware_types=['fake-hardware',
+ 'fake-hardware'])
+ driver_factory.HardwareTypesFactory._init_extension_manager()
self.assertEqual(
- ['fake'], driver_factory.DriverFactory._extension_manager.names())
+ ['fake-hardware'],
+ driver_factory.HardwareTypesFactory._extension_manager.names())
self.assertTrue(mock_log.called)
@mock.patch.object(driver_factory.LOG, 'warning', autospec=True)
def test_driver_empty_entry(self, mock_log):
- self.config(enabled_drivers=['fake', ''])
- driver_factory.DriverFactory._init_extension_manager()
+ self.config(enabled_hardware_types=['fake-hardware', ''])
+ driver_factory.HardwareTypesFactory._init_extension_manager()
self.assertEqual(
- ['fake'], driver_factory.DriverFactory._extension_manager.names())
+ ['fake-hardware'],
+ driver_factory.HardwareTypesFactory._extension_manager.names())
self.assertTrue(mock_log.called)
@mock.patch.object(driver_factory, '_warn_if_unsupported', autospec=True)
def test_driver_init_checks_unsupported(self, mock_warn):
+ self.config(enabled_hardware_types=['fake-hardware'])
+ driver_factory.HardwareTypesFactory._init_extension_manager()
+ self.assertEqual(
+ ['fake-hardware'],
+ driver_factory.HardwareTypesFactory._extension_manager.names())
+ self.assertTrue(mock_warn.called)
+
+ @mock.patch.object(driver_factory.LOG, 'warning', autospec=True)
+ def test_classic_drivers_unsupported(self, mock_warn):
self.config(enabled_drivers=['fake'])
driver_factory.DriverFactory._init_extension_manager()
- self.assertEqual(
- ['fake'], driver_factory.DriverFactory._extension_manager.names())
self.assertTrue(mock_warn.called)
def test_build_driver_for_task(self):
@@ -103,6 +113,7 @@ class DriverLoadTestCase(db_base.DbTestCase):
else:
self.assertIsNotNone(impl)
+ @mock.patch.object(drivers_base.BaseDriver, 'supported', True)
@mock.patch.object(driver_factory, '_attach_interfaces_to_driver',
autospec=True)
@mock.patch.object(driver_factory.LOG, 'warning', autospec=True)