From 79f7f0f007e46a6a07f770e514d375d932a82966 Mon Sep 17 00:00:00 2001 From: Wei Zhou Date: Fri, 28 Feb 2020 10:35:49 +0100 Subject: [PATCH] server: fix issue while list ssh keypairs by keyword (#3916) in 4.13, list sshkeypairs with keyword will ignore the search by name if name is specifed Fixes an issue in #3098 for example, (local) > list sshkeypairs name=wei keyword=wei filter=name { "count": 3, "sshkeypair": [ { "name": "wei3" }, { "name": "wei2" }, { "name": "wei" } ] } with this patch ,it gives correct result. (local) > list sshkeypairs name=wei keyword=wei filter=name { "count": 1, "sshkeypair": [ { "name": "wei" } ] } --- .../main/java/com/cloud/server/ManagementServerImpl.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/server/src/main/java/com/cloud/server/ManagementServerImpl.java b/server/src/main/java/com/cloud/server/ManagementServerImpl.java index 5bed8d63c69..31fc632fc78 100644 --- a/server/src/main/java/com/cloud/server/ManagementServerImpl.java +++ b/server/src/main/java/com/cloud/server/ManagementServerImpl.java @@ -3747,8 +3747,10 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe } if (keyword != null) { - sc.addOr("name", SearchCriteria.Op.LIKE, "%" + keyword + "%"); - sc.addOr("fingerprint", SearchCriteria.Op.LIKE, "%" + keyword + "%"); + final SearchCriteria ssc = _sshKeyPairDao.createSearchCriteria(); + ssc.addOr("name", SearchCriteria.Op.LIKE, "%" + keyword + "%"); + ssc.addOr("fingerprint", SearchCriteria.Op.LIKE, "%" + keyword + "%"); + sc.addAnd("name", SearchCriteria.Op.SC, ssc); } final Pair, Integer> result = _sshKeyPairDao.searchAndCount(sc, searchFilter);