Merge "Replace config 'clean_nodes' with 'automated_clean'"

This commit is contained in:
Jenkins 2016-02-16 17:15:17 +00:00 committed by Gerrit Code Review
commit 1226bde2ff
5 changed files with 28 additions and 21 deletions

View File

@ -28,7 +28,7 @@ Enabling cleaning
To enable cleaning, ensure your ironic.conf is set as follows: :: To enable cleaning, ensure your ironic.conf is set as follows: ::
[conductor] [conductor]
clean_nodes=true automated_clean=true
This will enable the default set of steps, based on your hardware and ironic This will enable the default set of steps, based on your hardware and ironic
drivers. If you're using an agent_* driver, this includes, by default, erasing drivers. If you're using an agent_* driver, this includes, by default, erasing

View File

@ -683,11 +683,12 @@
# unlimited. (integer value) # unlimited. (integer value)
#inspect_timeout=1800 #inspect_timeout=1800
# Cleaning is a configurable set of steps, such as erasing # Enables or disables automated cleaning. Automated cleaning
# disk drives, that are performed on the node to ensure it is # is a configurable set of steps, such as erasing disk drives,
# in a baseline state and ready to be deployed to. This is # that are performed on the node to ensure it is in a baseline
# done after instance deletion, and during the transition from # state and ready to be deployed to. This is done after
# a "managed" to "available" state. When enabled, the # instance deletion as well as during the transition from a
# "manageable" to "available" state. When enabled, the
# particular steps performed to clean a node depend on which # particular steps performed to clean a node depend on which
# driver that node is managed by; see the individual driver's # driver that node is managed by; see the individual driver's
# documentation for details. NOTE: The introduction of the # documentation for details. NOTE: The introduction of the
@ -695,7 +696,8 @@
# significantly longer. In an environment where all tenants # significantly longer. In an environment where all tenants
# are trusted (eg, because there is only one tenant), this # are trusted (eg, because there is only one tenant), this
# option could be safely disabled. (boolean value) # option could be safely disabled. (boolean value)
#clean_nodes=true # Deprecated group/name - [conductor]/clean_nodes
#automated_clean=true
# Timeout (seconds) to wait for a callback from the ramdisk # Timeout (seconds) to wait for a callback from the ramdisk
# doing the cleaning. If the timeout is reached the node will # doing the cleaning. If the timeout is reached the node will

View File

