From 43ac58dea6cfb11ee991b2b1fd4a5bcfaf9d8036 Mon Sep 17 00:00:00 2001 From: davidjumani Date: Mon, 27 Jan 2020 13:34:06 +0530 Subject: [PATCH 1/2] Fix listing management server by parameters --- .../admin/management/ListMgmtsCmd.java | 3 +- .../management/ManagementServerHost.java | 9 ++-- .../com/cloud/api/query/QueryManagerImpl.java | 45 ++++++++++++++----- 3 files changed, 39 insertions(+), 18 deletions(-) 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 1be49193580f..c01019e6e879 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.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 11e1cae9bf6f..0159fb2e7919 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 5515efebc15a..dc8e8bfc0bb9 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 @@ protected ResourceDetailResponse createResourceDetailsResponse(ResourceDetail re @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); - } - response.setResponses(result); + Pair, Integer> result = listManagementServersInternal(cmd); + List hostResponses = new ArrayList<>(); + + for(ManagementServerHostVO host : result.first()) { + ManagementServerResponse hostResponse = createManagementServerResponse(host); + hostResponses.add(hostResponse); + } + + 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<>(); From 5759eb25e8cba7afdd2b5ff16aef17ef0e8e400b Mon Sep 17 00:00:00 2001 From: davidjumani Date: Thu, 30 Jan 2020 10:18:54 +0530 Subject: [PATCH 2/2] Incorporating changes --- .../main/java/com/cloud/api/query/QueryManagerImpl.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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 dc8e8bfc0bb9..90285659790e 100644 --- a/server/src/main/java/com/cloud/api/query/QueryManagerImpl.java +++ b/server/src/main/java/com/cloud/api/query/QueryManagerImpl.java @@ -3835,10 +3835,10 @@ public ListResponse listManagementServers(ListMgmtsCmd Pair, Integer> result = listManagementServersInternal(cmd); List hostResponses = new ArrayList<>(); - for(ManagementServerHostVO host : result.first()) { + for (ManagementServerHostVO host : result.first()) { ManagementServerResponse hostResponse = createManagementServerResponse(host); hostResponses.add(hostResponse); - } + } response.setResponses(hostResponses); return response; @@ -3850,10 +3850,10 @@ protected Pair, Integer> listManagementServersInter SearchBuilder sb = managementServerHostDao.createSearchBuilder(); SearchCriteria sc = sb.create(); - if(id != null) { + if (id != null) { sc.addAnd("id", SearchCriteria.Op.EQ, id); } - if(name != null) { + if (name != null) { sc.addAnd("name", SearchCriteria.Op.EQ, name); } return managementServerHostDao.searchAndCount(sc, null);