Make port_range validator accept an integer

It used to accept an integer but it has been changed for
some reasons when migrating to neutron-lib.
For compatibility, it's better to keep the original behaviour.
After all, the original behaviour seems reasonable to me.

Closes-Bug: #1696682
Related-Bug: #1696389
Change-Id: I60e1a99780202de14522f592288d3a9af7a75592
This commit is contained in:
YAMAMOTO Takashi 2017-06-08 17:39:58 +09:00
parent 1401560a67
commit 29a31c152c
2 changed files with 6 additions and 5 deletions

View File

@ -925,10 +925,7 @@ def validate_port_range_or_none(data, valid_values=None):
"""
if data is None:
return
if validate_string_or_none(data):
msg = _("Port range must be a string.")
LOG.debug(msg)
return msg
data = str(data)
ports = data.split(':')
if len(ports) > 2:
msg = _("Port range must be two integers separated by a colon.")

View File

@ -1102,6 +1102,10 @@ class TestPortRangeValidation(base.BaseTestCase):
result = validators.validate_port_range_or_none("80")
self.assertIsNone(result)
def test_valid_port_integer(self):
result = validators.validate_port_range_or_none(80)
self.assertIsNone(result)
def test_valid_range(self):
result = validators.validate_port_range_or_none("80:8888")
self.assertIsNone(result)
@ -1133,7 +1137,7 @@ class TestPortRangeValidation(base.BaseTestCase):
def test_range_bad_input(self):
result = validators.validate_port_range_or_none(['a', 'b', 'c'])
self.assertEqual(u"Port range must be a string.", result)
self.assertEqual(u"Invalid port: ['a', 'b', 'c'].", result)
def test_range_colon(self):
result = validators.validate_port_range_or_none(":")