From 91e3e111e46dff3175cad97948aaf09f2b087f13 Mon Sep 17 00:00:00 2001 From: Philip Norton Date: Thu, 12 Mar 2026 11:28:40 +0000 Subject: [PATCH 1/6] Updated the scaleway_ip_info to use the scaleway zone directly and building the url, instead of looking up the zone and url from a list. This allows for more flexibility and potential versioning of the end point. --- plugins/module_utils/scaleway.py | 1 - plugins/modules/scaleway_ip_info.py | 64 +++++++++++++++++++++++++---- 2 files changed, 55 insertions(+), 10 deletions(-) diff --git a/plugins/module_utils/scaleway.py b/plugins/module_utils/scaleway.py index ee09b2dd9c..6db45bf50e 100644 --- a/plugins/module_utils/scaleway.py +++ b/plugins/module_utils/scaleway.py @@ -255,7 +255,6 @@ class Scaleway: def send(self, method, path, data=None, headers=None, params=None): url = self._url_builder(path=path, params=params) - self.warn(url) if headers is not None: self.headers.update(headers) diff --git a/plugins/modules/scaleway_ip_info.py b/plugins/modules/scaleway_ip_info.py index cbe21e2785..e1ed4f800e 100644 --- a/plugins/modules/scaleway_ip_info.py +++ b/plugins/modules/scaleway_ip_info.py @@ -29,7 +29,7 @@ options: type: str description: - Scaleway region to use (for example C(par1)). - required: true + required: false choices: - ams1 - EMEA-NL-EVS @@ -44,16 +44,36 @@ options: - EMEA-PL-WAW1 - waw2 - waw3 + zone + type: str + description: + - Scaleway zone to use (for example (nl-ams-1)) + required: false + choices: + - fr-par-1 + - fr-par-2 + - fr-par-3 + - nl-ams-1 + - nl-ams-2 + - nl-ams-3 + - pl-waw-1 + - pl-waw-2 + - pl-waw-3 """ EXAMPLES = r""" - name: Gather Scaleway IPs information community.general.scaleway_ip_info: - region: par1 + zone: fr-par-1 register: result - ansible.builtin.debug: msg: "{{ result.scaleway_ip_info }}" + +- name: Gather Scaleway IPs information (deprecated) + community.general.scaleway_ip_info: + region: par-1 + register: result """ RETURN = r""" @@ -83,6 +103,9 @@ from ansible.module_utils.basic import AnsibleModule from ansible_collections.community.general.plugins.module_utils.scaleway import ( SCALEWAY_LOCATION, + SCALEWAY_ENDPOINT, + SCALEWAY_REGIONS, + SCALEWAY_ZONES, Scaleway, ScalewayException, scaleway_argument_spec, @@ -94,26 +117,49 @@ class ScalewayIpInfo(Scaleway): super().__init__(module) self.name = "ips" - region = module.params["region"] - self.module.params["api_url"] = SCALEWAY_LOCATION[region]["api_endpoint"] + if self.module.params.get("zone"): + self.module.params["api_url"] = SCALEWAY_ENDPOINT + else: + self.module.params["api_url"] = SCALEWAY_LOCATION[self.module.params.get("region")]["api_endpoint"] def main(): argument_spec = scaleway_argument_spec() argument_spec.update( dict( - region=dict(required=True, choices=list(SCALEWAY_LOCATION.keys())), + region=dict(required=False, choices=list(SCALEWAY_LOCATION.keys())), + zone=dict(required=False, choices=list(SCALEWAY_ZONES)), ) ) module = AnsibleModule( argument_spec=argument_spec, supports_check_mode=True, + mutually_exclusive=[ + ("zone", "region"), + ], + required_one_of=[ + ("zone", "region"), + ], ) - try: - module.exit_json(scaleway_ip_info=ScalewayIpInfo(module).get_resources()) - except ScalewayException as exc: - module.fail_json(msg=exc.message) + api = ScalewayIpInfo(module=module) + + if module.params["zone"]: + zone = module.params["zone"] + api_path = f"instance/v1/zones/{zone}/ips" + response = scaleway_ip_info=api.get(path=api_path) + module.exit_json(scaleway_ip_info=response.json.get('ips')) + else: + module.deprecate( + msg="The 'region' parameter is deprecated. Use 'zone' to specify the Scaleway zone instead.", + version="14.0.0", + collection_name="community.general", + ) + + try: + module.exit_json(scaleway_ip_info=ScalewayIpInfo(module).get_resources()) + except ScalewayException as exc: + module.fail_json(msg=exc.message) if __name__ == "__main__": From b61c02cc7a121aae2d859c5468fccc0b90442695 Mon Sep 17 00:00:00 2001 From: Philip Norton Date: Thu, 19 Mar 2026 12:40:04 +0000 Subject: [PATCH 2/6] Added the new it-mil-1 and it-mil region to the scaleway utility file. --- plugins/module_utils/scaleway.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/module_utils/scaleway.py b/plugins/module_utils/scaleway.py index 6db45bf50e..4c6a47ba31 100644 --- a/plugins/module_utils/scaleway.py +++ b/plugins/module_utils/scaleway.py @@ -460,6 +460,7 @@ SCALEWAY_REGIONS = [ "fr-par", "nl-ams", "pl-waw", + "it-mil" ] SCALEWAY_ZONES = [ @@ -472,4 +473,5 @@ SCALEWAY_ZONES = [ "pl-waw-1", "pl-waw-2", "pl-waw-3", + "it-mil-1" ] From a526f847fb2b88b0fc5cf90d037f517bcda35c10 Mon Sep 17 00:00:00 2001 From: Philip Norton Date: Thu, 19 Mar 2026 12:40:51 +0000 Subject: [PATCH 3/6] Updated the scaleway_ip_info test to reflect the usage of zone over the region. --- tests/integration/targets/scaleway_ip_info/tasks/main.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/integration/targets/scaleway_ip_info/tasks/main.yml b/tests/integration/targets/scaleway_ip_info/tasks/main.yml index 6aad9b52e9..559e8eb844 100644 --- a/tests/integration/targets/scaleway_ip_info/tasks/main.yml +++ b/tests/integration/targets/scaleway_ip_info/tasks/main.yml @@ -9,8 +9,8 @@ # SPDX-License-Identifier: GPL-3.0-or-later - name: Get ip information and register it in a variable - scaleway_ip_info: - region: par1 + community.general.scaleway_ip_info: + zone: nl-ams-1 register: ips - name: Display ips variable @@ -23,8 +23,8 @@ - ips is success - name: Get ip information and register it in a variable - scaleway_ip_info: - region: ams1 + community.general.scaleway_ip_info: + zone: nl-ams-1 register: ips_ams1 - name: Display ips variable From 47ce91423654a15e5f4a018f05e2016bba37e781 Mon Sep 17 00:00:00 2001 From: Philip Norton Date: Fri, 20 Mar 2026 16:24:44 +0000 Subject: [PATCH 4/6] Added changelog fragment for the scaleway_ip_info change. --- changelogs/fragments/11351-scaleway-ip-info.yml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 changelogs/fragments/11351-scaleway-ip-info.yml diff --git a/changelogs/fragments/11351-scaleway-ip-info.yml b/changelogs/fragments/11351-scaleway-ip-info.yml new file mode 100644 index 0000000000..1ff2821c8c --- /dev/null +++ b/changelogs/fragments/11351-scaleway-ip-info.yml @@ -0,0 +1,2 @@ +deprecated_features: + - scaleway_ip_info plugin - use of ``region`` is deprecated and will be disallowed in ``community.general`` 14.0.0 (https://github.com/ansible-collections/community.general/issues/11351). \ No newline at end of file From 0ff768ddab508759cf4a3008b76c277d061bfa20 Mon Sep 17 00:00:00 2001 From: Philip Norton Date: Fri, 20 Mar 2026 16:58:31 +0000 Subject: [PATCH 5/6] Fixing coding standards issues in the scaleway_ip_info.py module. --- plugins/modules/scaleway_ip_info.py | 33 +++++++++++++++-------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/plugins/modules/scaleway_ip_info.py b/plugins/modules/scaleway_ip_info.py index e1ed4f800e..515df542a8 100644 --- a/plugins/modules/scaleway_ip_info.py +++ b/plugins/modules/scaleway_ip_info.py @@ -28,7 +28,7 @@ options: region: type: str description: - - Scaleway region to use (for example C(par1)). + - Scaleway region to use (for example C(par1)) (deprecated). required: false choices: - ams1 @@ -44,7 +44,8 @@ options: - EMEA-PL-WAW1 - waw2 - waw3 - zone + + zone: type: str description: - Scaleway zone to use (for example (nl-ams-1)) @@ -59,6 +60,7 @@ options: - pl-waw-1 - pl-waw-2 - pl-waw-3 + - it-mil-1 """ EXAMPLES = r""" @@ -104,7 +106,6 @@ from ansible.module_utils.basic import AnsibleModule from ansible_collections.community.general.plugins.module_utils.scaleway import ( SCALEWAY_LOCATION, SCALEWAY_ENDPOINT, - SCALEWAY_REGIONS, SCALEWAY_ZONES, Scaleway, ScalewayException, @@ -145,21 +146,21 @@ def main(): api = ScalewayIpInfo(module=module) if module.params["zone"]: - zone = module.params["zone"] - api_path = f"instance/v1/zones/{zone}/ips" - response = scaleway_ip_info=api.get(path=api_path) - module.exit_json(scaleway_ip_info=response.json.get('ips')) + zone = module.params["zone"] + api_path = f"instance/v1/zones/{zone}/ips" + response = scaleway_ip_info=api.get(path=api_path) + module.exit_json(scaleway_ip_info=response.json.get('ips')) else: - module.deprecate( - msg="The 'region' parameter is deprecated. Use 'zone' to specify the Scaleway zone instead.", - version="14.0.0", - collection_name="community.general", - ) + module.deprecate( + msg="The 'region' parameter is deprecated. Use 'zone' to specify the Scaleway zone instead.", + version="14.0.0", + collection_name="community.general", + ) - try: - module.exit_json(scaleway_ip_info=ScalewayIpInfo(module).get_resources()) - except ScalewayException as exc: - module.fail_json(msg=exc.message) + try: + module.exit_json(scaleway_ip_info=ScalewayIpInfo(module).get_resources()) + except ScalewayException as exc: + module.fail_json(msg=exc.message) if __name__ == "__main__": From f49dc75667958caf0453ffef9aa5421eb868d06c Mon Sep 17 00:00:00 2001 From: Philip Norton Date: Fri, 20 Mar 2026 17:00:23 +0000 Subject: [PATCH 6/6] Added the it-mil region to module documentation for all scaleway modules that use this setting. --- plugins/modules/scaleway_container.py | 1 + plugins/modules/scaleway_container_info.py | 1 + plugins/modules/scaleway_container_namespace.py | 1 + plugins/modules/scaleway_container_namespace_info.py | 1 + plugins/modules/scaleway_container_registry.py | 1 + plugins/modules/scaleway_container_registry_info.py | 1 + plugins/modules/scaleway_database_backup.py | 1 + plugins/modules/scaleway_function.py | 1 + plugins/modules/scaleway_function_info.py | 1 + plugins/modules/scaleway_function_namespace.py | 1 + plugins/modules/scaleway_function_namespace_info.py | 1 + plugins/modules/scaleway_lb.py | 1 + 12 files changed, 12 insertions(+) diff --git a/plugins/modules/scaleway_container.py b/plugins/modules/scaleway_container.py index 8db6616e82..98c262f6e0 100644 --- a/plugins/modules/scaleway_container.py +++ b/plugins/modules/scaleway_container.py @@ -56,6 +56,7 @@ options: - fr-par - nl-ams - pl-waw + - it-mil name: type: str diff --git a/plugins/modules/scaleway_container_info.py b/plugins/modules/scaleway_container_info.py index 57134f787f..658f606b64 100644 --- a/plugins/modules/scaleway_container_info.py +++ b/plugins/modules/scaleway_container_info.py @@ -41,6 +41,7 @@ options: - fr-par - nl-ams - pl-waw + - it-mil name: type: str diff --git a/plugins/modules/scaleway_container_namespace.py b/plugins/modules/scaleway_container_namespace.py index 822230867a..ee31250088 100644 --- a/plugins/modules/scaleway_container_namespace.py +++ b/plugins/modules/scaleway_container_namespace.py @@ -56,6 +56,7 @@ options: - fr-par - nl-ams - pl-waw + - it-mil name: type: str diff --git a/plugins/modules/scaleway_container_namespace_info.py b/plugins/modules/scaleway_container_namespace_info.py index 098318812a..426f22903d 100644 --- a/plugins/modules/scaleway_container_namespace_info.py +++ b/plugins/modules/scaleway_container_namespace_info.py @@ -41,6 +41,7 @@ options: - fr-par - nl-ams - pl-waw + - it-mil name: type: str diff --git a/plugins/modules/scaleway_container_registry.py b/plugins/modules/scaleway_container_registry.py index 9a3a768547..d31558efef 100644 --- a/plugins/modules/scaleway_container_registry.py +++ b/plugins/modules/scaleway_container_registry.py @@ -54,6 +54,7 @@ options: - fr-par - nl-ams - pl-waw + - it-mil name: type: str diff --git a/plugins/modules/scaleway_container_registry_info.py b/plugins/modules/scaleway_container_registry_info.py index 6d4289b3c6..75ec7008bd 100644 --- a/plugins/modules/scaleway_container_registry_info.py +++ b/plugins/modules/scaleway_container_registry_info.py @@ -41,6 +41,7 @@ options: - fr-par - nl-ams - pl-waw + - it-mil name: type: str diff --git a/plugins/modules/scaleway_database_backup.py b/plugins/modules/scaleway_database_backup.py index b6224fe6cc..9ad7b43890 100644 --- a/plugins/modules/scaleway_database_backup.py +++ b/plugins/modules/scaleway_database_backup.py @@ -53,6 +53,7 @@ options: - fr-par - nl-ams - pl-waw + - it-mil id: description: diff --git a/plugins/modules/scaleway_function.py b/plugins/modules/scaleway_function.py index b65dd8f2d9..08532f7738 100644 --- a/plugins/modules/scaleway_function.py +++ b/plugins/modules/scaleway_function.py @@ -56,6 +56,7 @@ options: - fr-par - nl-ams - pl-waw + - it-mil name: type: str diff --git a/plugins/modules/scaleway_function_info.py b/plugins/modules/scaleway_function_info.py index 0a7305f170..055cff51f7 100644 --- a/plugins/modules/scaleway_function_info.py +++ b/plugins/modules/scaleway_function_info.py @@ -41,6 +41,7 @@ options: - fr-par - nl-ams - pl-waw + - it-mil name: type: str diff --git a/plugins/modules/scaleway_function_namespace.py b/plugins/modules/scaleway_function_namespace.py index ad621cc4ea..b0da5f2563 100644 --- a/plugins/modules/scaleway_function_namespace.py +++ b/plugins/modules/scaleway_function_namespace.py @@ -56,6 +56,7 @@ options: - fr-par - nl-ams - pl-waw + - it-mil name: type: str diff --git a/plugins/modules/scaleway_function_namespace_info.py b/plugins/modules/scaleway_function_namespace_info.py index e3d889ed08..7b9b5ba011 100644 --- a/plugins/modules/scaleway_function_namespace_info.py +++ b/plugins/modules/scaleway_function_namespace_info.py @@ -41,6 +41,7 @@ options: - fr-par - nl-ams - pl-waw + - it-mil name: type: str diff --git a/plugins/modules/scaleway_lb.py b/plugins/modules/scaleway_lb.py index 72c85333c5..79f946cd93 100644 --- a/plugins/modules/scaleway_lb.py +++ b/plugins/modules/scaleway_lb.py @@ -67,6 +67,7 @@ options: - nl-ams - fr-par - pl-waw + - it-mil tags: type: list