Make "enabled_drivers" config option more resilient to failures
Do not fail to start the ironic-conductor service if there's a trailing comma or an empty value as part of the "enabled_drivers" or "enabled_network_interfaces" configuration option, instead, log a warning alerting the operation of the wrong syntax. Change-Id: Id9141c014263de5e72641613d970fd481a6aaa74 Closes-Bug: #1647783
This commit is contained in:
parent
d69a3b6c58
commit
a581c1eafc
@ -182,6 +182,13 @@ class BaseDriverFactory(object):
|
|||||||
duplicated_drivers = []
|
duplicated_drivers = []
|
||||||
cls._enabled_driver_list = []
|
cls._enabled_driver_list = []
|
||||||
for item, cnt in counter:
|
for item, cnt in counter:
|
||||||
|
if not item:
|
||||||
|
LOG.warning(
|
||||||
|
_LW('An empty driver was specified in the "%s" '
|
||||||
|
'configuration option and will be ignored. Please '
|
||||||
|
'fix your ironic.conf file to avoid this warning '
|
||||||
|
'message.'), cls._enabled_driver_list_config_option)
|
||||||
|
continue
|
||||||
if cnt > 1:
|
if cnt > 1:
|
||||||
duplicated_drivers.append(item)
|
duplicated_drivers.append(item)
|
||||||
cls._enabled_driver_list.append(item)
|
cls._enabled_driver_list.append(item)
|
||||||
|
@ -71,6 +71,14 @@ class DriverLoadTestCase(base.TestCase):
|
|||||||
['fake'], driver_factory.DriverFactory._extension_manager.names())
|
['fake'], driver_factory.DriverFactory._extension_manager.names())
|
||||||
self.assertTrue(mock_log.called)
|
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.assertEqual(
|
||||||
|
['fake'], driver_factory.DriverFactory._extension_manager.names())
|
||||||
|
self.assertTrue(mock_log.called)
|
||||||
|
|
||||||
@mock.patch.object(driver_factory, '_warn_if_unsupported')
|
@mock.patch.object(driver_factory, '_warn_if_unsupported')
|
||||||
def test_driver_init_checks_unsupported(self, mock_warn):
|
def test_driver_init_checks_unsupported(self, mock_warn):
|
||||||
self.config(enabled_drivers=['fake'])
|
self.config(enabled_drivers=['fake'])
|
||||||
|
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
fixes:
|
||||||
|
- Fixes an issue where the ironic-conductor service would not
|
||||||
|
run if a trailing comma or empty driver was specified in the
|
||||||
|
``[DEFAULT]enabled_drivers`` configuration option. The service now
|
||||||
|
runs and logs a warning.
|
Loading…
Reference in New Issue
Block a user