diff --git a/changelogs/fragments/444-scaleway-improve_removal_handling.yml b/changelogs/fragments/444-scaleway-improve_removal_handling.yml new file mode 100644 index 00000000000..34ae3f6fd83 --- /dev/null +++ b/changelogs/fragments/444-scaleway-improve_removal_handling.yml @@ -0,0 +1,2 @@ +bugfixes: + - scaleway_compute - fix transition handling that could cause errors when removing a node (https://github.com/ansible-collections/community.general/pull/444). diff --git a/plugins/modules/cloud/scaleway/scaleway_compute.py b/plugins/modules/cloud/scaleway/scaleway_compute.py index 4e875d1fc18..c9523dec796 100644 --- a/plugins/modules/cloud/scaleway/scaleway_compute.py +++ b/plugins/modules/cloud/scaleway/scaleway_compute.py @@ -196,10 +196,12 @@ def fetch_state(compute_api, server): compute_api.module.fail_json(msg="Could not fetch state in %s" % response.json) -def wait_to_complete_state_transition(compute_api, server): - wait = compute_api.module.params["wait"] +def wait_to_complete_state_transition(compute_api, server, wait=None): + if wait is None: + wait = compute_api.module.params["wait"] if not wait: return + wait_timeout = compute_api.module.params["wait_timeout"] wait_sleep_time = compute_api.module.params["wait_sleep_time"] @@ -353,7 +355,7 @@ def absent_strategy(compute_api, wished_server): # A server MUST be stopped to be deleted. while fetch_state(compute_api=compute_api, server=target_server) != "stopped": - wait_to_complete_state_transition(compute_api=compute_api, server=target_server) + wait_to_complete_state_transition(compute_api=compute_api, server=target_server, wait=True) response = stop_server(compute_api=compute_api, server=target_server) if not response.ok: @@ -361,7 +363,7 @@ def absent_strategy(compute_api, wished_server): response.json) compute_api.module.fail_json(msg=err_msg) - wait_to_complete_state_transition(compute_api=compute_api, server=target_server) + wait_to_complete_state_transition(compute_api=compute_api, server=target_server, wait=True) response = remove_server(compute_api=compute_api, server=target_server)