add mapped drives card
Mapped drives existed only as a comma-joined line in the user context card, which is fine for three drives and unreadable for a dozen. They now get their own list card in Monitors: one row per letter, remote path as meta, health as a badge. Reuses the statecolor/levels vocabulary the tracked-services cards already declare rather than new CSS. Only unhealthy drives are coloured. Green on every working drive makes the broken one just another badge in a row of badges, and the card exists to make the exception findable at a glance. Unhealthy rows sort first for the same reason - a user with a dozen mappings should not hunt for the broken one - and the sort is on health alone, so drive-letter order survives within each group and the list does not reshuffle between refreshes. The merge logic is untouched. _mapped_drive_rows now returns structured rows and the user-context summary line is built from them, so the card and the line cannot drift apart about a drive's status. The two silent-failure paths are mutation-tested: forcing every badge green failed 7 tests, and the first sort test passed a mutation that added a secondary key because every broken drive in it said the same word - it now uses statuses that would reorder under a text sort. Also corrects a stale warning claiming the merge is untested; it has been covered since Phase 1.
This commit is contained in:
@@ -557,6 +557,39 @@ class EndpointsPlugin(BasePlugin):
|
||||
'position': 15,
|
||||
'group': 'monitors',
|
||||
},
|
||||
{
|
||||
# Session-scoped, so it sits with the other things watched
|
||||
# rather than acted on. The user context card still carries a
|
||||
# one-line summary; this is the same data with room to show a
|
||||
# remote path and a per-drive badge, and both are built from
|
||||
# _mapped_drive_rows so they cannot disagree.
|
||||
#
|
||||
# Room reserved here for the future one-click reconnect: the
|
||||
# list render already supports a row action, so adding it is a
|
||||
# map/commandendpoint change rather than a new card.
|
||||
'id': 'endpoints-mappeddrives',
|
||||
'title': 'Mapped drives',
|
||||
'assettypes': ['computer'],
|
||||
'endpoint': '/api/endpoints/asset/{assetid}/mappeddrives',
|
||||
'render': 'list',
|
||||
'collapsible': True,
|
||||
'status': {
|
||||
'key': 'statecolor',
|
||||
'levels': {
|
||||
'green': 'ok',
|
||||
'yellow': 'warning',
|
||||
'red': 'critical',
|
||||
},
|
||||
},
|
||||
'map': {
|
||||
'title': 'drive',
|
||||
'meta': [{'key': 'remote', 'mono': True}],
|
||||
'badge': {'label': 'statuslabel', 'color': 'statecolor'},
|
||||
},
|
||||
'empty': 'No mapped drives reported.',
|
||||
'position': 21,
|
||||
'group': 'monitors',
|
||||
},
|
||||
{
|
||||
# Volumes and physical drive health in one card, as two
|
||||
# sections. VISUAL GROUPING ONLY: the two tables share no key
|
||||
|
||||
Reference in New Issue
Block a user