Repository: cloudstack Updated Branches: refs/heads/master 3f9e826d2 -> ce82ab605
listhost api needs to return host_details table Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/ce82ab60 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/ce82ab60 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/ce82ab60 Branch: refs/heads/master Commit: ce82ab605da12314eaa3f19f4e20b7545c24e394 Parents: 3f9e826 Author: Edison Su <sudi...@gmail.com> Authored: Thu Sep 4 17:42:43 2014 -0700 Committer: Edison Su <sudi...@gmail.com> Committed: Thu Sep 4 17:57:24 2014 -0700 ---------------------------------------------------------------------- .../cloudstack/api/response/HostResponse.java | 10 ++++++++++ .../com/cloud/api/query/dao/HostJoinDaoImpl.java | 19 +++++++++++++++++++ 2 files changed, 29 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ce82ab60/api/src/org/apache/cloudstack/api/response/HostResponse.java ---------------------------------------------------------------------- diff --git a/api/src/org/apache/cloudstack/api/response/HostResponse.java b/api/src/org/apache/cloudstack/api/response/HostResponse.java index d7638de..9cb0fcb 100644 --- a/api/src/org/apache/cloudstack/api/response/HostResponse.java +++ b/api/src/org/apache/cloudstack/api/response/HostResponse.java @@ -18,6 +18,7 @@ package org.apache.cloudstack.api.response; import java.util.Date; import java.util.List; +import java.util.Map; import com.google.gson.annotations.SerializedName; @@ -212,6 +213,10 @@ public class HostResponse extends BaseResponse { @Param(description = "true if the host is Ha host (dedicated to vms started by HA process; false otherwise") private Boolean haHost; + @SerializedName(ApiConstants.DETAILS) + @Param(description = "Host details in key/value pairs.", since = "4.5") + private Map details; + @Override public String getObjectId() { return this.getId(); @@ -416,4 +421,9 @@ public class HostResponse extends BaseResponse { public void setHaHost(Boolean haHost) { this.haHost = haHost; } + + public void setDetails(Map details) { + this.details = details; + } + } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ce82ab60/server/src/com/cloud/api/query/dao/HostJoinDaoImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/api/query/dao/HostJoinDaoImpl.java b/server/src/com/cloud/api/query/dao/HostJoinDaoImpl.java index 9a4b38e..dca4de1 100644 --- a/server/src/com/cloud/api/query/dao/HostJoinDaoImpl.java +++ b/server/src/com/cloud/api/query/dao/HostJoinDaoImpl.java @@ -22,6 +22,7 @@ import java.util.Date; import java.util.EnumSet; import java.util.Iterator; import java.util.List; +import java.util.Map; import java.util.Set; import javax.ejb.Local; @@ -43,6 +44,9 @@ import com.cloud.gpu.HostGpuGroupsVO; import com.cloud.gpu.VGPUTypesVO; import com.cloud.host.Host; import com.cloud.host.HostStats; +import com.cloud.host.HostVO; +import com.cloud.host.dao.HostDao; +import com.cloud.hypervisor.Hypervisor; import com.cloud.storage.StorageStats; import com.cloud.utils.db.GenericDaoBase; import com.cloud.utils.db.SearchBuilder; @@ -55,6 +59,8 @@ public class HostJoinDaoImpl extends GenericDaoBase<HostJoinVO, Long> implements @Inject private ConfigurationDao _configDao; + @Inject + private HostDao hostDao; private final SearchBuilder<HostJoinVO> hostSearch; @@ -182,6 +188,19 @@ public class HostJoinDaoImpl extends GenericDaoBase<HostJoinVO, Long> implements } } + if (details.contains(HostDetails.all) && host.getHypervisorType() == Hypervisor.HypervisorType.KVM) { + //only kvm has the requirement to return host details + try { + HostVO h = hostDao.findById(host.getId()); + hostDao.loadDetails(h); + Map<String, String> hostVoDetails; + hostVoDetails = h.getDetails(); + hostResponse.setDetails(hostVoDetails); + } catch (Exception e) { + s_logger.debug("failed to get host details", e); + } + } + } else if (host.getType() == Host.Type.SecondaryStorage) { StorageStats secStorageStats = ApiDBUtils.getSecondaryStorageStatistics(host.getId()); if (secStorageStats != null) {