diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/management/ListMgmtsCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/management/ListMgmtsCmd.java index 1be49193580..c01019e6e87 100644 --- a/api/src/main/java/org/apache/cloudstack/api/command/admin/management/ListMgmtsCmd.java +++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/management/ListMgmtsCmd.java @@ -22,7 +22,6 @@ import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.BaseCmd; import org.apache.cloudstack.api.BaseListCmd; import org.apache.cloudstack.api.Parameter; -import org.apache.cloudstack.api.response.HostResponse; import org.apache.cloudstack.api.response.ListResponse; import org.apache.cloudstack.api.response.ManagementServerResponse; import org.apache.log4j.Logger; @@ -38,7 +37,7 @@ public class ListMgmtsCmd extends BaseListCmd { //////////////// API parameters ///////////////////// ///////////////////////////////////////////////////// - @Parameter(name = ApiConstants.ID, type = CommandType.UUID, entityType = HostResponse.class, description = "the id of the management server") + @Parameter(name = ApiConstants.ID, type = CommandType.UUID, entityType = ManagementServerResponse.class, description = "the id of the management server") private Long id; @Parameter(name = ApiConstants.NAME, type = CommandType.STRING, description = "the name of the management server") diff --git a/api/src/main/java/org/apache/cloudstack/management/ManagementServerHost.java b/api/src/main/java/org/apache/cloudstack/management/ManagementServerHost.java index 11e1cae9bf6..0159fb2e791 100644 --- a/api/src/main/java/org/apache/cloudstack/management/ManagementServerHost.java +++ b/api/src/main/java/org/apache/cloudstack/management/ManagementServerHost.java @@ -16,15 +16,14 @@ // under the License. package org.apache.cloudstack.management; -public interface ManagementServerHost { +import org.apache.cloudstack.api.Identity; +import org.apache.cloudstack.api.InternalIdentity; + +public interface ManagementServerHost extends InternalIdentity, Identity { enum State { Up, Down } - long getId(); - - String getUuid(); - long getMsid(); State getState(); diff --git a/server/src/main/java/com/cloud/api/query/QueryManagerImpl.java b/server/src/main/java/com/cloud/api/query/QueryManagerImpl.java index 5515efebc15..90285659790 100644 --- a/server/src/main/java/com/cloud/api/query/QueryManagerImpl.java +++ b/server/src/main/java/com/cloud/api/query/QueryManagerImpl.java @@ -3832,20 +3832,43 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q @Override public ListResponse listManagementServers(ListMgmtsCmd cmd) { ListResponse response = new ListResponse<>(); - List result = new ArrayList<>(); - for (ManagementServerHostVO mgmt : managementServerHostDao.listAll()) { - ManagementServerResponse mgmtResponse = new ManagementServerResponse(); - mgmtResponse.setId(mgmt.getUuid()); - mgmtResponse.setName(mgmt.getName()); - mgmtResponse.setState(mgmt.getState()); - mgmtResponse.setVersion(mgmt.getVersion()); - mgmtResponse.setObjectName("managementserver"); - result.add(mgmtResponse); + Pair, Integer> result = listManagementServersInternal(cmd); + List hostResponses = new ArrayList<>(); + + for (ManagementServerHostVO host : result.first()) { + ManagementServerResponse hostResponse = createManagementServerResponse(host); + hostResponses.add(hostResponse); } - response.setResponses(result); + + response.setResponses(hostResponses); return response; } + protected Pair, Integer> listManagementServersInternal(ListMgmtsCmd cmd) { + Long id = cmd.getId(); + String name = cmd.getHostName(); + + SearchBuilder sb = managementServerHostDao.createSearchBuilder(); + SearchCriteria sc = sb.create(); + if (id != null) { + sc.addAnd("id", SearchCriteria.Op.EQ, id); + } + if (name != null) { + sc.addAnd("name", SearchCriteria.Op.EQ, name); + } + return managementServerHostDao.searchAndCount(sc, null); + } + + protected ManagementServerResponse createManagementServerResponse(ManagementServerHostVO mgmt) { + ManagementServerResponse mgmtResponse = new ManagementServerResponse(); + mgmtResponse.setId(mgmt.getUuid()); + mgmtResponse.setName(mgmt.getName()); + mgmtResponse.setState(mgmt.getState()); + mgmtResponse.setVersion(mgmt.getVersion()); + mgmtResponse.setObjectName("managementserver"); + return mgmtResponse; + } + @Override public ListResponse listTemplateOVFProperties(ListTemplateOVFProperties cmd) { ListResponse response = new ListResponse<>();