diff --git a/api/src/com/cloud/network/vpc/VpcService.java b/api/src/com/cloud/network/vpc/VpcService.java index dd9cabc39eb..713844dca9c 100644 --- a/api/src/com/cloud/network/vpc/VpcService.java +++ b/api/src/com/cloud/network/vpc/VpcService.java @@ -97,7 +97,7 @@ public interface VpcService { * @param vpc * @return */ - public List listVpcs(Long id, String vpcName, String displayText, List supportedServicesStr, String cidr, Long vpcOffId, String state, + public Pair, Integer> listVpcs(Long id, String vpcName, String displayText, List supportedServicesStr, String cidr, Long vpcOffId, String state, String accountName, Long domainId, String keyword, Long startIndex, Long pageSizeVal, Long zoneId, Boolean isRecursive, Boolean listAll, Boolean restartRequired, Map tags, Long projectId, Boolean display); diff --git a/api/src/org/apache/cloudstack/api/command/admin/vpc/ListVPCsCmdByAdmin.java b/api/src/org/apache/cloudstack/api/command/admin/vpc/ListVPCsCmdByAdmin.java index 3a95e44df45..02f47a2dce6 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/vpc/ListVPCsCmdByAdmin.java +++ b/api/src/org/apache/cloudstack/api/command/admin/vpc/ListVPCsCmdByAdmin.java @@ -19,15 +19,15 @@ package org.apache.cloudstack.api.command.admin.vpc; import java.util.ArrayList; import java.util.List; -import org.apache.log4j.Logger; - import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ResponseObject.ResponseView; import org.apache.cloudstack.api.command.user.vpc.ListVPCsCmd; import org.apache.cloudstack.api.response.ListResponse; import org.apache.cloudstack.api.response.VpcResponse; +import org.apache.log4j.Logger; import com.cloud.network.vpc.Vpc; +import com.cloud.utils.Pair; @APICommand(name = "listVPCs", description = "Lists VPCs", responseObject = VpcResponse.class, responseView = ResponseView.Full) @@ -36,18 +36,18 @@ public class ListVPCsCmdByAdmin extends ListVPCsCmd { @Override public void execute() { - List vpcs = + Pair, Integer> vpcs = _vpcService.listVpcs(getId(), getVpcName(), getDisplayText(), getSupportedServices(), getCidr(), getVpcOffId(), getState(), getAccountName(), getDomainId(), getKeyword(), getStartIndex(), getPageSizeVal(), getZoneId(), isRecursive(), listAll(), getRestartRequired(), getTags(), getProjectId(), getDisplay()); ListResponse response = new ListResponse(); - List offeringResponses = new ArrayList(); - for (Vpc vpc : vpcs) { + List vpcResponses = new ArrayList(); + for (Vpc vpc : vpcs.first()) { VpcResponse offeringResponse = _responseGenerator.createVpcResponse(ResponseView.Full, vpc); - offeringResponses.add(offeringResponse); + vpcResponses.add(offeringResponse); } - response.setResponses(offeringResponses); + response.setResponses(vpcResponses, vpcs.second()); response.setResponseName(getCommandName()); setResponseObject(response); } diff --git a/api/src/org/apache/cloudstack/api/command/user/vpc/ListVPCsCmd.java b/api/src/org/apache/cloudstack/api/command/user/vpc/ListVPCsCmd.java index 9079dff11da..9531b81f259 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vpc/ListVPCsCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vpc/ListVPCsCmd.java @@ -19,8 +19,6 @@ package org.apache.cloudstack.api.command.user.vpc; import java.util.ArrayList; import java.util.List; -import org.apache.log4j.Logger; - import org.apache.cloudstack.acl.RoleType; import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiConstants; @@ -31,8 +29,10 @@ import org.apache.cloudstack.api.response.ListResponse; import org.apache.cloudstack.api.response.VpcOfferingResponse; import org.apache.cloudstack.api.response.VpcResponse; import org.apache.cloudstack.api.response.ZoneResponse; +import org.apache.log4j.Logger; import com.cloud.network.vpc.Vpc; +import com.cloud.utils.Pair; @APICommand(name = "listVPCs", description = "Lists VPCs", responseObject = VpcResponse.class, responseView = ResponseView.Restricted, entityType = {Vpc.class}, @@ -129,18 +129,18 @@ public class ListVPCsCmd extends BaseListTaggedResourcesCmd { @Override public void execute() { - List vpcs = + Pair, Integer> vpcs = _vpcService.listVpcs(getId(), getVpcName(), getDisplayText(), getSupportedServices(), getCidr(), getVpcOffId(), getState(), getAccountName(), getDomainId(), getKeyword(), getStartIndex(), getPageSizeVal(), getZoneId(), isRecursive(), listAll(), getRestartRequired(), getTags(), getProjectId(), getDisplay()); ListResponse response = new ListResponse(); - List offeringResponses = new ArrayList(); - for (Vpc vpc : vpcs) { + List vpcResponses = new ArrayList(); + for (Vpc vpc : vpcs.first()) { VpcResponse offeringResponse = _responseGenerator.createVpcResponse(ResponseView.Restricted, vpc); - offeringResponses.add(offeringResponse); + vpcResponses.add(offeringResponse); } - response.setResponses(offeringResponses); + response.setResponses(vpcResponses, vpcs.second()); response.setResponseName(getCommandName()); setResponseObject(response); } diff --git a/server/src/com/cloud/network/vpc/VpcManagerImpl.java b/server/src/com/cloud/network/vpc/VpcManagerImpl.java index 5aa4721e8a8..5a90233b34b 100644 --- a/server/src/com/cloud/network/vpc/VpcManagerImpl.java +++ b/server/src/com/cloud/network/vpc/VpcManagerImpl.java @@ -1003,7 +1003,7 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis } @Override - public List listVpcs(Long id, String vpcName, String displayText, List supportedServicesStr, String cidr, Long vpcOffId, String state, + public Pair, Integer> listVpcs(Long id, String vpcName, String displayText, List supportedServicesStr, String cidr, Long vpcOffId, String state, String accountName, Long domainId, String keyword, Long startIndex, Long pageSizeVal, Long zoneId, Boolean isRecursive, Boolean listAll, Boolean restartRequired, Map tags, Long projectId, Boolean display) { Account caller = CallContext.current().getCallingAccount(); @@ -1015,7 +1015,7 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis domainId = domainIdRecursiveListProject.first(); isRecursive = domainIdRecursiveListProject.second(); ListProjectResourcesCriteria listProjectResourcesCriteria = domainIdRecursiveListProject.third(); - Filter searchFilter = new Filter(VpcVO.class, "created", false, startIndex, pageSizeVal); + Filter searchFilter = new Filter(VpcVO.class, "created", false, null, null); SearchBuilder sb = _vpcDao.createSearchBuilder(); _accountMgr.buildACLSearchBuilder(sb, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria); @@ -1128,9 +1128,21 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis } } - return supportedVpcs; + List wPagination = StringUtils.applyPagination(supportedVpcs, startIndex, pageSizeVal); + if (wPagination != null) { + @SuppressWarnings("unchecked") + Pair, Integer> listWPagination = new Pair, Integer>((List) wPagination, supportedVpcs.size()); + return listWPagination; + } + return new Pair, Integer>(supportedVpcs, supportedVpcs.size()); } else { - return vpcs; + List wPagination = StringUtils.applyPagination(vpcs, startIndex, pageSizeVal); + if (wPagination != null) { + @SuppressWarnings("unchecked") + Pair, Integer> listWPagination = new Pair, Integer>((List) wPagination, vpcs.size()); + return listWPagination; + } + return new Pair, Integer>(vpcs, vpcs.size()); } }