@ -151,14 +151,18 @@ conductor_opts = [
default=1800, default=1800,
help=_('Timeout (seconds) for waiting for node inspection. ' help=_('Timeout (seconds) for waiting for node inspection. '
'0 - unlimited.')), '0 - unlimited.')),
cfg.BoolOpt('clean_nodes', # TODO(rloo): Remove support for deprecated name 'clean_nodes' in Newton
# cycle.
cfg.BoolOpt('automated_clean',
default=True, default=True,
help=_('Cleaning is a configurable set of steps, such as ' deprecated_name='clean_nodes',
'erasing disk drives, that are performed on the node ' help=_('Enables or disables automated cleaning. Automated '
'to ensure it is in a baseline state and ready to be ' 'cleaning is a configurable set of steps, '
'deployed to. ' 'such as erasing disk drives, that are performed on '
'This is done after instance deletion, and during ' 'the node to ensure it is in a baseline state and '
'the transition from a "managed" to "available" ' 'ready to be deployed to. This is '
'done after instance deletion as well as during '
'the transition from a "manageable" to "available" '
'state. When enabled, the particular steps ' 'state. When enabled, the particular steps '
'performed to clean a node depend on which driver ' 'performed to clean a node depend on which driver '
'that node is managed by; see the individual ' 'that node is managed by; see the individual '
@ -859,7 +863,7 @@ class ConductorManager(base_manager.BaseConductorManager):
LOG.debug('Starting %(type)s cleaning for node %(node)s', LOG.debug('Starting %(type)s cleaning for node %(node)s',
{'type': clean_type, 'node': node.uuid}) {'type': clean_type, 'node': node.uuid})
if not manual_clean and not CONF.conductor.clean_nodes: if not manual_clean and not CONF.conductor.automated_clean:
# Skip cleaning, move to AVAILABLE. # Skip cleaning, move to AVAILABLE.
node.clean_step = None node.clean_step = None
node.save() node.save()

View File

@ -1360,7 +1360,7 @@ class DoNodeCleanTestCase(mgr_utils.ServiceSetUpMixin,
tests_db_base.DbTestCase): tests_db_base.DbTestCase):
def setUp(self): def setUp(self):
super(DoNodeCleanTestCase, self).setUp() super(DoNodeCleanTestCase, self).setUp()
self.config(clean_nodes=True, group='conductor') self.config(automated_clean=True, group='conductor')
self.power_update = { self.power_update = {
'step': 'update_firmware', 'priority': 10, 'interface': 'power'} 'step': 'update_firmware', 'priority': 10, 'interface': 'power'}
self.deploy_update = { self.deploy_update = {
@ -1627,7 +1627,6 @@ class DoNodeCleanTestCase(mgr_utils.ServiceSetUpMixin,
@mock.patch('ironic.drivers.modules.fake.FakePower.validate') @mock.patch('ironic.drivers.modules.fake.FakePower.validate')
def __do_node_clean_validate_fail(self, mock_validate, clean_steps=None): def __do_node_clean_validate_fail(self, mock_validate, clean_steps=None):
# InvalidParameterValue should be cause node to go to CLEANFAIL # InvalidParameterValue should be cause node to go to CLEANFAIL
self.config(clean_nodes=True, group='conductor')
mock_validate.side_effect = exception.InvalidParameterValue('error') mock_validate.side_effect = exception.InvalidParameterValue('error')
tgt_prov_state = states.MANAGEABLE if clean_steps else states.AVAILABLE tgt_prov_state = states.MANAGEABLE if clean_steps else states.AVAILABLE
node = obj_utils.create_test_node( node = obj_utils.create_test_node(
@ -1650,7 +1649,7 @@ class DoNodeCleanTestCase(mgr_utils.ServiceSetUpMixin,
@mock.patch('ironic.drivers.modules.fake.FakePower.validate') @mock.patch('ironic.drivers.modules.fake.FakePower.validate')
def test__do_node_clean_automated_disabled(self, mock_validate): def test__do_node_clean_automated_disabled(self, mock_validate):
self.config(clean_nodes=False, group='conductor') self.config(automated_clean=False, group='conductor')
node = obj_utils.create_test_node( node = obj_utils.create_test_node(
self.context, driver='fake', self.context, driver='fake',
provision_state=states.CLEANING, provision_state=states.CLEANING,
@ -1675,7 +1674,6 @@ class DoNodeCleanTestCase(mgr_utils.ServiceSetUpMixin,
def __do_node_clean_prepare_clean_fail(self, mock_prep, clean_steps=None): def __do_node_clean_prepare_clean_fail(self, mock_prep, clean_steps=None):
# Exception from task.driver.deploy.prepare_cleaning should cause node # Exception from task.driver.deploy.prepare_cleaning should cause node
# to go to CLEANFAIL # to go to CLEANFAIL
self.config(clean_nodes=True, group='conductor')
mock_prep.side_effect = exception.InvalidParameterValue('error') mock_prep.side_effect = exception.InvalidParameterValue('error')
tgt_prov_state = states.MANAGEABLE if clean_steps else states.AVAILABLE tgt_prov_state = states.MANAGEABLE if clean_steps else states.AVAILABLE
node = obj_utils.create_test_node( node = obj_utils.create_test_node(
@ -1698,7 +1696,6 @@ class DoNodeCleanTestCase(mgr_utils.ServiceSetUpMixin,
@mock.patch('ironic.drivers.modules.fake.FakeDeploy.prepare_cleaning') @mock.patch('ironic.drivers.modules.fake.FakeDeploy.prepare_cleaning')
def __do_node_clean_prepare_clean_wait(self, mock_prep, clean_steps=None): def __do_node_clean_prepare_clean_wait(self, mock_prep, clean_steps=None):
self.config(clean_nodes=True, group='conductor')
mock_prep.return_value = states.CLEANWAIT mock_prep.return_value = states.CLEANWAIT
tgt_prov_state = states.MANAGEABLE if clean_steps else states.AVAILABLE tgt_prov_state = states.MANAGEABLE if clean_steps else states.AVAILABLE
node = obj_utils.create_test_node( node = obj_utils.create_test_node(
@ -1722,7 +1719,6 @@ class DoNodeCleanTestCase(mgr_utils.ServiceSetUpMixin,
@mock.patch.object(conductor_utils, 'set_node_cleaning_steps') @mock.patch.object(conductor_utils, 'set_node_cleaning_steps')
def __do_node_clean_steps_fail(self, mock_steps, clean_steps=None, def __do_node_clean_steps_fail(self, mock_steps, clean_steps=None,
invalid_exc=True): invalid_exc=True):
self.config(clean_nodes=True, group='conductor')
if invalid_exc: if invalid_exc:
mock_steps.side_effect = exception.InvalidParameterValue('invalid') mock_steps.side_effect = exception.InvalidParameterValue('invalid')
else: else:

View File

@ -0,0 +1,5 @@
---
deprecations:
- The [conductor]/clean_nodes config is deprecated and will be removed in the
Newton cycle. It has been replaced by the [conductor]/automated_clean
config.