From 532b398b90fff1b224086b4eb52ac9ef7412a0f4 Mon Sep 17 00:00:00 2001 From: Vlad Gridin Date: Fri, 7 Dec 2018 15:20:44 +0100 Subject: [PATCH] Handle ValueError in canonical address convertion netaddr.IPAddress raises ValueError for some unsupported address formats. This patch will catch this exception in addition to AddrFormatError. Closes-Bug: 1807394 Change-Id: I06eea42906f1fe4443fa4959e79a1993a9664efe --- neutron_lib/api/converters.py | 2 +- neutron_lib/tests/unit/api/test_conversions.py | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/neutron_lib/api/converters.py b/neutron_lib/api/converters.py index 598004bb4..ab5327979 100644 --- a/neutron_lib/api/converters.py +++ b/neutron_lib/api/converters.py @@ -192,7 +192,7 @@ def convert_ip_to_canonical_format(value): ip = netaddr.IPAddress(value) if ip.version == constants.IP_VERSION_6: return six.text_type(ip.format(dialect=netaddr.ipv6_compact)) - except netaddr.core.AddrFormatError: + except (netaddr.core.AddrFormatError, ValueError): pass return value diff --git a/neutron_lib/tests/unit/api/test_conversions.py b/neutron_lib/tests/unit/api/test_conversions.py index a5948848c..b98dee4cd 100644 --- a/neutron_lib/tests/unit/api/test_conversions.py +++ b/neutron_lib/tests/unit/api/test_conversions.py @@ -202,6 +202,12 @@ class TestConvertIPv6AddrCanonicalFormat(base.BaseTestCase): def test_convert_invalid_address(self): result = converters.convert_ip_to_canonical_format("on") self.assertEqual("on", result) + result = converters.convert_ip_to_canonical_format( + u'192.168.1.1/32') + self.assertEqual(u'192.168.1.1/32', result) + result = converters.convert_ip_to_canonical_format( + u'2001:db8:0:1:1:1:1:1/128') + self.assertEqual(u'2001:db8:0:1:1:1:1:1/128', result) class TestConvertIPv6CIDRCanonicalFormat(base.BaseTestCase):