show cloud poller device count
This commit is contained in:
parent
2a5622d95a
commit
b241d9df91
2 changed files with 39 additions and 0 deletions
|
|
@ -32,6 +32,18 @@ defmodule ToweropsWeb.AgentLive.Index do
|
|||
{token.id, %{direct: direct, total: total}}
|
||||
end)
|
||||
|
||||
# device counts for cloud pollers (if superuser)
|
||||
cloud_poller_counts =
|
||||
if is_superuser do
|
||||
Map.new(cloud_pollers, fn token ->
|
||||
direct = Agents.count_assigned_devices(token.id)
|
||||
total = length(Agents.list_agent_polling_targets(token.id))
|
||||
{token.id, %{direct: direct, total: total}}
|
||||
end)
|
||||
else
|
||||
%{}
|
||||
end
|
||||
|
||||
# Get organization-wide agent health statistics
|
||||
agent_health_stats = Stats.get_organization_agent_health(organization.id)
|
||||
assignment_breakdown = Stats.get_device_assignment_breakdown(organization.id)
|
||||
|
|
@ -50,6 +62,7 @@ defmodule ToweropsWeb.AgentLive.Index do
|
|||
|> assign(:global_default_cloud_poller_id, global_default_cloud_poller_id)
|
||||
|> assign(:selected_global_default, global_default_cloud_poller_id || "")
|
||||
|> assign(:device_counts, equipment_counts)
|
||||
|> assign(:cloud_poller_counts, cloud_poller_counts)
|
||||
|> assign(:agent_health_stats, agent_health_stats)
|
||||
|> assign(:assignment_breakdown, assignment_breakdown)
|
||||
|> assign(:offline_agents, offline_agents)
|
||||
|
|
@ -162,6 +175,8 @@ defmodule ToweropsWeb.AgentLive.Index do
|
|||
{token.id, %{direct: direct, total: total}}
|
||||
end)
|
||||
|
||||
cloud_poller_counts = calculate_cloud_poller_counts(cloud_pollers)
|
||||
|
||||
# Refresh health statistics
|
||||
agent_health_stats = Stats.get_organization_agent_health(organization.id)
|
||||
assignment_breakdown = Stats.get_device_assignment_breakdown(organization.id)
|
||||
|
|
@ -174,6 +189,7 @@ defmodule ToweropsWeb.AgentLive.Index do
|
|||
|> assign(:global_default_cloud_poller_id, global_default_cloud_poller_id)
|
||||
|> assign(:selected_global_default, global_default_cloud_poller_id || "")
|
||||
|> assign(:device_counts, equipment_counts)
|
||||
|> assign(:cloud_poller_counts, cloud_poller_counts)
|
||||
|> assign(:agent_health_stats, agent_health_stats)
|
||||
|> assign(:assignment_breakdown, assignment_breakdown)
|
||||
|> assign(:offline_agents, offline_agents)
|
||||
|
|
@ -258,6 +274,7 @@ defmodule ToweropsWeb.AgentLive.Index do
|
|||
cloud_pollers = load_cloud_pollers_if_superuser(socket.assigns.current_scope)
|
||||
|
||||
equipment_counts = calculate_device_counts(agent_tokens)
|
||||
cloud_poller_counts = calculate_cloud_poller_counts(cloud_pollers)
|
||||
|
||||
agent_health_stats = Stats.get_organization_agent_health(organization.id)
|
||||
assignment_breakdown = Stats.get_device_assignment_breakdown(organization.id)
|
||||
|
|
@ -270,6 +287,7 @@ defmodule ToweropsWeb.AgentLive.Index do
|
|||
|> assign(:agent_tokens, agent_tokens)
|
||||
|> assign(:cloud_pollers, cloud_pollers)
|
||||
|> assign(:device_counts, equipment_counts)
|
||||
|> assign(:cloud_poller_counts, cloud_poller_counts)
|
||||
|> assign(:agent_health_stats, agent_health_stats)
|
||||
|> assign(:assignment_breakdown, assignment_breakdown)
|
||||
|> assign(:offline_agents, offline_agents)
|
||||
|
|
@ -291,6 +309,14 @@ defmodule ToweropsWeb.AgentLive.Index do
|
|||
end)
|
||||
end
|
||||
|
||||
defp calculate_cloud_poller_counts(cloud_pollers) do
|
||||
Map.new(cloud_pollers, fn t ->
|
||||
direct = Agents.count_assigned_devices(t.id)
|
||||
total = length(Agents.list_agent_polling_targets(t.id))
|
||||
{t.id, %{direct: direct, total: total}}
|
||||
end)
|
||||
end
|
||||
|
||||
defp get_success_message(is_cloud_poller) do
|
||||
if is_cloud_poller,
|
||||
do: "Cloud poller created successfully",
|
||||
|
|
|
|||
|
|
@ -214,6 +214,19 @@
|
|||
</span>
|
||||
</:col>
|
||||
|
||||
<:col :let={agent} label="Device">
|
||||
<% counts = Map.get(@cloud_poller_counts, agent.id, %{direct: 0, total: 0}) %>
|
||||
<div class="text-sm text-gray-900 dark:text-white">
|
||||
{counts.total} total
|
||||
</div>
|
||||
<div class="text-xs text-gray-500 dark:text-gray-400 mt-0.5">
|
||||
{counts.direct} direct
|
||||
<%= if counts.total > counts.direct do %>
|
||||
· {counts.total - counts.direct} inherited
|
||||
<% end %>
|
||||
</div>
|
||||
</:col>
|
||||
|
||||
<:col :let={agent} label="Last Seen">
|
||||
<div class="text-sm text-gray-900 dark:text-white">
|
||||
<.timestamp datetime={agent.last_seen_at} timezone={@timezone} />
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue