From d3da9dec0ea5102a3f7b217843d03f2147753b9e Mon Sep 17 00:00:00 2001 From: "ChangBo Guo(gcb)" Date: Wed, 1 Nov 2017 18:47:31 +0800 Subject: [PATCH] Simplify the logic of validate_network_port osl.utils provides method is_valid_port to check port, we can leverage it to make code more clear. Note that the code here was incorrect in accepting 1-65535, and this change fixes it to also include 0. Change-Id: I60cb36a042fd808edca66b07d7248213debd4dff --- ironic/common/utils.py | 19 +++++++------------ ironic/tests/unit/common/test_utils.py | 10 +++++----- 2 files changed, 12 insertions(+), 17 deletions(-) diff --git a/ironic/common/utils.py b/ironic/common/utils.py index 087cedc57e..dd53dbfa1b 100644 --- a/ironic/common/utils.py +++ b/ironic/common/utils.py @@ -472,18 +472,13 @@ def validate_network_port(port, port_name="Port"): :returns: An integer port number. :raises: InvalidParameterValue, if the port is invalid. """ - try: - port = int(port) - except ValueError: - raise exception.InvalidParameterValue(_( - '%(port_name)s "%(port)s" is not a valid integer.') % - {'port_name': port_name, 'port': port}) - if port < 1 or port > 65535: - raise exception.InvalidParameterValue(_( - '%(port_name)s "%(port)s" is out of range. Valid port ' - 'numbers must be between 1 and 65535.') % - {'port_name': port_name, 'port': port}) - return port + + if netutils.is_valid_port(port): + return int(port) + + raise exception.InvalidParameterValue(_( + '%(port_name)s "%(port)s" is not a valid port.') % + {'port_name': port_name, 'port': port}) def render_template(template, params, is_file=True): diff --git a/ironic/tests/unit/common/test_utils.py b/ironic/tests/unit/common/test_utils.py index 2c6acec117..30fd3d1ab8 100644 --- a/ironic/tests/unit/common/test_utils.py +++ b/ironic/tests/unit/common/test_utils.py @@ -545,23 +545,23 @@ class GetUpdatedCapabilitiesTestCase(base.TestCase): self.assertIsInstance(cap_returned, str) def test_validate_network_port(self): - port = utils.validate_network_port('1', 'message') - self.assertEqual(1, port) + port = utils.validate_network_port('0', 'message') + self.assertEqual(0, port) port = utils.validate_network_port('65535') self.assertEqual(65535, port) def test_validate_network_port_fail(self): self.assertRaisesRegex(exception.InvalidParameterValue, - 'Port "65536" is out of range.', + 'Port "65536" is not a valid port.', utils.validate_network_port, '65536') self.assertRaisesRegex(exception.InvalidParameterValue, - 'fake_port "-1" is out of range.', + 'fake_port "-1" is not a valid port.', utils.validate_network_port, '-1', 'fake_port') self.assertRaisesRegex(exception.InvalidParameterValue, - 'Port "invalid" is not a valid integer.', + 'Port "invalid" is not a valid port.', utils.validate_network_port, 'invalid')