From 4e8e36673959de0394b5c828f8484ab80f73540c Mon Sep 17 00:00:00 2001 From: Toshio Kuratomi Date: Tue, 11 Apr 2017 14:10:43 -0700 Subject: [PATCH] Ryanpineo fix ipaddr netmask with 32 cidr (#23506) * Fix bug in ipaddr netmask filter when cidr is 32 * Add requirement on netaddr to the units.txt file --- test/runner/requirements/units.txt | 1 + test/units/plugins/filter/test_ipaddr.py | 35 ++++++++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 test/units/plugins/filter/test_ipaddr.py diff --git a/test/runner/requirements/units.txt b/test/runner/requirements/units.txt index 7d937470f45..085c9ab63c0 100644 --- a/test/runner/requirements/units.txt +++ b/test/runner/requirements/units.txt @@ -13,3 +13,4 @@ python-memcached pyyaml redis unittest2 ; python_version < '2.7' +netaddr diff --git a/test/units/plugins/filter/test_ipaddr.py b/test/units/plugins/filter/test_ipaddr.py new file mode 100644 index 00000000000..910e1c2bfa1 --- /dev/null +++ b/test/units/plugins/filter/test_ipaddr.py @@ -0,0 +1,35 @@ +# This file is part of Ansible +# +# Ansible is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Ansible is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Ansible. If not, see . + +# Make coding more python3-ish +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +from ansible.compat.tests import unittest +from ansible.plugins.filter.ipaddr import ipaddr, _netmask_query + + +class TestNetmask(unittest.TestCase): + def test_whole_octets(self): + address = '1.1.1.1/24' + self.assertEqual(ipaddr(address, 'netmask'), '255.255.255.0') + + def test_partial_octet(self): + address = '1.1.1.1/25' + self.assertEqual(ipaddr(address, 'netmask'), '255.255.255.128') + + def test_32_cidr(self): + address = '1.12.1.34/32' + self.assertEqual(ipaddr(address, 'netmask'), '255.255.255.255')