Dashboard cards, backup last-seen
This commit is contained in:
@@ -66,6 +66,42 @@ class GeEnforcePlugin(BasePlugin):
|
||||
ManifestEnforcementReport, ManifestEnforcementResult, PcTypeAlias,
|
||||
]
|
||||
|
||||
def get_dashboard_widgets(self) -> List[Dict]:
|
||||
"""Dashboard cards this plugin contributes.
|
||||
|
||||
DATA AND SHAPE, not a component name. The older widget contract named a
|
||||
Vue component per widget, which cannot survive a lean build - a
|
||||
plugin's component may never be staged into the frontend bundle - and
|
||||
is why five plugins declared widgets pointing at components nobody ever
|
||||
wrote. Core owns a small set of generic renderers; a plugin says what
|
||||
to show and how to link it. Same lesson ADR-010 already applied to
|
||||
asset panels.
|
||||
|
||||
`empty: hide` matters as much as the data. A card that reports "nothing
|
||||
wrong" every day teaches people to stop reading the page, which is
|
||||
exactly how a fleet log reached 3,234 lines with 17 that mattered.
|
||||
"""
|
||||
return [
|
||||
{
|
||||
'id': 'geenforce-failures',
|
||||
'title': 'Enforcement failures',
|
||||
'endpoint': '/api/geenforce/dashboard/failures',
|
||||
'render': 'exceptions',
|
||||
'severity': 'critical',
|
||||
'permission': 'geenforce.manage',
|
||||
'empty': 'hide',
|
||||
'position': 10,
|
||||
'map': {
|
||||
'title': 'hostname',
|
||||
'detail': 'entryname',
|
||||
'meta': [{'key': 'message'}, {'key': 'exitcode',
|
||||
'label': 'exit'}],
|
||||
'link': '/pcs/{computerid}',
|
||||
'timestamp': 'receivedat',
|
||||
},
|
||||
},
|
||||
]
|
||||
|
||||
def get_permissions(self) -> List:
|
||||
"""RBAC permissions this plugin owns (edit vs ship are split)."""
|
||||
return [
|
||||
|
||||
Reference in New Issue
Block a user