This is an automated email from the ASF dual-hosted git repository.
rohit pushed a commit to branch 4.13
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/4.13 by this push:
new 7a25e40 api: allow listing management server by id and name (#3840)
7a25e40 is described below
commit 7a25e40d5a89b4885836b52f08f93ad762703f01
Author: davidjumani <[email protected]>
AuthorDate: Thu Jan 30 10:38:25 2020 +0530
api: allow listing management server by id and name (#3840)
The List Management Server api returns a list of all the management servers
but fails when trying to list by id or name. This ensures that it fetches the
details as per the parameters passed.
Fixes: #3833
---
.../api/command/admin/management/ListMgmtsCmd.java | 3 +-
.../management/ManagementServerHost.java | 9 ++---
.../java/com/cloud/api/query/QueryManagerImpl.java | 43 +++++++++++++++++-----
3 files changed, 38 insertions(+), 17 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 1be4919..c01019e 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 11e1cae..0159fb2 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 5515efe..9028565 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<ManagementServerResponse>
listManagementServers(ListMgmtsCmd cmd) {
ListResponse<ManagementServerResponse> response = new ListResponse<>();
- List<ManagementServerResponse> 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<List<ManagementServerHostVO>, Integer> result =
listManagementServersInternal(cmd);
+ List<ManagementServerResponse> 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<List<ManagementServerHostVO>, Integer>
listManagementServersInternal(ListMgmtsCmd cmd) {
+ Long id = cmd.getId();
+ String name = cmd.getHostName();
+
+ SearchBuilder<ManagementServerHostVO> sb =
managementServerHostDao.createSearchBuilder();
+ SearchCriteria<ManagementServerHostVO> 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<TemplateOVFPropertyResponse>
listTemplateOVFProperties(ListTemplateOVFProperties cmd) {
ListResponse<TemplateOVFPropertyResponse> response = new
ListResponse<>();