listVirtualMachines: implemented search by templateId/isoId

This commit is contained in:
Alena Prokharchyk 2012-08-02 15:20:38 -07:00
parent 66b006096d
commit b05e6ba959
4 changed files with 32 additions and 0 deletions

View File

@ -178,6 +178,7 @@ public class ApiConstants {
public static final String TARGET_IQN = "targetiqn";
public static final String TEMPLATE_FILTER = "templatefilter";
public static final String TEMPLATE_ID = "templateid";
public static final String ISO_ID = "isoid";
public static final String TIMEOUT = "timeout";
public static final String TIMEZONE = "timezone";
public static final String TYPE = "type";

View File

@ -84,6 +84,13 @@ public class ListVMsCmd extends BaseListTaggedResourcesCmd {
"value can be a list of [all, group, nics, stats, secgrp, tmpl, servoff, iso, volume, min]. If no parameter is passed in, the details will be defaulted to all" )
private List<String> viewDetails;
@IdentityMapper(entityTableName="vm_template")
@Parameter(name=ApiConstants.TEMPLATE_ID, type=CommandType.LONG, description="list vms by template")
private Long templateId;
@IdentityMapper(entityTableName="vm_template")
@Parameter(name=ApiConstants.ISO_ID, type=CommandType.LONG, description="list vms by iso")
private Long isoId;
/////////////////////////////////////////////////////
/////////////////// Accessors ///////////////////////
@ -137,6 +144,14 @@ public class ListVMsCmd extends BaseListTaggedResourcesCmd {
return storageId;
}
public Long getTemplateId() {
return templateId;
}
public Long getIsoId() {
return isoId;
}
public EnumSet<VMDetails> getDetails() throws InvalidParameterValueException {
EnumSet<VMDetails> dv;
if (viewDetails==null || viewDetails.size() <=0){

View File

@ -75,6 +75,8 @@ public class Criteria {
public static final String NETWORKID = "networkId";
public static final String HYPERVISOR = "hypervisor";
public static final String STORAGE_ID="storageid";
public static final String TEMPLATE_ID = "templateid";
public static final String ISO_ID = "isoid";
public Criteria(String orderBy, Boolean ascending, Long offset, Long limit) {
this.offset = offset;

View File

@ -2998,6 +2998,8 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager
c.addCriteria(Criteria.GROUPID, cmd.getGroupId());
c.addCriteria(Criteria.FOR_VIRTUAL_NETWORK, cmd.getForVirtualNetwork());
c.addCriteria(Criteria.NETWORKID, cmd.getNetworkId());
c.addCriteria(Criteria.TEMPLATE_ID, cmd.getTemplateId());
c.addCriteria(Criteria.ISO_ID, cmd.getIsoId());
if (domainId != null) {
c.addCriteria(Criteria.DOMAINID, domainId);
@ -3047,6 +3049,8 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager
Object networkId = c.getCriteria(Criteria.NETWORKID);
Object hypervisor = c.getCriteria(Criteria.HYPERVISOR);
Object storageId = c.getCriteria(Criteria.STORAGE_ID);
Object templateId = c.getCriteria(Criteria.TEMPLATE_ID);
Object isoId = c.getCriteria(Criteria.ISO_ID);
sb.and("displayName", sb.entity().getDisplayName(), SearchCriteria.Op.LIKE);
sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
@ -3059,6 +3063,8 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager
sb.and("hypervisorType", sb.entity().getHypervisorType(), SearchCriteria.Op.EQ);
sb.and("hostIdEQ", sb.entity().getHostId(), SearchCriteria.Op.EQ);
sb.and("hostIdIN", sb.entity().getHostId(), SearchCriteria.Op.IN);
sb.and("templateId", sb.entity().getTemplateId(), SearchCriteria.Op.EQ);
sb.and("isoId", sb.entity().getTemplateId(), SearchCriteria.Op.EQ);
if (groupId != null && (Long) groupId == -1) {
SearchBuilder<InstanceGroupVMMapVO> vmSearch = _groupVMMapDao.createSearchBuilder();
@ -3132,6 +3138,14 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager
if (id != null) {
sc.setParameters("id", id);
}
if (templateId != null) {
sc.setParameters("templateId", templateId);
}
if (isoId != null) {
sc.setParameters("isoId", isoId);
}
if (networkId != null) {
sc.setJoinParameters("nicSearch", "networkId", networkId);