From 3f8ccef669234c1bf571c5a422eacbcd3be79071 Mon Sep 17 00:00:00 2001 From: Felix Fontein Date: Tue, 25 Nov 2025 22:25:39 +0100 Subject: [PATCH] Port spec can be a list of port specs. --- .../_module_container/docker_api.py | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/plugins/module_utils/_module_container/docker_api.py b/plugins/module_utils/_module_container/docker_api.py index 40c46400..c9bcede8 100644 --- a/plugins/module_utils/_module_container/docker_api.py +++ b/plugins/module_utils/_module_container/docker_api.py @@ -2089,16 +2089,26 @@ def _preprocess_value_ports( if "published_ports" not in values: return values found = False - for port_spec in values["published_ports"].values(): - if port_spec[0] == _DEFAULT_IP_REPLACEMENT_STRING: - found = True - break + for port_specs in values["published_ports"].values(): + if not isinstance(port_specs, list): + port_specs = [port_specs] + for port_spec in port_specs: + if port_spec[0] == _DEFAULT_IP_REPLACEMENT_STRING: + found = True + break if not found: return values default_ip = _get_default_host_ip(module, client) - for port, port_spec in values["published_ports"].items(): - if port_spec[0] == _DEFAULT_IP_REPLACEMENT_STRING: - values["published_ports"][port] = tuple([default_ip] + list(port_spec[1:])) + for port, port_specs in values["published_ports"].items(): + if isinstance(port_specs, list): + for index, port_spec in enumerate(port_specs): + if port_spec[0] == _DEFAULT_IP_REPLACEMENT_STRING: + port_specs[index] = tuple([default_ip] + list(port_spec[1:])) + else: + if port_specs[0] == _DEFAULT_IP_REPLACEMENT_STRING: + values["published_ports"][port] = tuple( + [default_ip] + list(port_specs[1:]) + ) return values