CLOUDSTACK-2120: mixed zone management - (1) extend listVirtualMachines API to to take in zonetype. (2) UI: populate Instances list page with instances whose zonetype matches selected option in zone type dropdown on top menu.

This commit is contained in:
Jessica Wang 2013-04-24 10:35:47 -07:00
parent b7f5197c85
commit cdd459bb0b
4 changed files with 32 additions and 28 deletions

View File

@ -79,6 +79,9 @@ public class ListVMsCmd extends BaseListTaggedResourcesCmd {
description="the availability zone ID")
private Long zoneId;
@Parameter(name=ApiConstants.ZONE_TYPE, type=CommandType.STRING, description="the network type of the zone that the virtual machine belongs to")
private String zoneType;
@Parameter(name=ApiConstants.FOR_VIRTUAL_NETWORK, type=CommandType.BOOLEAN,
description="list by network type; true if need to list vms using Virtual Network, false otherwise")
private Boolean forVirtualNetwork;
@ -147,6 +150,10 @@ public class ListVMsCmd extends BaseListTaggedResourcesCmd {
return zoneId;
}
public String getZoneType() {
return zoneType;
}
public Boolean getForVirtualNetwork() {
return forVirtualNetwork;
}

View File

@ -632,6 +632,7 @@ public class QueryManagerImpl extends ManagerBase implements QueryService {
c.addCriteria(Criteria.NAME, cmd.getInstanceName());
c.addCriteria(Criteria.STATE, cmd.getState());
c.addCriteria(Criteria.DATACENTERID, cmd.getZoneId());
c.addCriteria(Criteria.DATACENTERTYPE, cmd.getZoneType());
c.addCriteria(Criteria.GROUPID, cmd.getGroupId());
c.addCriteria(Criteria.FOR_VIRTUAL_NETWORK, cmd.getForVirtualNetwork());
c.addCriteria(Criteria.NETWORKID, cmd.getNetworkId());
@ -680,7 +681,8 @@ public class QueryManagerImpl extends ManagerBase implements QueryService {
Object name = c.getCriteria(Criteria.NAME);
Object state = c.getCriteria(Criteria.STATE);
Object notState = c.getCriteria(Criteria.NOTSTATE);
Object zone = c.getCriteria(Criteria.DATACENTERID);
Object zoneId = c.getCriteria(Criteria.DATACENTERID);
Object zoneType = c.getCriteria(Criteria.DATACENTERTYPE);
Object pod = c.getCriteria(Criteria.PODID);
Object hostId = c.getCriteria(Criteria.HOSTID);
Object hostName = c.getCriteria(Criteria.HOSTNAME);
@ -703,6 +705,7 @@ public class QueryManagerImpl extends ManagerBase implements QueryService {
sb.and("stateNEQ", sb.entity().getState(), SearchCriteria.Op.NEQ);
sb.and("stateNIN", sb.entity().getState(), SearchCriteria.Op.NIN);
sb.and("dataCenterId", sb.entity().getDataCenterId(), SearchCriteria.Op.EQ);
sb.and("dataCenterType", sb.entity().getDataCenterType(), SearchCriteria.Op.EQ);
sb.and("podId", sb.entity().getPodId(), SearchCriteria.Op.EQ);
sb.and("hypervisorType", sb.entity().getHypervisorType(), SearchCriteria.Op.EQ);
sb.and("hostIdEQ", sb.entity().getHostId(), SearchCriteria.Op.EQ);
@ -809,13 +812,18 @@ public class QueryManagerImpl extends ManagerBase implements QueryService {
sc.setParameters("stateNIN", "Destroyed", "Expunging");
}
if (zone != null) {
sc.setParameters("dataCenterId", zone);
if (zoneId != null) {
sc.setParameters("dataCenterId", zoneId);
if (state == null) {
sc.setParameters("stateNEQ", "Destroyed");
}
}
if (zoneType != null) {
sc.setParameters("dataCenterType", zoneType);
}
if (pod != null) {
sc.setParameters("podId", pod);

View File

@ -32,6 +32,7 @@ public class Criteria {
public static final String NOTSTATE = "notState";
public static final String STATE = "state";
public static final String DATACENTERID = "dataCenterId";
public static final String DATACENTERTYPE = "dataCenterType";
public static final String DESCRIPTION = "description";
public static final String PODID = "podId";
public static final String CLUSTERID = "clusterId";

View File

@ -194,38 +194,26 @@
}
if("hosts" in args.context) {
$.extend(data, {
hostid: args.context.hosts[0].id
});
}
$.extend(data, {
hostid: args.context.hosts[0].id
});
}
if(args.context.zoneType != null && args.context.zoneType.length > 0) { //Basic type or Advanced type
$.extend(data, {
zonetype: args.context.zoneType
});
}
$.ajax({
url: createURL('listVirtualMachines'),
data: data,
success: function(json) {
var items = json.listvirtualmachinesresponse.virtualmachine;
// Code for hiding "Expunged VMs"
/* if(items != null) {
var i=0;
for( i=0;i< items.length;i++){
if(items[i].state == 'Expunging')
args.response.success ({
});
else {
var items = json.listvirtualmachinesresponse.virtualmachine;
args.response.success({
actionFilter: vmActionfilter,
data: items[i]
});
}
}
}
else {*/
args.response.success({
actionFilter: vmActionfilter,
data: items
});
});
}
});
},