diff --git a/lib/towerops/job_monitoring.ex b/lib/towerops/job_monitoring.ex index d04d76e3..a0117503 100644 --- a/lib/towerops/job_monitoring.ex +++ b/lib/towerops/job_monitoring.ex @@ -29,6 +29,7 @@ defmodule Towerops.JobMonitoring do order_by: [asc: j.attempted_at] ) |> Repo.all() + |> preload_device_context() end @doc """ @@ -86,4 +87,13 @@ defmodule Towerops.JobMonitoring do ) |> Repo.all() end + + # Add helper to fetch device context + defp preload_device_context(jobs) do + Enum.map(jobs, fn job -> + device_id = get_in(job.args, ["device_id"]) + device = device_id && Towerops.Repo.get(Towerops.Devices.Device, device_id) + Map.put(job, :device, device) + end) + end end diff --git a/lib/towerops_web/live/admin/monitoring_live.ex b/lib/towerops_web/live/admin/monitoring_live.ex index 508deb7c..f345fd1d 100644 --- a/lib/towerops_web/live/admin/monitoring_live.ex +++ b/lib/towerops_web/live/admin/monitoring_live.ex @@ -25,6 +25,7 @@ defmodule ToweropsWeb.Admin.MonitoringLive do socket |> assign(:page_title, "Job Monitoring") |> assign(:active_jobs, []) + |> assign(:executing_jobs, []) |> assign(:stuck_jobs_count, 0) |> assign(:failed_jobs_count, 0) |> assign(:recent_jobs, []) @@ -59,15 +60,21 @@ defmodule ToweropsWeb.Admin.MonitoringLive do @spec load_monitoring_data(Phoenix.LiveView.Socket.t()) :: Phoenix.LiveView.Socket.t() defp load_monitoring_data(socket) do + executing_jobs = JobMonitoring.list_active_jobs() stuck_jobs = JobMonitoring.list_stuck_jobs() failed_jobs = JobMonitoring.list_failed_jobs() recent_jobs = JobMonitoring.list_recent_completions(20) metrics = Metrics.calculate_all() socket + |> assign(:executing_jobs, executing_jobs) |> assign(:stuck_jobs_count, length(stuck_jobs)) |> assign(:failed_jobs_count, length(failed_jobs)) |> assign(:recent_jobs, recent_jobs) |> assign(:health_metrics, metrics) end + + defp worker_name("Towerops.Workers.DevicePollerWorker"), do: "Device Poll" + defp worker_name("Towerops.Workers.DiscoveryWorker"), do: "SNMP Discovery" + defp worker_name(worker), do: worker end diff --git a/lib/towerops_web/live/admin/monitoring_live.html.heex b/lib/towerops_web/live/admin/monitoring_live.html.heex index c83cb4eb..4cfe7124 100644 --- a/lib/towerops_web/live/admin/monitoring_live.html.heex +++ b/lib/towerops_web/live/admin/monitoring_live.html.heex @@ -49,35 +49,41 @@ -
- No active jobs -
- <% else %> -No jobs currently executing
+ <% else %> ++ <%= if job.device do %> + <%= job.device.name %> + <% else %> + Device #{get_in(job.args, ["device_id"])} + <% end %> +
++ <%= worker_name(job.worker) %> +
++ Started <%= ToweropsWeb.TimeHelpers.format_time_ago(job.attempted_at) %> +
+