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 diff --git a/plugins/module_utils/scaleway.py b/plugins/module_utils/scaleway.py index ee09b2dd9c..4c6a47ba31 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) @@ -461,6 +460,7 @@ SCALEWAY_REGIONS = [ "fr-par", "nl-ams", "pl-waw", + "it-mil" ] SCALEWAY_ZONES = [ @@ -473,4 +473,5 @@ SCALEWAY_ZONES = [ "pl-waw-1", "pl-waw-2", "pl-waw-3", + "it-mil-1" ] 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_ip_info.py b/plugins/modules/scaleway_ip_info.py index cbe21e2785..515df542a8 100644 --- a/plugins/modules/scaleway_ip_info.py +++ b/plugins/modules/scaleway_ip_info.py @@ -28,8 +28,8 @@ options: region: type: str description: - - Scaleway region to use (for example C(par1)). - required: true + - Scaleway region to use (for example C(par1)) (deprecated). + required: false choices: - ams1 - EMEA-NL-EVS @@ -44,16 +44,38 @@ 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 + - it-mil-1 """ 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 +105,8 @@ from ansible.module_utils.basic import AnsibleModule from ansible_collections.community.general.plugins.module_utils.scaleway import ( SCALEWAY_LOCATION, + SCALEWAY_ENDPOINT, + SCALEWAY_ZONES, Scaleway, ScalewayException, scaleway_argument_spec, @@ -94,26 +118,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__": 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 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