Refactor all_services to remove name attribute

This commit is contained in:
Tobias Reisinger 2024-10-22 18:29:03 +02:00
parent 6f9f888478
commit 1d14ac888e
Signed by: serguzim
GPG key ID: 13AD60C237A28DFE
16 changed files with 42 additions and 71 deletions
playbooks/filter_plugins

View file

@ -50,7 +50,7 @@ class FilterModule(object):
"[CERTIFICATE_EXPIRATION] > 48h"
]
for service in services:
for name, service in services.items():
if mon := service.get("monitoring"):
if service.get("dns"):
url = f"https://{service["dns"][0]['domain']}"
@ -71,7 +71,7 @@ class FilterModule(object):
conditions = default_conditions
new_endpoint = {
"name": service["name"],
"name": name,
"group": mon.get("group"),
"url": url,
"conditions": conditions,

View file

@ -2,32 +2,38 @@ class FilterModule(object):
def filters(self):
return {
'services_for_host': self.services_for_host,
'services_to_dnscontrol': self.services_to_dnscontrol,
'services_names': self.services_names,
'services_get_attr': self.services_get_attr,
'services_get_backups': self.services_get_backups,
'service_get_backups': self.service_get_backups,
'services_ports_to_docker': self.services_ports_to_docker,
'service_get_domain': self.service_get_domain,
'services_to_dnscontrol': self.services_to_dnscontrol,
}
def services_for_host(self, services, host):
result = []
for service in services:
result = {}
for name, service in services.items():
if not host:
result.append(service)
result[name] = service
continue
if service["host"] == host:
result.append(service)
result[name] = service
continue
if service["host"] == "*":
result.append(service)
result[name] = service
continue
return result
def find_service(self, services, name):
for service in services:
if service.get("name") == name:
return service
return None
def services_names(self, services):
return list(services.keys())
def services_get_attr(self, services, attr):
result = []
for service in services.values():
if value := service.get(attr):
result.append(value)
return result
def services_get_backups(self, all_services, wanted_services):
result = []
@ -36,12 +42,12 @@ class FilterModule(object):
return result
def service_get_backups(self, all_services, wanted_service):
if service := self.find_service(all_services, wanted_service):
if service := all_services.get(wanted_service):
return service.get("backup") or []
return []
def service_get_domain(self, all_services, wanted_service):
if service := self.find_service(all_services, wanted_service):
if service := all_services.get(wanted_service):
if dns := service.get("dns"):
if dns_0 := dns[0]:
return dns_0.get("domain")
@ -55,11 +61,11 @@ class FilterModule(object):
result.append(f"{port['port']}:{port['port']}/{port['protocol']}")
return result
def services_to_dnscontrol(self, services):
def services_to_dnscontrol(self, all_services):
result = {}
for service in services:
for svc_name, service in all_services.items():
for dns in service.get("dns") or []:
name = dns.get("name") or service["name"]
name = dns.get("name") or svc_name
domain_parts = dns["domain"].split(".")
target_parts = domain_parts[:-2] or ["@"]
result[name] = {