Skip to content

NMS-20364: Manage Minions and Locations page - #8896

Open
joseanesONMS wants to merge 7 commits into
jira/NMS-20364-distributed-monitoringfrom
jira/NMS-20364-distributed-monitoring-page
Open

joseanesONMS wants to merge 7 commits into
jira/NMS-20364-distributed-monitoringfrom
jira/NMS-20364-distributed-monitoring-page

Conversation

@joseanesONMS

Copy link
Copy Markdown
Contributor

Merges the Vue Minions and Monitoring Locations pages into one tabbed page, Manage Minions and Locations, on the Distributed Monitoring feature branch.

The page reads only; the REST APIs are unchanged, and everything the tabs add on top of them is derived client-side or read through existing list endpoints.

  • Tabs with counts, a 30-second auto-refresh with an Updated label, and one collapsible About panel in the Manage WS-Man style.
  • Minions tab is read-only: status in uppercase, version compared to the core as major.minor.patch, last heartbeat as time since coloured by age, quick filters, a location picker, and a link into the Locations tab.
  • Locations tab shows the description, Minions with down and unknown counts, and a node count; geolocation and priority are hidden; Default is locked.
  • Deleting a location is refused while nodes or Minions are in it, names the applications using it as a perspective and the perspective outages that go with it, needs the name typed, and reports what was removed.
  • Deleting a Minion is refused while its last heartbeat is younger than two minutes, re-read while the dialog is open; the dialog counts its alarms and says its node stays until the Minions requisition is synchronized.
  • OnmsMessage joins onms-ui as the callout used by these dialogs.
  • The menu, Configure OpenNMS page, search actions, smoke tests and old routes point at the new page.

External References

The two admin pages become tabs of one page with a 30-second auto-refresh
and a last-updated label. The Minions tab is read-only for now: the editor
stays in the tree but nothing reaches it. It shows the minion, its location,
an uppercase status, the version against the core's, and the last heartbeat
as time since with a colour by age, plus quick filters. The Locations tab
shows the description, how many minions and nodes each location has with
down and unknown counts, hides geolocation and priority, and locks the
Default location, which is the core. Each tab links into the other in
context. The menu, the Configure OpenNMS page and the search actions point
at the new page and the old routes redirect to it.
Minions report v37.0.0-SNAPSHOT while the core reports 37.0.0, so a verbatim
comparison flagged every minion; both sides are now reduced to
major.minor.patch and a snapshot suffix is not a difference. Node counts are
fetched only while the Locations tab is showing and the page is visible, the
locations table masks only its first load, an asterisk in a name no longer
turns the count into a wildcard match, the two tabs share one clock and one
status vocabulary, a jump into the Minions tab resets the quick filter, and a
jump into the Locations tab matches the name exactly.
The Minions tab gets a location dropdown wired to the same filter as the
cross-tab chip, and both chips clear through a real button since the chip's
own icon cannot take focus. A version mismatch now says so in the tag text.
A visibility flip younger than ten seconds no longer reloads, node-count
batches commit only when newest and are refreshed after a location change
while the tab shows them, and the admin-page smoke test waits for the Vue
title and the selected tab instead of the legacy table headers.
The page, its route, breadcrumb, menu item and smoke tests take the new
name. The two per-tab About dialogs become one collapsible panel above the
tabs in the Manage WS-Man style, explaining what locations and Minions are,
how a Minion is set up against the core, and what each tab shows, without
the fields the page no longer exposes. The header and the panel get the
same gutter as the tab panels so the Refresh button lines up with the card.
Deleting a location is refused while any node or Minion is in it, since the
node foreign key has no cascade and the server would reject it anyway. The
dialog names the applications that use the location as a perspective and
counts the perspective outages, both of which the server drops silently,
asks for the name to be typed, and after the delete lists what was removed.
Deleting a Minion is refused while its last heartbeat is younger than two
minutes, with a warning to stop the process first; the dialog counts the
alarms that go with it and says the node stays until the Minions
requisition is synchronized, which is what the server does.

OnmsMessage joins the shared components as the callout for these dialogs.
Auto-refresh pauses while a dialog is open, so the Minion dialog now reads
the Minion again on open and every 30 seconds while open; only a fresh read
can lift the two-minute block, and a Minion reported up is blocked whatever
its date says. The location dialog counts nodes and Minions fresh, reloads
its callouts when the server refuses, trims and submits the typed name on
Enter, and focuses the right control. The texts say that events are kept,
name the requisition pattern, and describe the Minion block as this page's
rule since no foreign key enforces it. Applications past the page size are
reported as uncounted rather than absent.
Six short entries, three per tab, instead of the long explanation.
@joseanes

Copy link
Copy Markdown
Screenshot 2026-09-24 at 19 58 57 Screenshot 2026-09-24 at 17 02 05 Screenshot 2026-09-24 at 17 01 53 Screenshot 2026-09-24 at 17 01 32 Screenshot 2026-09-24 at 16 13 48 Screenshot 2026-09-24 at 16 13 40 Screenshot 2026-09-24 at 16 13 33 Screenshot 2026-09-24 at 16 13 18 Screenshot 2026-09-24 at 16 13 09 Screenshot 2026-09-24 at 16 12 52

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants