From 3711ee4de9eeb57372f34238243ce7a5877b8873 Mon Sep 17 00:00:00 2001 From: Sven Ketelsen Date: Tue, 15 Mar 2022 18:35:02 +0100 Subject: [PATCH] feat: dynamic inventory skips now all servers with label manual - avoid gathering of manually used servers --- inventory_plugins/netgo-hcloud.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/inventory_plugins/netgo-hcloud.py b/inventory_plugins/netgo-hcloud.py index b958b61..3bfd999 100644 --- a/inventory_plugins/netgo-hcloud.py +++ b/inventory_plugins/netgo-hcloud.py @@ -68,9 +68,9 @@ class MyHcloudAPI: while page > 0: api_url = "" if not self.label_selector: - api_url = "{}/{}?label_selector=!manual&per_page={}&page={}".format(self.BASE, api_path, str(page_size), str(page)) + api_url = "{}/{}?per_page={}&page={}".format(self.BASE, api_path, str(page_size), str(page)) else: - api_url = "{}/{}?label_selector={},!manual&per_page={}&page={}".format(self.BASE, api_path, self.label_selector, str(page_size), str(page)) + api_url = "{}/{}?label_selector={}&per_page={}&page={}".format(self.BASE, api_path, self.label_selector, str(page_size), str(page)) display.display(api_url) @@ -179,10 +179,10 @@ class InventoryModule(BaseInventoryPlugin, Constructable, Cacheable): loadbalancerPrivateIp = "-" # filter all loadbalancers by naming convention -> {{ stage }}-ingress - ingressLoadbalancers = [lb for lb in loadbalancers if lb["name"] == self.get_option("stage") + "-ingress"] + loadbalancers = [x for x in loadbalancers if x["name"] == self.get_option("stage") + "-ingress"] + loadbalancers.sort(key=lambda x: x.get('name')) - ingressLoadbalancers.sort(key=lambda x: x.get('name')) - for loadbalancer in ingressLoadbalancers: + for loadbalancer in loadbalancers: loadbalancerId = loadbalancer["id"] loadbalancerName = loadbalancer["name"] loadbalancerLabels = loadbalancer["labels"] @@ -191,7 +191,10 @@ class InventoryModule(BaseInventoryPlugin, Constructable, Cacheable): display.display("loadbalancer:<" + loadbalancerName + ">, publicIp=<" + loadbalancerPublicIp + ">, privateIp=<" + loadbalancerPrivateIp + ">") + # due to a hetzner api bug for label selector: only last given selector is used - label_selector=stage=XXX,!manual not working correctly + servers = [x for x in servers if 'manual' not in x["labels"]] servers.sort(key=lambda x: x.get('name')) + for server in servers: serverId = server["id"] serverName = server["name"]