From 9083a677ae132c5ce4da2f73b4f04ec2356b33b5 Mon Sep 17 00:00:00 2001 From: sato03 Date: Sun, 20 Aug 2023 10:41:07 -0300 Subject: [PATCH] systeminstances field (#7871) Co-authored-by: Henrique Sato --- .../cloudstack/metrics/MetricsServiceImpl.java | 12 ++++++++++-- .../cloudstack/response/HostMetricsResponse.java | 14 ++++++++++---- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/plugins/metrics/src/main/java/org/apache/cloudstack/metrics/MetricsServiceImpl.java b/plugins/metrics/src/main/java/org/apache/cloudstack/metrics/MetricsServiceImpl.java index 979e4aacbe7..a27896aa58d 100644 --- a/plugins/metrics/src/main/java/org/apache/cloudstack/metrics/MetricsServiceImpl.java +++ b/plugins/metrics/src/main/java/org/apache/cloudstack/metrics/MetricsServiceImpl.java @@ -682,8 +682,10 @@ public class MetricsServiceImpl extends MutualExclusiveIdsManagerBase implements final Float cpuDisableThreshold = DeploymentClusterPlanner.ClusterCPUCapacityDisableThreshold.valueIn(clusterId); final Float memoryDisableThreshold = DeploymentClusterPlanner.ClusterMemoryCapacityDisableThreshold.valueIn(clusterId); - Long upInstances = 0L; - Long totalInstances = 0L; + long upInstances = 0L; + long totalInstances = 0L; + long upSystemInstances = 0L; + long totalSystemInstances = 0L; for (final VMInstanceVO instance: vmInstanceDao.listByHostId(hostId)) { if (instance == null) { continue; @@ -693,10 +695,16 @@ public class MetricsServiceImpl extends MutualExclusiveIdsManagerBase implements if (instance.getState() == VirtualMachine.State.Running) { upInstances++; } + } else if (instance.getType().isUsedBySystem()) { + totalSystemInstances++; + if (instance.getState() == VirtualMachine.State.Running) { + upSystemInstances++; + } } } metricsResponse.setPowerState(hostResponse.getOutOfBandManagementResponse().getPowerState()); metricsResponse.setInstances(upInstances, totalInstances); + metricsResponse.setSystemInstances(upSystemInstances, totalSystemInstances); metricsResponse.setCpuTotal(hostResponse.getCpuNumber(), hostResponse.getCpuSpeed()); metricsResponse.setCpuUsed(hostResponse.getCpuUsed(), hostResponse.getCpuNumber(), hostResponse.getCpuSpeed()); metricsResponse.setCpuAllocated(hostResponse.getCpuAllocated(), hostResponse.getCpuNumber(), hostResponse.getCpuSpeed()); diff --git a/plugins/metrics/src/main/java/org/apache/cloudstack/response/HostMetricsResponse.java b/plugins/metrics/src/main/java/org/apache/cloudstack/response/HostMetricsResponse.java index 30f7e06ce58..8e12d2cbb6d 100644 --- a/plugins/metrics/src/main/java/org/apache/cloudstack/response/HostMetricsResponse.java +++ b/plugins/metrics/src/main/java/org/apache/cloudstack/response/HostMetricsResponse.java @@ -36,6 +36,10 @@ public class HostMetricsResponse extends HostResponse { @Param(description = "instances on the host") private String instances; + @SerializedName("systeminstances") + @Param(description = "system vm instances on the host") + private String systemInstances; + @SerializedName("cputotalghz") @Param(description = "the total cpu capacity in Ghz") private String cpuTotal; @@ -108,10 +112,12 @@ public class HostMetricsResponse extends HostResponse { this.powerState = powerState; } - public void setInstances(final Long running, final Long total) { - if (running != null && total != null) { - this.instances = String.format("%d / %d", running, total); - } + public void setSystemInstances(final long running, final long total) { + this.systemInstances = String.format("%d / %d", running, total); + } + + public void setInstances(final long running, final long total) { + this.instances = String.format("%d / %d", running, total); } public void setCpuTotal(final Integer cpuNumber, final Long cpuSpeed) {