From bdde07b29e1aef0796558d2ec2955ac1c886cb59 Mon Sep 17 00:00:00 2001 From: Zhenguo Niu Date: Mon, 7 Sep 2015 16:10:29 +0800 Subject: [PATCH] Raise InvalidPrameterValue when ipmi_terminal_port is '' when we set ipmi_terminal_port to '', there's no InvalidParameterValue exception raised when parsing driver info, as we only check if the port value is an integer type when it is not empty. Change-Id: I4c5b51f37bb5e9c2e013e96c652d5db461caceec Closes-Bug: #1492935 --- ironic/drivers/modules/ipmitool.py | 2 +- ironic/tests/drivers/test_ipmitool.py | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/ironic/drivers/modules/ipmitool.py b/ironic/drivers/modules/ipmitool.py index eed11467dd..ff58612c95 100644 --- a/ironic/drivers/modules/ipmitool.py +++ b/ironic/drivers/modules/ipmitool.py @@ -264,7 +264,7 @@ def _parse_driver_info(node): "value can be one of %(valid_versions)s") % {'version': protocol_version, 'valid_versions': valid_versions}) - if port: + if port is not None: try: port = int(port) except ValueError: diff --git a/ironic/tests/drivers/test_ipmitool.py b/ironic/tests/drivers/test_ipmitool.py index e83e968a14..4a96855609 100644 --- a/ironic/tests/drivers/test_ipmitool.py +++ b/ironic/tests/drivers/test_ipmitool.py @@ -1413,6 +1413,13 @@ class IPMIToolDriverTestCase(db_base.DbTestCase): self.assertRaises(exception.MissingParameterValue, task.driver.console.validate, task) + def test_console_validate_invalid_port(self): + with task_manager.acquire( + self.context, self.node.uuid, shared=True) as task: + task.node.driver_info['ipmi_terminal_port'] = '' + self.assertRaises(exception.InvalidParameterValue, + task.driver.console.validate, task) + def test_console_validate_wrong_ipmi_protocol_version(self): with task_manager.acquire( self.context, self.node.uuid, shared=True) as task: