From b000c1633dc5b9bba0bc7f51376d9172b46a8feb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Moser?= Date: Sun, 4 Nov 2018 11:23:36 +0100 Subject: [PATCH] vultr: fix for API returned unexpected empty list (#48036) * vultr: fix for API returned unexpected empty list * add changelog (cherry picked from commit 788247583b9bdfaf24984a207e8495bb402c790c) --- .../48036-vultr-fix-empty-list-handling.yaml | 3 +++ lib/ansible/module_utils/vultr.py | 2 +- .../roles/vultr_server_facts/tasks/main.yml | 15 +++++++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 changelogs/fragments/48036-vultr-fix-empty-list-handling.yaml diff --git a/changelogs/fragments/48036-vultr-fix-empty-list-handling.yaml b/changelogs/fragments/48036-vultr-fix-empty-list-handling.yaml new file mode 100644 index 00000000000..5d97d48e6a3 --- /dev/null +++ b/changelogs/fragments/48036-vultr-fix-empty-list-handling.yaml @@ -0,0 +1,3 @@ +bugfixes: + - vultr - fixed the handling of an inconsistency in the response from + Vultr API when it returns an unexpected empty list instead a empty dict. diff --git a/lib/ansible/module_utils/vultr.py b/lib/ansible/module_utils/vultr.py index 775c970a596..83cf55582f8 100644 --- a/lib/ansible/module_utils/vultr.py +++ b/lib/ansible/module_utils/vultr.py @@ -201,7 +201,7 @@ class Vultr: return {} try: - return self.module.from_json(to_text(res)) + return self.module.from_json(to_native(res)) or {} except ValueError as e: self.module.fail_json(msg="Could not process response into json: %s" % e) diff --git a/test/legacy/roles/vultr_server_facts/tasks/main.yml b/test/legacy/roles/vultr_server_facts/tasks/main.yml index 149ed1bf400..f60d0c6d7c8 100644 --- a/test/legacy/roles/vultr_server_facts/tasks/main.yml +++ b/test/legacy/roles/vultr_server_facts/tasks/main.yml @@ -1,8 +1,23 @@ # Copyright (c) 2018, Yanis Guenane # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) --- +- name: setup ensure VM is absent + vultr_server: + name: "{{ vultr_server_name }}" + state: absent + register: result + +# Servers can only be destroyed 5 min after creation +- name: wait for 5 min until VM is absent + local_action: wait_for + when: result is changed + - name: test gather vultr server facts - empty resources vultr_server_facts: +- name: verify test gather vultr server facts - empty resources + assert: + that: + - ansible_facts.vultr_server_facts | count == 0 - name: Create the server vultr_server: