From 02f1af6fe3423e87a9ef858a5deffbff0ac46161 Mon Sep 17 00:00:00 2001 From: Graham McIntire Date: Thu, 12 Feb 2026 13:07:29 -0600 Subject: [PATCH] feat: hook topology inference into polling pipeline DevicePollerWorker calls Topology.process_device/2 after saving neighbor data. Topology updates incrementally every poll cycle. --- lib/towerops/workers/device_poller_worker.ex | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/towerops/workers/device_poller_worker.ex b/lib/towerops/workers/device_poller_worker.ex index 28f22496..5c7e561e 100644 --- a/lib/towerops/workers/device_poller_worker.ex +++ b/lib/towerops/workers/device_poller_worker.ex @@ -328,6 +328,15 @@ defmodule Towerops.Workers.DevicePollerWorker do "device:#{device.id}", {:neighbors_updated, device.id} ) + + # Run topology inference after neighbor data is saved + case Towerops.Topology.process_device(device, device.organization_id) do + {:ok, :changed} -> + Logger.debug("Topology updated for #{device.name}") + + {:ok, :unchanged} -> + :ok + end rescue error -> Logger.error("Error polling neighbors for #{device.name}: #{inspect(error)}\n#{Exception.format_stacktrace()}")