Skip to content

Commit f50cc27

Browse files
server: fix list public ip returns duplicated records (apache#5464)
* server: fix list public ip returns duplicated records * update apache#5464: fix shared network
1 parent f2315ec commit f50cc27

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

server/src/main/java/com/cloud/server/ManagementServerImpl.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2128,7 +2128,7 @@ public Pair<List<? extends IpAddress>, Integer> searchForIPAddresses(final ListP
21282128
_accountMgr.buildACLSearchBuilder(sb, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria);
21292129
}
21302130

2131-
buildParameters(sb, cmd);
2131+
buildParameters(sb, cmd, vlanType == VlanType.VirtualNetwork ? true : isAllocated);
21322132

21332133
SearchCriteria<IPAddressVO> sc = sb.create();
21342134
setParameters(sc, cmd, vlanType);
@@ -2190,26 +2190,26 @@ public Pair<List<? extends IpAddress>, Integer> searchForIPAddresses(final ListP
21902190
}
21912191
if (freeAddrIds.size() > 0) {
21922192
final SearchBuilder<IPAddressVO> sb2 = _publicIpAddressDao.createSearchBuilder();
2193-
buildParameters(sb2, cmd);
2193+
buildParameters(sb2, cmd, false);
21942194
sb2.and("ids", sb2.entity().getId(), SearchCriteria.Op.IN);
21952195

21962196
SearchCriteria<IPAddressVO> sc2 = sb2.create();
21972197
setParameters(sc2, cmd, vlanType);
21982198
sc2.setParameters("ids", freeAddrIds.toArray());
21992199
addrs.addAll(_publicIpAddressDao.search(sc2, searchFilter)); // Allocated + Free
22002200
}
2201+
Collections.sort(addrs, Comparator.comparing(IPAddressVO::getAddress));
22012202
List<? extends IpAddress> wPagination = com.cloud.utils.StringUtils.applyPagination(addrs, cmd.getStartIndex(), cmd.getPageSizeVal());
22022203
if (wPagination != null) {
22032204
return new Pair<List<? extends IpAddress>, Integer>(wPagination, addrs.size());
22042205
}
22052206
return new Pair<>(addrs, addrs.size());
22062207
}
22072208

2208-
private void buildParameters(final SearchBuilder<IPAddressVO> sb, final ListPublicIpAddressesCmd cmd) {
2209+
private void buildParameters(final SearchBuilder<IPAddressVO> sb, final ListPublicIpAddressesCmd cmd, final Boolean isAllocated) {
22092210
final Object keyword = cmd.getKeyword();
22102211
final String address = cmd.getIpAddress();
22112212
final Boolean forLoadBalancing = cmd.isForLoadBalancing();
2212-
Boolean isAllocated = cmd.isAllocatedOnly();
22132213
final Map<String, String> tags = cmd.getTags();
22142214

22152215
sb.and("dataCenterId", sb.entity().getDataCenterId(), SearchCriteria.Op.EQ);

0 commit comments

Comments
 (0)