JoaoJandre commented on code in PR #12758:
URL: https://github.com/apache/cloudstack/pull/12758#discussion_r3438343608
##########
server/src/main/java/com/cloud/api/query/QueryManagerImpl.java:
##########
@@ -6349,6 +6370,60 @@ private List<BucketVO>
searchForBucketsInternal(ListBucketsCmd cmd) {
return bucketDao.searchByIds(bktIds);
}
+ @Override
+ public ListResponse<BackupServiceJobResponse>
listBackupServiceJobs(ListBackupServiceJobsCmd cmd) {
+ ListResponse<BackupServiceJobResponse> responses = new
ListResponse<>();
+ Pair<List<InternalBackupServiceJobVO>, Integer> result =
listBackupServiceJobsInternal(cmd);
+ List<BackupServiceJobResponse> compressionJobResponses = new
ArrayList<>();
+
+ for (InternalBackupServiceJobVO jobVO : result.first()) {
+ BackupVO backup =
backupDao.findByIdIncludingRemoved(jobVO.getBackupId());
+ DataCenterVO zone =
dataCenterDao.findByIdIncludingRemoved(jobVO.getZoneId());
+
+ BackupServiceJobResponse response = new
BackupServiceJobResponse(jobVO.getId(), backup.getUuid(), zone.getUuid(),
jobVO.getAttempts(),
+ jobVO.getType().toString(), jobVO.getStartTime(),
jobVO.getScheduledStartTime(), jobVO.getRemoved());
+
+ if (jobVO.getHostId() != null) {
+
response.setHostId(hostDao.findByIdIncludingRemoved(jobVO.getHostId()).getUuid());
+ }
+ compressionJobResponses.add(response);
+ }
+
+ responses.setResponses(compressionJobResponses, result.second());
+ return responses;
+ }
+
+ private Pair<List<InternalBackupServiceJobVO>, Integer>
listBackupServiceJobsInternal(ListBackupServiceJobsCmd cmd) {
+ SearchBuilder<InternalBackupServiceJobVO> sb =
internalBackupServiceJobDao.createSearchBuilder();
+
+ sb.and("id", sb.entity().getId(), Op.EQ);
+ sb.and("backup_id", sb.entity().getBackupId(), Op.EQ);
+ sb.and("host_id", sb.entity().getHostId(), Op.EQ);
+ sb.and("zone_id", sb.entity().getZoneId(), Op.EQ);
+ sb.and("type", sb.entity().getType(), Op.EQ);
+
+ boolean removed = !cmd.getExecuting() && !cmd.getScheduled();
+ if (cmd.getExecuting() && !cmd.getScheduled()) {
+ sb.and("executing", sb.entity().getStartTime(), Op.NNULL);
+ } else if (cmd.getScheduled() && !cmd.getExecuting()) {
+ sb.and("scheduled", sb.entity().getStartTime(), Op.NULL);
+ }
+
+ SearchCriteria<InternalBackupServiceJobVO> sc = sb.create();
+
+ sc.setParametersIfNotNull("id", cmd.getId());
+ sc.setParametersIfNotNull("backup_id", cmd.getBackupId());
+ sc.setParametersIfNotNull("host_id", cmd.getHostId());
+ sc.setParametersIfNotNull("zone_id", cmd.getZoneId());
+ if (cmd.getType() != null) {
+ sc.setParameters("type",
InternalBackupServiceJobType.valueOf(cmd.getType()));
+ }
+
+ Filter filter = new Filter(InternalBackupServiceJobVO.class,
"created", false, cmd.getStartIndex(), cmd.getPageSizeVal());
+
+ return internalBackupServiceJobDao.searchAndCount(sc, filter, removed);
+ }
Review Comment:
We can refactor this in the future
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]