diff --git a/changelogs/fragments/47539-fix-netaddr-network.yaml b/changelogs/fragments/47539-fix-netaddr-network.yaml new file mode 100644 index 0000000000..8cf219c933 --- /dev/null +++ b/changelogs/fragments/47539-fix-netaddr-network.yaml @@ -0,0 +1,2 @@ +bugfixes: + - ipaddr - fix issue where network address was blank for 0-size networks (https://github.com/ansible/ansible/issues/17872) diff --git a/lib/ansible/plugins/filter/ipaddr.py b/lib/ansible/plugins/filter/ipaddr.py index 98c6e54976..e6a01375f7 100644 --- a/lib/ansible/plugins/filter/ipaddr.py +++ b/lib/ansible/plugins/filter/ipaddr.py @@ -249,8 +249,7 @@ def _netmask_query(v): def _network_query(v): '''Return the network of a given IP or subnet''' - if v.size > 1: - return str(v.network) + return str(v.network) def _network_id_query(v): diff --git a/test/units/plugins/filter/test_ipaddr.py b/test/units/plugins/filter/test_ipaddr.py index 355f4f4159..1fe4e1fec5 100644 --- a/test/units/plugins/filter/test_ipaddr.py +++ b/test/units/plugins/filter/test_ipaddr.py @@ -38,15 +38,14 @@ class TestIpFilter(unittest.TestCase): self.assertEqual(ipaddr(address, 'netmask'), '255.255.255.255') def test_network(self): - # Unfixable in current state - # address = '1.12.1.34/32' - # self.assertEqual(ipaddr(address, 'network'), '1.12.1.34') - # address = '1.12.1.34/255.255.255.255' - # self.assertEqual(ipaddr(address, 'network'), '1.12.1.34') - # address = '1.12.1.34' - # self.assertEqual(ipaddr(address, 'network'), '1.12.1.34') - # address = '1.12.1.35/31' - # self.assertEqual(ipaddr(address, 'network'), '1.12.1.34') + address = '1.12.1.34/32' + self.assertEqual(ipaddr(address, 'network'), '1.12.1.34') + address = '1.12.1.34/255.255.255.255' + self.assertEqual(ipaddr(address, 'network'), '1.12.1.34') + address = '1.12.1.34' + self.assertEqual(ipaddr(address, 'network'), '1.12.1.34') + address = '1.12.1.35/31' + self.assertEqual(ipaddr(address, 'network'), '1.12.1.34') address = '1.12.1.34/24' self.assertEqual(ipaddr(address, 'network'), '1.12.1.0')