Reimplement is_valid_ipv4().

This patch reimplements the is_valid_ipv4() function is nova.utils.
Instead of open-coding the validity check, just make use of the netaddr
module, which is already used elsewhere in nova.utils.

Also add a unit test for this code.

Part of indigoprint bored-on-an-airplane.

Change-Id: Ia89cbbd94a0ac4631d794d658b53c244237e1ca2
This commit is contained in:
Russell Bryant 2013-02-01 04:06:09 -05:00
parent 795d1bcfd1
commit ed45c0b95d
2 changed files with 10 additions and 12 deletions

View File

@ -476,6 +476,11 @@ class GenericUtilsTestCase(test.TestCase):
self.assertFalse(utils.is_valid_boolstr('maybe'))
self.assertFalse(utils.is_valid_boolstr('only on tuesdays'))
def test_is_valid_ipv4(self):
self.assertTrue(utils.is_valid_ipv4('127.0.0.1'))
self.assertFalse(utils.is_valid_ipv4('::1'))
self.assertFalse(utils.is_valid_ipv4('bacon'))
class MonkeyPatchTestCase(test.TestCase):
"""Unit test for utils.monkey_patch()."""

View File

@ -881,19 +881,12 @@ def is_valid_boolstr(val):
def is_valid_ipv4(address):
"""valid the address strictly as per format xxx.xxx.xxx.xxx.
where xxx is a value between 0 and 255.
"""
parts = address.split(".")
if len(parts) != 4:
"""Verify that address represents a valid IPv4 address."""
try:
addr = netaddr.IPAddress(address)
return addr.version == 4
except Exception:
return False
for item in parts:
try:
if not 0 <= int(item) <= 255:
return False
except ValueError:
return False
return True
def is_valid_cidr(address):