summaryrefslogtreecommitdiff
path: root/ironic
diff options
context:
space:
mode:
authorChangBo Guo(gcb) <eric.guo@easystack.cn>2017-11-01 18:47:31 +0800
committerChangBo Guo(gcb) <eric.guo@easystack.cn>2017-11-02 10:05:55 +0800
commitd3da9dec0ea5102a3f7b217843d03f2147753b9e (patch)
tree42e8b100c7ae86b24d93724a3046958601709f3d /ironic
parent32846e9987f01abac361928842770d8de6b1303d (diff)
downloadironic-d3da9dec0ea5102a3f7b217843d03f2147753b9e.tar.gz
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
Diffstat (limited to 'ironic')
-rw-r--r--ironic/common/utils.py19
-rw-r--r--ironic/tests/unit/common/test_utils.py10
2 files changed, 12 insertions, 17 deletions
diff --git a/ironic/common/utils.py b/ironic/common/utils.py
index 087cedc57..dd53dbfa1 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 2c6acec11..30fd3d1ab 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')