From caf5fb841a4b08b398db5f8d282926cfdd0e5a5d Mon Sep 17 00:00:00 2001 From: abennatan Date: Tue, 2 Jun 2026 13:51:37 -0700 Subject: [PATCH] listHosts: add 'core' details --- .../apache/cloudstack/api/ApiConstants.java | 2 +- .../cloud/api/query/dao/HostJoinDaoImpl.java | 51 ++++++++++++++++++- 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/api/src/main/java/org/apache/cloudstack/api/ApiConstants.java b/api/src/main/java/org/apache/cloudstack/api/ApiConstants.java index 03b73834a94e..5fa9757204e8 100644 --- a/api/src/main/java/org/apache/cloudstack/api/ApiConstants.java +++ b/api/src/main/java/org/apache/cloudstack/api/ApiConstants.java @@ -1407,7 +1407,7 @@ public String toString() { } public enum HostDetails { - all, capacity, events, stats, min; + all, capacity, events, stats, min, core; } public enum VMDetails { diff --git a/server/src/main/java/com/cloud/api/query/dao/HostJoinDaoImpl.java b/server/src/main/java/com/cloud/api/query/dao/HostJoinDaoImpl.java index e7265a7e3b9a..f1b467b7896c 100644 --- a/server/src/main/java/com/cloud/api/query/dao/HostJoinDaoImpl.java +++ b/server/src/main/java/com/cloud/api/query/dao/HostJoinDaoImpl.java @@ -117,6 +117,51 @@ private boolean containsHostHATag(final String tags) { return result; } + private void setNewCoreHostResponse(HostJoinVO host, HostResponse hostResponse) { + hostResponse.setId(host.getUuid()); + hostResponse.setName(host.getName()); + hostResponse.setState(host.getStatus()); + hostResponse.setResourceState(host.getResourceState().toString()); + hostResponse.setDisconnectedOn(host.getDisconnectedOn()); + hostResponse.setHostType(host.getType()); + hostResponse.setIpAddress(host.getPrivateIpAddress()); + hostResponse.setVersion(host.getVersion()); + hostResponse.setCreated(host.getCreated()); + hostResponse.setRemoved(host.getRemoved()); + hostResponse.setLastPinged(new Date(host.getLastPinged())); + if (host.getHypervisorType() != null) { + hostResponse.setHypervisor(host.getHypervisorType().getHypervisorDisplayName()); + } + + hostResponse.setZoneId(host.getZoneUuid()); + hostResponse.setZoneName(host.getZoneName()); + hostResponse.setPodId(host.getPodUuid()); + hostResponse.setPodName(host.getPodName()); + if (host.getClusterId() > 0) { + hostResponse.setClusterId(host.getClusterUuid()); + hostResponse.setClusterName(host.getClusterName()); + if (host.getClusterType() != null) { + hostResponse.setClusterType(host.getClusterType().toString()); + } + } + + String hostTags = host.getTag(); + hostResponse.setHostTags(hostTags); + hostResponse.setExplicitHostTags(host.getExplicitTag()); + hostResponse.setImplicitHostTags(host.getImplicitTag()); + hostResponse.setStorageAccessGroups(host.getStorageAccessGroups()); + hostResponse.setClusterStorageAccessGroups(host.getClusterStorageAccessGroups()); + hostResponse.setPodStorageAccessGroups(host.getPodStorageAccessGroups()); + hostResponse.setZoneStorageAccessGroups(host.getZoneStorageAccessGroups()); + + // msid is returned as-is; callers resolve it to avoid a per-host lookup + if (host.getManagementServerId() != null) { + hostResponse.setManagementServerId(host.getManagementServerId().toString()); + } + + hostResponse.setObjectName("host"); + } + private void setNewHostResponseBase(HostJoinVO host, EnumSet details, HostResponse hostResponse) { hostResponse.setId(host.getUuid()); hostResponse.setCapabilities(host.getCapabilities()); @@ -334,7 +379,11 @@ public HostResponse newMinimalHostResponse(HostJoinVO host) { @Override public HostResponse newHostResponse(HostJoinVO host, EnumSet details) { HostResponse hostResponse = new HostResponse(); - setNewHostResponseBase(host, details, hostResponse); + if (details.contains(HostDetails.core)) { + setNewCoreHostResponse(host, hostResponse); + } else { + setNewHostResponseBase(host, details, hostResponse); + } return hostResponse; }