From 333a906f056c132669ccbac653d2cac00f7b88f1 Mon Sep 17 00:00:00 2001 From: Sebastian Tobie Date: Sun, 10 Dec 2023 20:49:32 +0100 Subject: [PATCH] added new option and changed the format of the interfaces --- changelogs/fragments/scp-hostname.yml | 2 ++ galaxy.yml | 2 +- plugins/inventory/scp.py | 27 ++++++++++++++++++--------- 3 files changed, 21 insertions(+), 10 deletions(-) create mode 100644 changelogs/fragments/scp-hostname.yml diff --git a/changelogs/fragments/scp-hostname.yml b/changelogs/fragments/scp-hostname.yml new file mode 100644 index 0000000..9902023 --- /dev/null +++ b/changelogs/fragments/scp-hostname.yml @@ -0,0 +1,2 @@ +--- +release_summary: added nickname_is_hostname config to let the nickname be the hostname of the host diff --git a/galaxy.yml b/galaxy.yml index 5dfe5af..4810d44 100644 --- a/galaxy.yml +++ b/galaxy.yml @@ -1,7 +1,7 @@ --- namespace: ansible name: netcup -version: 0.1.0 +version: 0.1.1 readme: README.md authors: - Sebastian Tobie diff --git a/plugins/inventory/scp.py b/plugins/inventory/scp.py index 14a8da3..c1c5038 100644 --- a/plugins/inventory/scp.py +++ b/plugins/inventory/scp.py @@ -42,22 +42,25 @@ class InventoryModule(BaseInventoryPlugin): inventory.add_host(nickname, group) else: inventory.add_child(group, nickname) - interfaces = [] + interfaces = dict() for interface in serverinfo["serverInterfaces"]: - interfaces.append( - dict( - driver=interface["driver"], - id=interface["id"], - ipv4=interface["ipv4IP"], - ipv6=interface["ipv6IP"], - mac=interface["mac"], - ) + interfaces[interface["mac"]] = dict( + driver=interface["driver"], + id=interface["id"], + ipv4=interface["ipv4IP"], + ipv6=interface["ipv6IP"], + mac=interface["mac"], ) + if len(interface["ipv4IP"]) > 0: + ansible_host = interface["ipv4IP"][0] inventory.set_variable(nickname, "interfaces", interfaces) inventory.set_variable(nickname, "memory", serverinfo["memory"]) inventory.set_variable(nickname, "name", serverinfo["vServerName"]) inventory.set_variable(nickname, "cores", serverinfo["cpuCores"]) inventory.set_variable(nickname, "up", serverinfo["status"] == "online") + if self.config.get("nickname_is_hostname", False): + ansible_host = nickname + inventory.set_variable(nickname, "ansible_host", ansible_host) DOCUMENTATION = """ @@ -79,4 +82,10 @@ DOCUMENTATION = """ - API password to authenticate againt the api. - This is different from you SCP password and must be set indipendently from the SCP password required: true + nickname_is_hostname: + version_added: 0.1.1 + description: use the nickname as hostname + type: bool + required: false + default: false """