mirror of https://github.com/apache/cloudstack.git
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
This commit is contained in:
parent
1c130a5dd4
commit
7a25e40d5a
|
|
@ -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")
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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<>();
|
||||
|
|
|
|||
Loading…
Reference in New Issue