From f29f18eb2621634fbe93f02ea88d2de1efa44b84 Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Sat, 1 Mar 2025 23:02:16 -0500 Subject: [PATCH] Include maintenance mode in node health graphs --- pvc-vue/src/App.vue | 10 ++++++++-- pvc-vue/src/components/NodeOverview.vue | 14 +++++++++++--- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/pvc-vue/src/App.vue b/pvc-vue/src/App.vue index 961dc63..0d699a8 100644 --- a/pvc-vue/src/App.vue +++ b/pvc-vue/src/App.vue @@ -169,7 +169,7 @@ const updateMetricsHistory = (timestamp, status) => { if (!metricsHistory.value.nodes[nodeName]) { metricsHistory.value.nodes[nodeName] = { - health: { labels: [], data: [] }, + health: { labels: [], data: [], maintenance: [] }, cpu: { labels: [], data: [] }, memory: { labels: [], data: [] }, allocated: { labels: [], data: [] } @@ -197,8 +197,14 @@ const updateMetricsHistory = (timestamp, status) => { metricsHistory.value.nodes[nodeName][metric] = { labels: nodeLabels, - data: nodeData + data: nodeData, + ...(metric === 'health' ? { maintenance: [...(metricsHistory.value.nodes[nodeName][metric].maintenance || []), isInMaintenance] } : {}) }; + + // Trim maintenance array if needed + if (metric === 'health' && metricsHistory.value.nodes[nodeName][metric].maintenance.length > 180) { + metricsHistory.value.nodes[nodeName][metric].maintenance.shift(); + } }); }); }; diff --git a/pvc-vue/src/components/NodeOverview.vue b/pvc-vue/src/components/NodeOverview.vue index e2c0f2d..8a70453 100644 --- a/pvc-vue/src/components/NodeOverview.vue +++ b/pvc-vue/src/components/NodeOverview.vue @@ -115,6 +115,7 @@ title="Node Health" :value="selectedNodeData.health || 0" :chart-data="nodeHealthChartData" + :maintenance="isMaintenanceMode" /> @@ -452,7 +453,12 @@ const formatMemory = (memoryMB) => { return Math.round(memoryMB / 1024) + ' GB'; }; -// Prepare chart data for the node +// Check if the cluster is in maintenance mode +const isMaintenanceMode = computed(() => { + return props.clusterData.maintenance === "true"; +}); + +// Update the nodeHealthChartData computed property to include maintenance data const nodeHealthChartData = computed(() => { // Get node metrics history if available const nodeMetrics = props.metricsData.nodes?.[selectedNodeData.value?.name]; @@ -460,14 +466,16 @@ const nodeHealthChartData = computed(() => { if (nodeMetrics && nodeMetrics.health && nodeMetrics.health.data.length > 0) { return { labels: nodeMetrics.health.labels, - data: nodeMetrics.health.data + data: nodeMetrics.health.data, + maintenance: nodeMetrics.health.maintenance || [] }; } // Fallback to current value only return { labels: ['Health'], - data: [selectedNodeData.value?.health || 0] + data: [selectedNodeData.value?.health || 0], + maintenance: [isMaintenanceMode.value] }; });