diff options
-rw-r--r-- | ironic_python_agent/burnin.py | 8 | ||||
-rw-r--r-- | ironic_python_agent/tests/unit/test_burnin.py | 21 |
2 files changed, 29 insertions, 0 deletions
diff --git a/ironic_python_agent/burnin.py b/ironic_python_agent/burnin.py index 375f11d3..f3918173 100644 --- a/ironic_python_agent/burnin.py +++ b/ironic_python_agent/burnin.py @@ -183,8 +183,16 @@ def fio_network(node): "'agent_burnin_fio_network_config' in driver_info") raise errors.CleaningError(error_msg) LOG.debug("agent_burnin_fio_network_config is %s", str(config)) + role = config.get('role') + if role not in NETWORK_BURNIN_ROLES: + error_msg = ("fio (network) found an unknown role: %s", role) + raise errors.CleaningError(error_msg) + partner = config.get('partner') + if not partner: + error_msg = ("fio (network) failed to find partner") + raise errors.CleaningError(error_msg) _do_fio_network(role == 'writer', runtime, partner) LOG.debug("fio (network): first direction done, swapping roles ...") diff --git a/ironic_python_agent/tests/unit/test_burnin.py b/ironic_python_agent/tests/unit/test_burnin.py index 18025b41..2258352e 100644 --- a/ironic_python_agent/tests/unit/test_burnin.py +++ b/ironic_python_agent/tests/unit/test_burnin.py @@ -198,6 +198,27 @@ class TestBurnin(base.IronicAgentTest): self.assertRaises(errors.CommandExecutionError, burnin.fio_network, node) + def test_fio_network_unknown_role(self, mock_execute): + + node = {'driver_info': {'agent_burnin_fio_network_config': + {'partner': 'host-003', 'role': 'read'}}} + + self.assertRaises(errors.CleaningError, burnin.fio_network, node) + + def test_fio_network_no_role(self, mock_execute): + + node = {'driver_info': {'agent_burnin_fio_network_config': + {'partner': 'host-003'}}} + + self.assertRaises(errors.CleaningError, burnin.fio_network, node) + + def test_fio_network_no_partner(self, mock_execute): + + node = {'driver_info': {'agent_burnin_fio_network_config': + {'role': 'reader'}}} + + self.assertRaises(errors.CleaningError, burnin.fio_network, node) + @mock.patch('time.sleep', autospec=True) def test_fio_network_reader_loop(self, mock_time, mock_execute): |