diff --git a/server/src/main/java/com/cloud/server/ManagementServerImpl.java b/server/src/main/java/com/cloud/server/ManagementServerImpl.java index 93c1e9bf78c..2c52b673452 100644 --- a/server/src/main/java/com/cloud/server/ManagementServerImpl.java +++ b/server/src/main/java/com/cloud/server/ManagementServerImpl.java @@ -2128,7 +2128,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe _accountMgr.buildACLSearchBuilder(sb, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria); } - buildParameters(sb, cmd); + buildParameters(sb, cmd, vlanType == VlanType.VirtualNetwork ? true : isAllocated); SearchCriteria sc = sb.create(); setParameters(sc, cmd, vlanType); @@ -2190,7 +2190,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe } if (freeAddrIds.size() > 0) { final SearchBuilder sb2 = _publicIpAddressDao.createSearchBuilder(); - buildParameters(sb2, cmd); + buildParameters(sb2, cmd, false); sb2.and("ids", sb2.entity().getId(), SearchCriteria.Op.IN); SearchCriteria sc2 = sb2.create(); @@ -2198,6 +2198,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe sc2.setParameters("ids", freeAddrIds.toArray()); addrs.addAll(_publicIpAddressDao.search(sc2, searchFilter)); // Allocated + Free } + Collections.sort(addrs, Comparator.comparing(IPAddressVO::getAddress)); List wPagination = com.cloud.utils.StringUtils.applyPagination(addrs, cmd.getStartIndex(), cmd.getPageSizeVal()); if (wPagination != null) { return new Pair, Integer>(wPagination, addrs.size()); @@ -2205,11 +2206,10 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe return new Pair<>(addrs, addrs.size()); } - private void buildParameters(final SearchBuilder sb, final ListPublicIpAddressesCmd cmd) { + private void buildParameters(final SearchBuilder sb, final ListPublicIpAddressesCmd cmd, final Boolean isAllocated) { final Object keyword = cmd.getKeyword(); final String address = cmd.getIpAddress(); final Boolean forLoadBalancing = cmd.isForLoadBalancing(); - Boolean isAllocated = cmd.isAllocatedOnly(); final Map tags = cmd.getTags(); sb.and("dataCenterId", sb.entity().getDataCenterId(), SearchCriteria.Op.EQ);