diff --git a/lib/towerops/snmp.ex b/lib/towerops/snmp.ex index 1f21c526..9833aba6 100644 --- a/lib/towerops/snmp.ex +++ b/lib/towerops/snmp.ex @@ -1878,6 +1878,18 @@ defmodule Towerops.Snmp do end end + # Helper to format error samples into log message text + defp format_error_samples([]), do: "" + + defp format_error_samples(samples) do + formatted_samples = + Enum.map_join(samples, "\n", fn sample -> + " - IP: #{sample.ip}, MAC: #{sample.mac}, errors: #{inspect(sample.errors)}" + end) + + "\nSample errors:\n" <> formatted_samples + end + @doc """ Bulk upserts ARP entries for a device. Returns `{success_count, error_count}` tuple. @@ -1906,17 +1918,7 @@ defmodule Towerops.Snmp do end) |> tap(fn {_s, errors, error_samples} -> if errors > 0 do - samples_text = - case Enum.reverse(error_samples) do - [] -> - "" - - samples -> - "\nSample errors:\n" <> - Enum.map_join(samples, "\n", fn sample -> - " - IP: #{sample.ip}, MAC: #{sample.mac}, errors: #{inspect(sample.errors)}" - end) - end + samples_text = error_samples |> Enum.reverse() |> format_error_samples() Logger.warning( "#{errors} ARP upsert failures for device #{device_id}#{samples_text}",