Skip to content

Commit b68b727

Browse files
committed
support snap / backup policy search using keyword
1 parent def6dad commit b68b727

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

server/src/main/java/com/cloud/storage/snapshot/SnapshotManagerImpl.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1394,6 +1394,7 @@ public Pair<List<? extends SnapshotPolicy>, Integer> listSnapshotPolicies(ListSn
13941394
Long id = cmd.getId();
13951395
Account caller = CallContext.current().getCallingAccount();
13961396
List<Long> permittedAccounts = new ArrayList<>();
1397+
String keyword = cmd.getKeyword();
13971398

13981399
// Verify parameters
13991400
if (volumeId != null) {
@@ -1417,6 +1418,10 @@ public Pair<List<? extends SnapshotPolicy>, Integer> listSnapshotPolicies(ListSn
14171418
policySearch.and("id", policySearch.entity().getId(), SearchCriteria.Op.EQ);
14181419
policySearch.and("volumeId", policySearch.entity().getVolumeId(), SearchCriteria.Op.EQ);
14191420

1421+
SearchBuilder<VolumeVO> volumeSearch = _volsDao.createSearchBuilder();
1422+
volumeSearch.and("name", volumeSearch.entity().getName(), SearchCriteria.Op.LIKE);
1423+
policySearch.join("volumeJoin", volumeSearch, policySearch.entity().getVolumeId(), volumeSearch.entity().getId(), JoinBuilder.JoinType.INNER);
1424+
14201425
SearchCriteria<SnapshotPolicyVO> sc = policySearch.create();
14211426
_accountMgr.buildACLSearchCriteria(sc, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria);
14221427

@@ -1426,6 +1431,9 @@ public Pair<List<? extends SnapshotPolicy>, Integer> listSnapshotPolicies(ListSn
14261431
if (id != null) {
14271432
sc.setParameters("id", id);
14281433
}
1434+
if (keyword != null) {
1435+
sc.setJoinParameters("volumeJoin", "name", "%" + keyword + "%");
1436+
}
14291437

14301438
Pair<List<SnapshotPolicyVO>, Integer> result = _snapshotPolicyDao.searchAndCount(sc, searchFilter);
14311439
return new Pair<>(result.first(), result.second());

server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -640,12 +640,12 @@ protected int validateAndGetDefaultBackupRetentionIfRequired(Integer maxBackups,
640640

641641
public List<BackupSchedule> listBackupSchedules(ListBackupScheduleCmd cmd) {
642642
Account caller = CallContext.current().getCallingAccount();
643-
boolean isRootAdmin = accountManager.isRootAdmin(caller.getId());
644643
Long id = cmd.getId();
645644
Long vmId = cmd.getVmId();
646645
List<Long> permittedAccounts = new ArrayList<>();
647646
Long domainId = null;
648647
Boolean isRecursive = null;
648+
String keyword = cmd.getKeyword();
649649
Project.ListProjectResourcesCriteria listProjectResourcesCriteria = null;
650650

651651
if (vmId != null) {
@@ -670,6 +670,11 @@ public List<BackupSchedule> listBackupSchedules(ListBackupScheduleCmd cmd) {
670670
if (vmId != null) {
671671
searchBuilder.and("vmId", searchBuilder.entity().getVmId(), SearchCriteria.Op.EQ);
672672
}
673+
if (keyword != null && !keyword.isEmpty()) {
674+
SearchBuilder<VMInstanceVO> vmSearch = vmInstanceDao.createSearchBuilder();
675+
vmSearch.and("hostName", vmSearch.entity().getHostName(), SearchCriteria.Op.LIKE);
676+
searchBuilder.join("vmJoin", vmSearch, searchBuilder.entity().getVmId(), vmSearch.entity().getId(), JoinBuilder.JoinType.INNER);
677+
}
673678

674679
SearchCriteria<BackupScheduleVO> sc = searchBuilder.create();
675680
accountManager.buildACLSearchCriteria(sc, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria);
@@ -680,6 +685,9 @@ public List<BackupSchedule> listBackupSchedules(ListBackupScheduleCmd cmd) {
680685
if (vmId != null) {
681686
sc.setParameters("vmId", vmId);
682687
}
688+
if (keyword != null && !keyword.isEmpty()) {
689+
sc.setJoinParameters("vmJoin", "hostName", "%" + keyword + "%");
690+
}
683691

684692
Pair<List<BackupScheduleVO>, Integer> result = backupScheduleDao.searchAndCount(sc, searchFilter);
685693
return new ArrayList<>(result.first());

0 commit comments

Comments
 (0)