mirror of
https://github.com/apache/cloudstack.git
synced 2025-11-02 20:02:29 +01:00
CLOUDSTACK-88 Cannot listVM by vpcId which is required by VPC UI
This commit is contained in:
parent
25e99e9c4d
commit
55bcfaf805
@ -96,6 +96,9 @@ public class ListVMsCmd extends BaseListTaggedResourcesCmd {
|
||||
@Parameter(name=ApiConstants.ISO_ID, type=CommandType.LONG, description="list vms by iso")
|
||||
private Long isoId;
|
||||
|
||||
@IdentityMapper(entityTableName="vpc")
|
||||
@Parameter(name=ApiConstants.VPC_ID, type=CommandType.LONG, description="list vms by vpc")
|
||||
private Long vpcId;
|
||||
/////////////////////////////////////////////////////
|
||||
/////////////////// Accessors ///////////////////////
|
||||
/////////////////////////////////////////////////////
|
||||
@ -156,6 +159,10 @@ public class ListVMsCmd extends BaseListTaggedResourcesCmd {
|
||||
return isoId;
|
||||
}
|
||||
|
||||
public Long getVpcId(){
|
||||
return vpcId;
|
||||
}
|
||||
|
||||
public EnumSet<VMDetails> getDetails() throws InvalidParameterValueException {
|
||||
EnumSet<VMDetails> dv;
|
||||
if (viewDetails==null || viewDetails.size() <=0){
|
||||
|
||||
@ -81,6 +81,7 @@ public class Criteria {
|
||||
public static final String STORAGE_ID="storageid";
|
||||
public static final String TEMPLATE_ID = "templateid";
|
||||
public static final String ISO_ID = "isoid";
|
||||
public static final String VPC_ID = "vpcId";
|
||||
|
||||
public Criteria(String orderBy, Boolean ascending, Long offset, Long limit) {
|
||||
this.offset = offset;
|
||||
|
||||
@ -141,6 +141,8 @@ import com.cloud.network.security.SecurityGroupManager;
|
||||
import com.cloud.network.security.dao.SecurityGroupDao;
|
||||
import com.cloud.network.security.dao.SecurityGroupVMMapDao;
|
||||
import com.cloud.network.vpc.VpcManager;
|
||||
import com.cloud.network.vpc.VpcVO;
|
||||
import com.cloud.network.vpc.dao.VpcDao;
|
||||
import com.cloud.offering.NetworkOffering;
|
||||
import com.cloud.offering.NetworkOffering.Availability;
|
||||
import com.cloud.offering.ServiceOffering;
|
||||
@ -319,6 +321,8 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager
|
||||
@Inject
|
||||
protected NicDao _nicDao;
|
||||
@Inject
|
||||
protected VpcDao _vpcDao;
|
||||
@Inject
|
||||
protected RulesManager _rulesMgr;
|
||||
@Inject
|
||||
protected LoadBalancingRulesManager _lbMgr;
|
||||
@ -3012,6 +3016,7 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager
|
||||
c.addCriteria(Criteria.NETWORKID, cmd.getNetworkId());
|
||||
c.addCriteria(Criteria.TEMPLATE_ID, cmd.getTemplateId());
|
||||
c.addCriteria(Criteria.ISO_ID, cmd.getIsoId());
|
||||
c.addCriteria(Criteria.VPC_ID, cmd.getVpcId());
|
||||
|
||||
if (domainId != null) {
|
||||
c.addCriteria(Criteria.DOMAINID, domainId);
|
||||
@ -3063,6 +3068,7 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager
|
||||
Object storageId = c.getCriteria(Criteria.STORAGE_ID);
|
||||
Object templateId = c.getCriteria(Criteria.TEMPLATE_ID);
|
||||
Object isoId = c.getCriteria(Criteria.ISO_ID);
|
||||
Object vpcId = c.getCriteria(Criteria.VPC_ID);
|
||||
|
||||
sb.and("displayName", sb.entity().getDisplayName(), SearchCriteria.Op.LIKE);
|
||||
sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
|
||||
@ -3110,6 +3116,19 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager
|
||||
|
||||
sb.join("nicSearch", nicSearch, sb.entity().getId(), nicSearch.entity().getInstanceId(), JoinBuilder.JoinType.INNER);
|
||||
}
|
||||
|
||||
if(vpcId != null && networkId == null){
|
||||
SearchBuilder<NicVO> nicSearch = _nicDao.createSearchBuilder();
|
||||
|
||||
SearchBuilder<NetworkVO> networkSearch = _networkDao.createSearchBuilder();
|
||||
nicSearch.join("networkSearch", networkSearch, nicSearch.entity().getNetworkId(), networkSearch.entity().getId(), JoinBuilder.JoinType.INNER);
|
||||
|
||||
SearchBuilder<VpcVO> vpcSearch = _vpcDao.createSearchBuilder();
|
||||
vpcSearch.and("vpcId", vpcSearch.entity().getId(), SearchCriteria.Op.EQ);
|
||||
networkSearch.join("vpcSearch", vpcSearch, networkSearch.entity().getVpcId(), vpcSearch.entity().getId(), JoinBuilder.JoinType.INNER);
|
||||
|
||||
sb.join("nicSearch", nicSearch, sb.entity().getId(), nicSearch.entity().getInstanceId(), JoinBuilder.JoinType.INNER);
|
||||
}
|
||||
|
||||
if (storageId != null) {
|
||||
SearchBuilder<VolumeVO> volumeSearch = _volsDao.createSearchBuilder();
|
||||
@ -3162,6 +3181,10 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager
|
||||
if (networkId != null) {
|
||||
sc.setJoinParameters("nicSearch", "networkId", networkId);
|
||||
}
|
||||
|
||||
if(vpcId != null && networkId == null){
|
||||
sc.setJoinParameters("vpcSearch", "vpcId", vpcId);
|
||||
}
|
||||
|
||||
if (name != null) {
|
||||
sc.setParameters("name", "%" + name + "%");
|
||||
|
||||
@ -223,9 +223,10 @@ public class SearchCriteria<K> {
|
||||
return jb;
|
||||
}
|
||||
|
||||
for (JoinBuilder<SearchCriteria<?>> j2 : _joins.values()) {
|
||||
for (JoinBuilder<SearchCriteria<?>> j2 : jbmap.values()) {
|
||||
SearchCriteria<?> sc = j2.getT();
|
||||
jb = findJoin(sc._joins, joinName);
|
||||
if(sc._joins != null)
|
||||
jb = findJoin(sc._joins, joinName);
|
||||
if (jb != null) {
|
||||
return jb;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user