From a86e21e4f46d7a68e979f99722593412802dc750 Mon Sep 17 00:00:00 2001 From: Arne Wiebalck Date: Tue, 10 Aug 2021 16:20:18 +0200 Subject: [PATCH] Check the network burnin roles and partner The network burnin roles are 'reader' and 'writer'. Raise an error if the role is not provided or if the role is unknown. Equally, raise an error if the partner is not provided. Change-Id: I6259a7b0d15d62e68b1dc27f0cb511f8563c02ce --- ironic_python_agent/burnin.py | 8 +++++++ ironic_python_agent/tests/unit/test_burnin.py | 21 +++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/ironic_python_agent/burnin.py b/ironic_python_agent/burnin.py index 375f11d39..f39181731 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 18025b416..2258352ec 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):