diff --git a/oslo_serialization/jsonutils.py b/oslo_serialization/jsonutils.py index 7df6496..9659563 100644 --- a/oslo_serialization/jsonutils.py +++ b/oslo_serialization/jsonutils.py @@ -112,7 +112,7 @@ def to_primitive(value, convert_instances=False, convert_datetime=True, if isinstance(value, uuid.UUID): return six.text_type(value) - if netaddr and isinstance(value, netaddr.IPAddress): + if netaddr and isinstance(value, (netaddr.IPAddress, netaddr.IPNetwork)): return six.text_type(value) if ipaddress and isinstance(value, diff --git a/oslo_serialization/tests/test_jsonutils.py b/oslo_serialization/tests/test_jsonutils.py index f649db3..9eb3c25 100644 --- a/oslo_serialization/tests/test_jsonutils.py +++ b/oslo_serialization/tests/test_jsonutils.py @@ -320,6 +320,11 @@ class ToPrimitiveTestCase(test_base.BaseTestCase): ret = jsonutils.to_primitive(thing) self.assertEqual({'ip_addr': '2001:db8::'}, ret) + def test_ipnet_using_netaddr(self): + thing = {'ip_net': netaddr.IPNetwork('1.2.3.0/24')} + ret = jsonutils.to_primitive(thing) + self.assertEqual({'ip_net': '1.2.3.0/24'}, ret) + def test_message_with_param(self): msg = self.trans_fixture.lazy('A message with param: %s') msg = msg % 'test_domain'