From 2333d97098612c55621670ed21051fc694fdd448 Mon Sep 17 00:00:00 2001 From: Rakesh Date: Wed, 14 Oct 2020 12:12:02 +0200 Subject: [PATCH] plugins: Consider maintenance mode as offline for promethues stats (#4366) If the resource state of hypervisor in "Maintenance" then it should be considered as offline even though the agent state is "Up". Since its in maintenance mode, it cant be used to allocate VM's and hence can't be considered towards resource allocation --- .../apache/cloudstack/metrics/PrometheusExporterImpl.java | 5 +++-- .../src/main/java/com/cloud/api/query/vo/HostJoinVO.java | 7 +++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/plugins/integrations/prometheus/src/main/java/org/apache/cloudstack/metrics/PrometheusExporterImpl.java b/plugins/integrations/prometheus/src/main/java/org/apache/cloudstack/metrics/PrometheusExporterImpl.java index 68be69f7df6..4b8f19c6608 100644 --- a/plugins/integrations/prometheus/src/main/java/org/apache/cloudstack/metrics/PrometheusExporterImpl.java +++ b/plugins/integrations/prometheus/src/main/java/org/apache/cloudstack/metrics/PrometheusExporterImpl.java @@ -117,9 +117,10 @@ public class PrometheusExporterImpl extends ManagerBase implements PrometheusExp continue; } total++; - if (host.getStatus() == Status.Up) { + if (host.getStatus() == Status.Up && !host.isInMaintenanceStates()) { up++; - } else if (host.getStatus() == Status.Disconnected || host.getStatus() == Status.Down) { + } else if (host.getStatus() == Status.Disconnected || host.getStatus() == Status.Down || + host.isInMaintenanceStates()) { down++; } diff --git a/server/src/main/java/com/cloud/api/query/vo/HostJoinVO.java b/server/src/main/java/com/cloud/api/query/vo/HostJoinVO.java index 2afe1910964..d7a3bfee132 100644 --- a/server/src/main/java/com/cloud/api/query/vo/HostJoinVO.java +++ b/server/src/main/java/com/cloud/api/query/vo/HostJoinVO.java @@ -16,6 +16,7 @@ // under the License. package com.cloud.api.query.vo; +import java.util.Arrays; import java.util.Date; import javax.persistence.Column; @@ -402,4 +403,10 @@ public class HostJoinVO extends BaseViewVO implements InternalIdentity, Identity public boolean isAnnotated() { return StringUtils.isNotBlank(annotation); } + + public boolean isInMaintenanceStates() { + return Arrays.asList( + ResourceState.Maintenance, ResourceState.ErrorInMaintenance, ResourceState.PrepareForMaintenance) + .contains(getResourceState()); + } }