From: Stuart Henderson Subject: Re: py3-netaddr-1.0.0 breaks ansible.utils.ipaddr('public') To: Florian Obser , Stuart Henderson , Pavel Korovin Cc: ports Date: Tue, 13 Feb 2024 13:56:49 +0000 Oof, l'll drop back to 0.10.1 for now, if Ansible uses this I bet other things do too - it had only been marked as deprecated for a few weeks. sorry I missed that. -- Sent from a phone, apologies for poor formatting. On 13 February 2024 13:10:21 Florian Obser wrote: > thusly: > > An exception occurred during task execution. To see the full traceback, use > -vvv. The error was: AttributeError: 'IPAddress' object has no attribute > 'is_private' > > See also: https://github.com/ansible-collections/ansible.utils/issues/331 > > This fixes it for me for now, but I didn't have the time to give it both > buttocks, so pretty much half-arsed. > > diff --git sysutils/ansible/Makefile sysutils/ansible/Makefile > index 25f922d3ab4..64da78d9e52 100644 > --- sysutils/ansible/Makefile > +++ sysutils/ansible/Makefile > @@ -1,6 +1,7 @@ > COMMENT = radically simple IT automation > > MODPY_EGG_VERSION = 9.2.0 > +REVISION = 0 > DISTNAME = ansible-${MODPY_EGG_VERSION} > > CATEGORIES = sysutils > diff --git > sysutils/ansible/patches/patch-ansible_collections_ansible_utils_plugins_plugin_utils_base_ipaddr_utils_py > sysutils/ansible/patches/patch-ansible_collections_ansible_utils_plugins_plugin_utils_base_ipaddr_utils_py > new file mode 100644 > index 00000000000..77756e1aa94 > --- /dev/null > +++ > sysutils/ansible/patches/patch-ansible_collections_ansible_utils_plugins_plugin_utils_base_ipaddr_utils_py > @@ -0,0 +1,22 @@ > +'IPAddress' object has no attribute 'is_private' in netaddr >= 1.0.0 > +Index: > ansible_collections/ansible/utils/plugins/plugin_utils/base/ipaddr_utils.py > +--- > ansible_collections/ansible/utils/plugins/plugin_utils/base/ipaddr_utils.py.orig > ++++ > ansible_collections/ansible/utils/plugins/plugin_utils/base/ipaddr_utils.py > +@@ -289,7 +289,7 @@ def _previous_usable_query(v, vtype): > + > + > + def _private_query(v, value): > +- if v.is_private(): > ++ if not v.is_global(): > + return value > + > + > +@@ -298,7 +298,7 @@ def _public_query(v, value): > + if all( > + [ > + v_ip.is_unicast(), > +- not v_ip.is_private(), > ++ v_ip.is_global(), > + not v_ip.is_loopback(), > + not v_ip.is_netmask(), > + not v_ip.is_hostmask(), > > -- > In my defence, I have been left unsupervised.