diff --git a/tailscalesd/main.py b/tailscalesd/main.py index cf30beb..62f4490 100644 --- a/tailscalesd/main.py +++ b/tailscalesd/main.py @@ -137,8 +137,8 @@ def matrix_workers_to_sd(tailnet, device, workers) -> List[Dict]: return target_groups -async def matrix_sd(tailnet, devices) -> List[Dict]: - sd: List[Dict] = [] +def filter_devices(devices) -> List[Dict]: + devices_filtered = [] for device in devices: hostname = device.get("hostname", None) if not hostname: @@ -150,6 +150,13 @@ async def matrix_sd(tailnet, devices) -> List[Dict]: extra={"device": device}, ) continue + devices_filtered.append(device) + return devices_filtered + + +async def matrix_sd(tailnet, devices) -> List[Dict]: + sd: List[Dict] = [] + for device in devices: if MATRIX_TAG not in device["tags"]: continue try: @@ -190,6 +197,7 @@ async def poll_sd(settings: Settings): while True: try: devices = await tailscale_devices(settings) + devices = filter_devices(devices) device_targets = plain_devices_sd(settings.tailnet, devices) matrix_targets = await matrix_sd(settings.tailnet, devices) CACHE_SD = matrix_targets + device_targets