Skip to content

Commit fa74b3a

Browse files
author
Alena Prokharchyk
committed
CS-19072: fixed broken pagination and count in listVpcOfferings
1 parent 8b98cc2 commit fa74b3a

3 files changed

Lines changed: 25 additions & 10 deletions

File tree

api/src/com/cloud/network/vpc/VpcProvisioningService.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
import java.util.List;
2121
import java.util.Map;
2222

23+
import com.cloud.utils.Pair;
24+
2325
public interface VpcProvisioningService {
2426

2527
public VpcOffering getVpcOffering(long vpcOfferingId);
@@ -29,7 +31,7 @@ public VpcOffering createVpcOffering(String name, String displayText, List<Strin
2931
Map serviceCapabilitystList,
3032
Long serviceOfferingId);
3133

32-
List<? extends VpcOffering> listVpcOfferings(Long id, String name, String displayText, List<String> supportedServicesStr, Boolean isDefault, String keyword,
34+
Pair<List<? extends VpcOffering>,Integer> listVpcOfferings(Long id, String name, String displayText, List<String> supportedServicesStr, Boolean isDefault, String keyword,
3335
String state, Long startIndex, Long pageSizeVal);
3436

3537
/**

api/src/org/apache/cloudstack/api/command/user/vpc/ListVPCOfferingsCmd.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,16 @@
1919
import java.util.ArrayList;
2020
import java.util.List;
2121

22-
import org.apache.log4j.Logger;
23-
2422
import org.apache.cloudstack.api.APICommand;
2523
import org.apache.cloudstack.api.ApiConstants;
2624
import org.apache.cloudstack.api.BaseListCmd;
2725
import org.apache.cloudstack.api.Parameter;
2826
import org.apache.cloudstack.api.response.ListResponse;
2927
import org.apache.cloudstack.api.response.VpcOfferingResponse;
28+
import org.apache.log4j.Logger;
3029

3130
import com.cloud.network.vpc.VpcOffering;
31+
import com.cloud.utils.Pair;
3232

3333
@APICommand(name = "listVPCOfferings", description = "Lists VPC offerings", responseObject = VpcOfferingResponse.class,
3434
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
@@ -93,17 +93,17 @@ public String getState() {
9393

9494
@Override
9595
public void execute() {
96-
List<? extends VpcOffering> offerings =
96+
Pair<List<? extends VpcOffering>, Integer> offerings =
9797
_vpcProvSvc.listVpcOfferings(getId(), getVpcOffName(), getDisplayText(), getSupportedServices(), isDefault, this.getKeyword(), getState(),
9898
this.getStartIndex(), this.getPageSizeVal());
9999
ListResponse<VpcOfferingResponse> response = new ListResponse<VpcOfferingResponse>();
100100
List<VpcOfferingResponse> offeringResponses = new ArrayList<VpcOfferingResponse>();
101-
for (VpcOffering offering : offerings) {
101+
for (VpcOffering offering : offerings.first()) {
102102
VpcOfferingResponse offeringResponse = _responseGenerator.createVpcOfferingResponse(offering);
103103
offeringResponses.add(offeringResponse);
104104
}
105105

106-
response.setResponses(offeringResponses);
106+
response.setResponses(offeringResponses, offerings.second());
107107
response.setResponseName(getCommandName());
108108
this.setResponseObject(response);
109109
}

server/src/com/cloud/network/vpc/VpcManagerImpl.java

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@
113113
import com.cloud.user.User;
114114
import com.cloud.utils.NumbersUtil;
115115
import com.cloud.utils.Pair;
116+
import com.cloud.utils.StringUtils;
116117
import com.cloud.utils.Ternary;
117118
import com.cloud.utils.component.ManagerBase;
118119
import com.cloud.utils.concurrency.NamedThreadFactory;
@@ -608,9 +609,9 @@ public Map<Service, Set<Provider>> getVpcOffSvcProvidersMap(long vpcOffId) {
608609
}
609610

610611
@Override
611-
public List<? extends VpcOffering> listVpcOfferings(Long id, String name, String displayText, List<String> supportedServicesStr, Boolean isDefault, String keyword,
612+
public Pair<List<? extends VpcOffering>,Integer> listVpcOfferings(Long id, String name, String displayText, List<String> supportedServicesStr, Boolean isDefault, String keyword,
612613
String state, Long startIndex, Long pageSizeVal) {
613-
Filter searchFilter = new Filter(VpcOfferingVO.class, "created", false, startIndex, pageSizeVal);
614+
Filter searchFilter = new Filter(VpcOfferingVO.class, "created", false, null, null);
614615
SearchCriteria<VpcOfferingVO> sc = _vpcOffDao.createSearchCriteria();
615616

616617
if (keyword != null) {
@@ -670,9 +671,21 @@ public List<? extends VpcOffering> listVpcOfferings(Long id, String name, String
670671
}
671672
}
672673

673-
return supportedOfferings;
674+
List<?> wPagination = StringUtils.applyPagination(supportedOfferings, startIndex, pageSizeVal);
675+
if (wPagination != null) {
676+
@SuppressWarnings("unchecked")
677+
Pair<List<? extends VpcOffering>, Integer> listWPagination = new Pair<List<? extends VpcOffering>, Integer>((List<VpcOffering>) wPagination, supportedOfferings.size());
678+
return listWPagination;
679+
}
680+
return new Pair<List<? extends VpcOffering>, Integer>(supportedOfferings, supportedOfferings.size());
674681
} else {
675-
return offerings;
682+
List<?> wPagination = StringUtils.applyPagination(offerings, startIndex, pageSizeVal);
683+
if (wPagination != null) {
684+
@SuppressWarnings("unchecked")
685+
Pair<List<? extends VpcOffering>, Integer> listWPagination = new Pair<List<? extends VpcOffering>, Integer>((List<VpcOffering>) wPagination, offerings.size());
686+
return listWPagination;
687+
}
688+
return new Pair<List<? extends VpcOffering>, Integer>(offerings, offerings.size());
676689
}
677690
}
678691

0 commit comments

Comments
 (0)