From 6b0c9ea2ee7273b7a6dbc41d5dd13d44a935f685 Mon Sep 17 00:00:00 2001 From: Wei Zhou Date: Fri, 17 Sep 2021 08:28:47 +0200 Subject: [PATCH 1/2] server: fix list public ip returns duplicated records --- .../main/java/com/cloud/server/ManagementServerImpl.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/server/src/main/java/com/cloud/server/ManagementServerImpl.java b/server/src/main/java/com/cloud/server/ManagementServerImpl.java index 93c1e9bf78c3..19532a04b022 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 Pair, Integer> searchForIPAddresses(final ListP _accountMgr.buildACLSearchBuilder(sb, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria); } - buildParameters(sb, cmd); + buildParameters(sb, cmd, true); SearchCriteria sc = sb.create(); setParameters(sc, cmd, vlanType); @@ -2190,7 +2190,7 @@ public Pair, Integer> searchForIPAddresses(final ListP } 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 Pair, Integer> searchForIPAddresses(final ListP 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 Pair, Integer> searchForIPAddresses(final ListP 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); From 5c5be60c3eca746e41617bc3dbd8d9fc6f29de52 Mon Sep 17 00:00:00 2001 From: Wei Zhou Date: Fri, 17 Sep 2021 13:41:34 +0200 Subject: [PATCH 2/2] update #5464: fix shared network --- server/src/main/java/com/cloud/server/ManagementServerImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/main/java/com/cloud/server/ManagementServerImpl.java b/server/src/main/java/com/cloud/server/ManagementServerImpl.java index 19532a04b022..2c52b6734524 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 Pair, Integer> searchForIPAddresses(final ListP _accountMgr.buildACLSearchBuilder(sb, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria); } - buildParameters(sb, cmd, true); + buildParameters(sb, cmd, vlanType == VlanType.VirtualNetwork ? true : isAllocated); SearchCriteria sc = sb.create(); setParameters(sc, cmd, vlanType);