feat: dynamic inventory skips now all servers with label manual

- avoid gathering of manually used servers
master
Sven Ketelsen 4 years ago
parent 6945366f89
commit 3711ee4de9

@ -68,9 +68,9 @@ class MyHcloudAPI:
while page > 0: while page > 0:
api_url = "" api_url = ""
if not self.label_selector: 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: 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) display.display(api_url)
@ -179,10 +179,10 @@ class InventoryModule(BaseInventoryPlugin, Constructable, Cacheable):
loadbalancerPrivateIp = "-" loadbalancerPrivateIp = "-"
# filter all loadbalancers by naming convention -> {{ stage }}-ingress # 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 loadbalancers:
for loadbalancer in ingressLoadbalancers:
loadbalancerId = loadbalancer["id"] loadbalancerId = loadbalancer["id"]
loadbalancerName = loadbalancer["name"] loadbalancerName = loadbalancer["name"]
loadbalancerLabels = loadbalancer["labels"] loadbalancerLabels = loadbalancer["labels"]
@ -191,7 +191,10 @@ class InventoryModule(BaseInventoryPlugin, Constructable, Cacheable):
display.display("loadbalancer:<" + loadbalancerName + ">, publicIp=<" + loadbalancerPublicIp + ">, privateIp=<" + loadbalancerPrivateIp + ">") 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')) servers.sort(key=lambda x: x.get('name'))
for server in servers: for server in servers:
serverId = server["id"] serverId = server["id"]
serverName = server["name"] serverName = server["name"]

Loading…
Cancel
Save