From 4db953bafaeb688ad4b57df6e7a6274f14f4155d Mon Sep 17 00:00:00 2001 From: mayor Date: Fri, 6 Feb 2026 11:01:10 -0600 Subject: [PATCH] Add dev-only INFO logging for IP address discovery Shows IP address discovery and sync results at INFO level in dev environment only to help diagnose discovery issues. Changes: - Add log_ip_discovery_results/2 helper to log discovered IPs - Enhanced sync_ip_addresses/2 to log IPv4/IPv6 counts and removals - Only logs at INFO level when env is :dev, uses DEBUG in prod Example output in dev: Discovered IP addresses: 5 IPv4, 2 IPv6 (total: 7) Synced IP addresses: 5 IPv4, 2 IPv6, removed 1 This helps diagnose why IP addresses tab isn't showing on device page. --- lib/towerops/snmp/discovery.ex | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/lib/towerops/snmp/discovery.ex b/lib/towerops/snmp/discovery.ex index 4b713333..b6a7d8fb 100644 --- a/lib/towerops/snmp/discovery.ex +++ b/lib/towerops/snmp/discovery.ex @@ -212,6 +212,7 @@ defmodule Towerops.Snmp.Discovery do {:ok, vlans} <- discover_vlans_with_timeout(client_opts, profile, timeouts), Logger.info("Discovering IP addresses...", device_id: device.id), {:ok, ip_addresses} <- discover_ip_addresses_with_timeout(client_opts, timeouts), + _ = log_ip_discovery_results(device, ip_addresses), Logger.info("Discovering processors...", device_id: device.id), {:ok, processors} <- discover_processors_with_timeout(client_opts, timeouts), Logger.info("Discovering storage...", device_id: device.id), @@ -869,7 +870,19 @@ defmodule Towerops.Snmp.Discovery do upsert_ip_address(ip_data, if_index_to_interface, existing_ip_addresses) end) - Logger.debug("Synced #{length(discovered_ip_addresses)} IP addresses for device") + if Application.get_env(:towerops, :env) == :dev do + ipv4_count = Enum.count(discovered_ip_addresses, &(&1.ip_type == "ipv4")) + ipv6_count = Enum.count(discovered_ip_addresses, &(&1.ip_type == "ipv6")) + removed_count = MapSet.size(removed_keys) + + Logger.info( + "Synced IP addresses: #{ipv4_count} IPv4, #{ipv6_count} IPv6, removed #{removed_count}", + device_id: device.device_id + ) + else + Logger.debug("Synced #{length(discovered_ip_addresses)} IP addresses for device") + end + :ok end @@ -1070,6 +1083,20 @@ defmodule Towerops.Snmp.Discovery do end end + defp log_ip_discovery_results(device, ip_addresses) do + if Application.get_env(:towerops, :env) == :dev do + ipv4_count = Enum.count(ip_addresses, &(&1.ip_type == "ipv4")) + ipv6_count = Enum.count(ip_addresses, &(&1.ip_type == "ipv6")) + + Logger.info( + "Discovered IP addresses: #{ipv4_count} IPv4, #{ipv6_count} IPv6 (total: #{length(ip_addresses)})", + device_id: device.id + ) + end + + :ok + end + defp log_discovery_event(device, discovered_device, is_rediscovery) do event_type = if is_rediscovery, do: "device_rediscovered", else: "device_discovered"