diff --git a/changelogs/fragments/11361-scaleway-get-resources-none-type.yml b/changelogs/fragments/11361-scaleway-get-resources-none-type.yml new file mode 100644 index 0000000000..b12d37deaa --- /dev/null +++ b/changelogs/fragments/11361-scaleway-get-resources-none-type.yml @@ -0,0 +1,2 @@ +bugfixes: + - scaleway_image_info, scaleway_ip_info, scaleway_organization_info, scaleway_security_group_info, scaleway_server_info, scaleway_snapshot_info, scaleway_volume_info - fix ``NoneType`` error when the Scaleway API returns an empty or non-JSON response body (https://github.com/ansible-collections/community.general/issues/11361, https://github.com/ansible-collections/community.general/pull/11918). \ No newline at end of file diff --git a/plugins/module_utils/_scaleway.py b/plugins/module_utils/_scaleway.py index 05b45481ef..9fe744d624 100644 --- a/plugins/module_utils/_scaleway.py +++ b/plugins/module_utils/_scaleway.py @@ -240,10 +240,15 @@ class Scaleway: results = self.get(f"/{self.name}") if not results.ok: + api_response = results.json if results.json is not None else results.body + message = api_response.get("message") if isinstance(api_response, dict) else api_response raise ScalewayException( - f"Error fetching {self.name} ({self.module.params.get('api_url')}/{self.name}) [{results.status_code}: {results.json['message']}]" + f"Error fetching {self.name} ({self.module.params.get('api_url')}/{self.name}) [{results.status_code}: {message}]" ) + if results.json is None: + raise ScalewayException(f"Scaleway API returned an empty or non-JSON response for {self.name}") + return results.json.get(self.name) def _url_builder(self, path, params):