diff --git a/server/src/main/java/com/cloud/server/ManagementServerImpl.java b/server/src/main/java/com/cloud/server/ManagementServerImpl.java index 49f45d9e3ff..075b338f1bb 100644 --- a/server/src/main/java/com/cloud/server/ManagementServerImpl.java +++ b/server/src/main/java/com/cloud/server/ManagementServerImpl.java @@ -2174,7 +2174,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); @@ -2236,7 +2236,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(); @@ -2244,6 +2244,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()); @@ -2251,11 +2252,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);