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}}
|
{token.id, %{direct: direct, total: total}}
|
||||||
end)
|
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
|
# Get organization-wide agent health statistics
|
||||||
agent_health_stats = Stats.get_organization_agent_health(organization.id)
|
agent_health_stats = Stats.get_organization_agent_health(organization.id)
|
||||||
assignment_breakdown = Stats.get_device_assignment_breakdown(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(:global_default_cloud_poller_id, global_default_cloud_poller_id)
|
||||||
|> assign(:selected_global_default, global_default_cloud_poller_id || "")
|
|> assign(:selected_global_default, global_default_cloud_poller_id || "")
|
||||||
|> assign(:device_counts, equipment_counts)
|
|> assign(:device_counts, equipment_counts)
|
||||||
|
|> assign(:cloud_poller_counts, cloud_poller_counts)
|
||||||
|> assign(:agent_health_stats, agent_health_stats)
|
|> assign(:agent_health_stats, agent_health_stats)
|
||||||
|> assign(:assignment_breakdown, assignment_breakdown)
|
|> assign(:assignment_breakdown, assignment_breakdown)
|
||||||
|> assign(:offline_agents, offline_agents)
|
|> assign(:offline_agents, offline_agents)
|
||||||
|
|
@ -162,6 +175,8 @@ defmodule ToweropsWeb.AgentLive.Index do
|
||||||
{token.id, %{direct: direct, total: total}}
|
{token.id, %{direct: direct, total: total}}
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
cloud_poller_counts = calculate_cloud_poller_counts(cloud_pollers)
|
||||||
|
|
||||||
# Refresh health statistics
|
# Refresh health statistics
|
||||||
agent_health_stats = Stats.get_organization_agent_health(organization.id)
|
agent_health_stats = Stats.get_organization_agent_health(organization.id)
|
||||||
assignment_breakdown = Stats.get_device_assignment_breakdown(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(:global_default_cloud_poller_id, global_default_cloud_poller_id)
|
||||||
|> assign(:selected_global_default, global_default_cloud_poller_id || "")
|
|> assign(:selected_global_default, global_default_cloud_poller_id || "")
|
||||||
|> assign(:device_counts, equipment_counts)
|
|> assign(:device_counts, equipment_counts)
|
||||||
|
|> assign(:cloud_poller_counts, cloud_poller_counts)
|
||||||
|> assign(:agent_health_stats, agent_health_stats)
|
|> assign(:agent_health_stats, agent_health_stats)
|
||||||
|> assign(:assignment_breakdown, assignment_breakdown)
|
|> assign(:assignment_breakdown, assignment_breakdown)
|
||||||
|> assign(:offline_agents, offline_agents)
|
|> 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)
|
cloud_pollers = load_cloud_pollers_if_superuser(socket.assigns.current_scope)
|
||||||
|
|
||||||
equipment_counts = calculate_device_counts(agent_tokens)
|
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)
|
agent_health_stats = Stats.get_organization_agent_health(organization.id)
|
||||||
assignment_breakdown = Stats.get_device_assignment_breakdown(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(:agent_tokens, agent_tokens)
|
||||||
|> assign(:cloud_pollers, cloud_pollers)
|
|> assign(:cloud_pollers, cloud_pollers)
|
||||||
|> assign(:device_counts, equipment_counts)
|
|> assign(:device_counts, equipment_counts)
|
||||||
|
|> assign(:cloud_poller_counts, cloud_poller_counts)
|
||||||
|> assign(:agent_health_stats, agent_health_stats)
|
|> assign(:agent_health_stats, agent_health_stats)
|
||||||
|> assign(:assignment_breakdown, assignment_breakdown)
|
|> assign(:assignment_breakdown, assignment_breakdown)
|
||||||
|> assign(:offline_agents, offline_agents)
|
|> assign(:offline_agents, offline_agents)
|
||||||
|
|
@ -291,6 +309,14 @@ defmodule ToweropsWeb.AgentLive.Index do
|
||||||
end)
|
end)
|
||||||
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
|
defp get_success_message(is_cloud_poller) do
|
||||||
if is_cloud_poller,
|
if is_cloud_poller,
|
||||||
do: "Cloud poller created successfully",
|
do: "Cloud poller created successfully",
|
||||||
|
|
|
||||||
|
|
@ -214,6 +214,19 @@
|
||||||
</span>
|
</span>
|
||||||
</:col>
|
</: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">
|
<:col :let={agent} label="Last Seen">
|
||||||
<div class="text-sm text-gray-900 dark:text-white">
|
<div class="text-sm text-gray-900 dark:text-white">
|
||||||
<.timestamp datetime={agent.last_seen_at} timezone={@timezone} />
|
<.timestamp datetime={agent.last_seen_at} timezone={@timezone} />
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue