From bb7c40b3210d85e6abff5d7b172bedc11fcd0e47 Mon Sep 17 00:00:00 2001 From: Sagi Shnaidman Date: Wed, 17 Jun 2026 13:52:07 +0300 Subject: [PATCH] Address review feedback for IPv6 normalization - Guard _normalize_ip/_normalize_subnet with HAS_IP_ADDRESS_MODULE check - Normalize user-supplied route strings in diffparam_route - Keep _lease_range_to_str as @staticmethod Signed-off-by: Sagi Shnaidman --- plugins/modules/podman_network.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/plugins/modules/podman_network.py b/plugins/modules/podman_network.py index ff48755..64de2f4 100644 --- a/plugins/modules/podman_network.py +++ b/plugins/modules/podman_network.py @@ -480,10 +480,11 @@ class PodmanNetworkDiff: return True return False - def _lease_range_to_str(self, lease_range): + @staticmethod + def _lease_range_to_str(lease_range): """Convert lease_range dict to normalized start-end string.""" - start = self._normalize_ip(lease_range["start_ip"]) - end = self._normalize_ip(lease_range["end_ip"]) + start = PodmanNetworkDiff._normalize_ip(lease_range["start_ip"]) + end = PodmanNetworkDiff._normalize_ip(lease_range["end_ip"]) return f'{start}-{end}' @staticmethod @@ -501,6 +502,8 @@ class PodmanNetworkDiff: @staticmethod def _normalize_ip(addr): """Normalize an IP address string to its compressed canonical form.""" + if not HAS_IP_ADDRESS_MODULE: + return addr try: return str(ipaddress.ip_address(addr)) except ValueError: @@ -509,6 +512,8 @@ class PodmanNetworkDiff: @staticmethod def _normalize_subnet(subnet): """Normalize a subnet string to its compressed canonical form.""" + if not HAS_IP_ADDRESS_MODULE: + return subnet try: return str(ipaddress.ip_network(subnet, strict=False)) except ValueError: @@ -656,7 +661,13 @@ class PodmanNetworkDiff: ]).rstrip(",") for r in routes] else: before = [] - after = self.params["route"] or [] + after = [] + for r in (self.params["route"] or []): + parts = r.split(",") + if len(parts) >= 2: + parts[0] = self._normalize_subnet(parts[0]) + parts[1] = self._normalize_ip(parts[1]) + after.append(",".join(parts)) return self._diff_update_and_compare("route", sorted(before), sorted(after)) def diffparam_subnet(self):