Skip to content

Commit bcc8179

Browse files
committed
Merge remote-tracking branch 'apache/4.19' into main
2 parents 554ea22 + 017cf2c commit bcc8179

File tree

2 files changed

+51
-12
lines changed

2 files changed

+51
-12
lines changed

framework/db/src/main/java/com/cloud/utils/db/GenericDaoBase.java

Lines changed: 29 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1400,22 +1400,39 @@ protected List<Attribute> addJoins(StringBuilder str, Collection<JoinBuilder<Sea
14001400
onClause.append("?");
14011401
joinAttrList.add(join.getFirstAttributes()[i]);
14021402
} else {
1403-
onClause.append(joinedTableNames.getOrDefault(join.getFirstAttributes()[i].table, join.getFirstAttributes()[i].table))
1404-
.append(".")
1405-
.append(join.getFirstAttributes()[i].columnName);
1403+
if ((join.getFirstAttributes()[i].table == null && join.getFirstAttributes()[i].value == null) ||
1404+
(join.getSecondAttribute()[i].table == null && join.getSecondAttribute()[i].value == null)) {
1405+
onClause.append(joinedTableNames.getOrDefault(join.getSecondAttribute()[i].table, join.getFirstAttributes()[i].table))
1406+
.append(".");
1407+
if (join.getFirstAttributes()[i].table == null && join.getFirstAttributes()[i].value == null) {
1408+
onClause.append(join.getSecondAttribute()[i].columnName);
1409+
} else {
1410+
onClause.append(join.getFirstAttributes()[i].columnName);
1411+
}
1412+
1413+
} else {
1414+
onClause.append(joinedTableNames.getOrDefault(join.getFirstAttributes()[i].table, join.getFirstAttributes()[i].table))
1415+
.append(".")
1416+
.append(join.getFirstAttributes()[i].columnName);
1417+
}
14061418
}
1407-
onClause.append("=");
1408-
if (join.getSecondAttribute()[i].getValue() != null) {
1409-
onClause.append("?");
1410-
joinAttrList.add(join.getSecondAttribute()[i]);
1419+
if ((join.getFirstAttributes()[i].table == null && join.getFirstAttributes()[i].value == null) ||
1420+
(join.getSecondAttribute()[i].table == null && join.getSecondAttribute()[i].value == null)) {
1421+
onClause.append(" IS NULL");
14111422
} else {
1412-
if(!joinTableAlias.equals(joinTableName)) {
1413-
onClause.append(joinTableAlias);
1423+
onClause.append("=");
1424+
if (join.getSecondAttribute()[i].getValue() != null) {
1425+
onClause.append("?");
1426+
joinAttrList.add(join.getSecondAttribute()[i]);
14141427
} else {
1415-
onClause.append(joinTableName);
1428+
if (!joinTableAlias.equals(joinTableName)) {
1429+
onClause.append(joinTableAlias);
1430+
} else {
1431+
onClause.append(joinTableName);
1432+
}
1433+
onClause.append(".")
1434+
.append(join.getSecondAttribute()[i].columnName);
14161435
}
1417-
onClause.append(".")
1418-
.append(join.getSecondAttribute()[i].columnName);
14191436
}
14201437
}
14211438
onClause.append(" ");

server/src/main/java/com/cloud/api/query/QueryManagerImpl.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -551,6 +551,9 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
551551
@Inject
552552
private NetworkDao networkDao;
553553

554+
@Inject
555+
private IPAddressDao ipAddressDao;
556+
554557
@Inject
555558
private NicDao nicDao;
556559

@@ -1461,6 +1464,22 @@ private Pair<List<Long>, Integer> searchForUserVMIdsAndCount(ListVMsCmd cmd) {
14611464
if (isRootAdmin) {
14621465
userVmSearchBuilder.or("keywordInstanceName", userVmSearchBuilder.entity().getInstanceName(), Op.LIKE );
14631466
}
1467+
1468+
SearchBuilder<IPAddressVO> ipAddressSearch = ipAddressDao.createSearchBuilder();
1469+
userVmSearchBuilder.join("ipAddressSearch", ipAddressSearch,
1470+
ipAddressSearch.entity().getAssociatedWithVmId(), userVmSearchBuilder.entity().getId(), JoinBuilder.JoinType.LEFT);
1471+
1472+
SearchBuilder<NicVO> nicSearch = nicDao.createSearchBuilder();
1473+
userVmSearchBuilder.join("nicSearch", nicSearch, JoinBuilder.JoinType.LEFT,
1474+
JoinBuilder.JoinCondition.AND,
1475+
nicSearch.entity().getInstanceId(), userVmSearchBuilder.entity().getId(),
1476+
nicSearch.entity().getRemoved(), userVmSearchBuilder.entity().setLong(null));
1477+
1478+
userVmSearchBuilder.or("ipAddressSearch", "keywordPublicIpAddress", ipAddressSearch.entity().getAddress(), Op.LIKE);
1479+
1480+
userVmSearchBuilder.or("nicSearch", "keywordIpAddress", nicSearch.entity().getIPv4Address(), Op.LIKE);
1481+
userVmSearchBuilder.or("nicSearch", "keywordIp6Address", nicSearch.entity().getIPv6Address(), Op.LIKE);
1482+
14641483
userVmSearchBuilder.cp();
14651484
}
14661485

@@ -1554,6 +1573,9 @@ private Pair<List<Long>, Integer> searchForUserVMIdsAndCount(ListVMsCmd cmd) {
15541573
userVmSearchCriteria.setParameters("keywordDisplayName", keywordMatch);
15551574
userVmSearchCriteria.setParameters("keywordName", keywordMatch);
15561575
userVmSearchCriteria.setParameters("keywordState", keyword);
1576+
userVmSearchCriteria.setParameters("keywordIpAddress", keywordMatch);
1577+
userVmSearchCriteria.setParameters("keywordPublicIpAddress", keywordMatch);
1578+
userVmSearchCriteria.setParameters("keywordIp6Address", keywordMatch);
15571579
if (isRootAdmin) {
15581580
userVmSearchCriteria.setParameters("keywordInstanceName", keywordMatch);
15591581
}

0 commit comments

Comments
 (0)