From 11483921f24bdabe6c3d898a7a7b689cfc7006bc Mon Sep 17 00:00:00 2001 From: Daniel Sternig Date: Sat, 15 Feb 2020 17:09:18 +0100 Subject: [PATCH] =?UTF-8?q?Added=20additional=20error=20handling=20inside?= =?UTF-8?q?=20the=20hcloud.py=20inventory=20plugin=E2=80=A6=20(#66381)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Added additional error handling inside the hcloud.py inventory plugin. Otherwise, errors may happen, if the HCloud API is not able to correctly identify the server image. * Corrected the previous commit to not check for None on variables that are always set. Additionally, used image.description if image.name was not set, instead of the previously added default string. --- lib/ansible/plugins/inventory/hcloud.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/lib/ansible/plugins/inventory/hcloud.py b/lib/ansible/plugins/inventory/hcloud.py index 21647f0fffd..1baf6cfd946 100644 --- a/lib/ansible/plugins/inventory/hcloud.py +++ b/lib/ansible/plugins/inventory/hcloud.py @@ -168,16 +168,27 @@ class InventoryModule(BaseInventoryPlugin, Constructable): self.inventory.set_variable(server.name, "ansible_host", to_native(server.public_net.ipv4.dns_ptr)) # Server Type - self.inventory.set_variable(server.name, "server_type", to_native(server.image.name)) + if server.image is not None and server.image.name is not None: + self.inventory.set_variable(server.name, "server_type", to_native(server.image.name)) + else: + self.inventory.set_variable(server.name, "server_type", to_native("No Image name found.")) # Datacenter self.inventory.set_variable(server.name, "datacenter", to_native(server.datacenter.name)) self.inventory.set_variable(server.name, "location", to_native(server.datacenter.location.name)) # Image - self.inventory.set_variable(server.name, "image_id", to_native(server.image.id)) - self.inventory.set_variable(server.name, "image_name", to_native(server.image.name)) - self.inventory.set_variable(server.name, "image_os_flavor", to_native(server.image.os_flavor)) + if server.image is not None: + self.inventory.set_variable(server.name, "image_id", to_native(server.image.id)) + self.inventory.set_variable(server.name, "image_os_flavor", to_native(server.image.os_flavor)) + if server.image.name is not None: + self.inventory.set_variable(server.name, "image_name", to_native(server.image.name)) + else: + self.inventory.set_variable(server.name, "image_name", to_native(server.image.description)) + else: + self.inventory.set_variable(server.name, "image_id", to_native("No Image ID found")) + self.inventory.set_variable(server.name, "image_name", to_native("No Image Name found")) + self.inventory.set_variable(server.name, "image_os_flavor", to_native("No Image OS Flavor found")) # Labels self.inventory.set_variable(server.name, "labels", dict(server.labels))