Merge "Do not send sensors data for nodes in maintenance mode"

This commit is contained in:
Zuul 2018-02-13 16:26:16 +00:00 committed by Gerrit Code Review
commit 1085121b8b
3 changed files with 38 additions and 2 deletions

View File

@ -2448,6 +2448,13 @@ class ConductorManager(base_manager.BaseConductorManager):
purpose=lock_purpose) as task:
if not getattr(task.driver, 'management', None):
continue
if task.node.maintenance:
LOG.debug('Skipping sending sensors data for node '
'%s as it is in maintenance mode',
task.node.uuid)
continue
task.driver.management.validate(task)
sensors_data = task.driver.management.get_sensors_data(
task)

View File

@ -4043,7 +4043,9 @@ class UpdatePortTestCase(mgr_utils.ServiceSetUpMixin, db_base.DbTestCase):
self._start_service()
CONF.set_override('send_sensor_data', True, group='conductor')
acquire_mock.return_value.__enter__.return_value.driver = self.driver
task = acquire_mock.return_value.__enter__.return_value
task.driver = self.driver
task.node.maintenance = False
with mock.patch.object(self.driver.management,
'get_sensors_data') as get_sensors_data_mock:
with mock.patch.object(self.driver.management,
@ -4074,7 +4076,9 @@ class UpdatePortTestCase(mgr_utils.ServiceSetUpMixin, db_base.DbTestCase):
self._start_service()
self.driver.management = None
acquire_mock.return_value.__enter__.return_value.driver = self.driver
task = acquire_mock.return_value.__enter__.return_value
task.driver = self.driver
task.node.maintenance = False
with mock.patch.object(fake.FakeManagement, 'get_sensors_data',
autospec=True) as get_sensors_data_mock:
@ -4086,6 +4090,27 @@ class UpdatePortTestCase(mgr_utils.ServiceSetUpMixin, db_base.DbTestCase):
self.assertFalse(get_sensors_data_mock.called)
self.assertFalse(validate_mock.called)
@mock.patch.object(manager.LOG, 'debug', autospec=True)
@mock.patch.object(task_manager, 'acquire', autospec=True)
def test_send_sensor_task_maintenance(self, acquire_mock, debug_log):
nodes = queue.Queue()
nodes.put_nowait(('fake_uuid', 'fake', None))
self._start_service()
CONF.set_override('send_sensor_data', True, group='conductor')
task = acquire_mock.return_value.__enter__.return_value
task.driver = self.driver
task.node.maintenance = True
with mock.patch.object(self.driver.management,
'get_sensors_data') as get_sensors_data_mock:
with mock.patch.object(self.driver.management,
'validate') as validate_mock:
self.service._sensors_nodes_task(self.context, nodes)
self.assertTrue(acquire_mock.called)
self.assertFalse(validate_mock.called)
self.assertFalse(get_sensors_data_mock.called)
self.assertTrue(debug_log.called)
@mock.patch.object(manager.ConductorManager, '_spawn_worker')
@mock.patch.object(manager.ConductorManager, '_mapped_to_this_conductor')
@mock.patch.object(dbapi.IMPL, 'get_nodeinfo_list')

View File

@ -0,0 +1,4 @@
---
fixes:
- No longer tries to collect or report sensors data for nodes in maintenance
mode. See `bug 1652741 <https://bugs.launchpad.net/bugs/1652741>`_.