From a6ef5a0ff6a0c875b5cc0f6e3c2bd6b3cc9973ac Mon Sep 17 00:00:00 2001 From: Brad Stein Date: Tue, 31 Mar 2026 19:21:26 -0300 Subject: [PATCH] service: clarify metis replacement coverage --- pkg/service/server.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pkg/service/server.go b/pkg/service/server.go index 4995d74..455e638 100644 --- a/pkg/service/server.go +++ b/pkg/service/server.go @@ -516,6 +516,7 @@ var metisPage = template.Must(template.New("metis").Parse(` +
@@ -577,6 +578,7 @@ var metisPage = template.Must(template.New("metis").Parse(` const eventsEl = document.getElementById('events'); const snapshotCountEl = document.getElementById('snapshot-count'); const targetCountEl = document.getElementById('target-count'); + const targetNoteEl = document.getElementById('target-note'); const hostNoteEl = document.getElementById('host-note'); const deviceNoteEl = document.getElementById('device-note'); const artifactNoteEl = document.getElementById('artifact-note'); @@ -693,6 +695,10 @@ var metisPage = template.Must(template.New("metis").Parse(` if(!nodeSelect.value && nodeNames.length){ nodeSelect.value = nodeNames[0]; } + const trackedNodes = Math.max((state.snapshots || []).length, (state.flash_hosts || []).length); + targetNoteEl.textContent = nodeNames.length + ? 'Only nodes with full replacement definitions appear here. Current replacement coverage: ' + nodeNames.length + ' node(s)' + (trackedNodes ? ' across ' + trackedNodes + ' tracked cluster node(s).' : '.') + : 'No inventory-backed replacement nodes are loaded yet.'; setOptions(hostSelect, state.flash_hosts || [], null, 'No flash hosts available'); if(state.selected_host && (state.flash_hosts || []).includes(state.selected_host)){ @@ -819,7 +825,7 @@ var metisPage = template.Must(template.New("metis").Parse(` await runAction('Starting image build', 'Queueing the node image build now.', async ()=>{ await post('/api/jobs/build', {node: nodeSelect.value}); await refreshState({silent:true}); - banner('success', 'Image build queued', 'Metis started building the replacement image for ' + nodeSelect.value + '.'); + banner('success', 'Image build queued', 'Metis started building the replacement image for ' + nodeSelect.value + '. Successful build-only runs land on ' + state.local_host + ' at /var/lib/metis/artifacts/' + nodeSelect.value + '.img.'); }); });