Skip to content

Commit a6fdb20

Browse files
clean up backup schedule references after their deletion
1 parent 120a436 commit a6fdb20

File tree

4 files changed

+34
-37
lines changed

4 files changed

+34
-37
lines changed

engine/schema/src/main/java/org/apache/cloudstack/backup/dao/BackupScheduleDao.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,20 +21,14 @@
2121
import java.util.List;
2222

2323
import com.cloud.utils.DateUtil;
24-
import org.apache.cloudstack.api.response.BackupScheduleResponse;
25-
import org.apache.cloudstack.backup.BackupSchedule;
2624
import org.apache.cloudstack.backup.BackupScheduleVO;
2725

2826
import com.cloud.utils.db.GenericDao;
2927

3028
public interface BackupScheduleDao extends GenericDao<BackupScheduleVO, Long> {
31-
BackupScheduleVO findByVM(Long vmId);
32-
3329
List<BackupScheduleVO> listByVM(Long vmId);
3430

3531
BackupScheduleVO findByVMAndIntervalType(Long vmId, DateUtil.IntervalType intervalType);
3632

3733
List<BackupScheduleVO> getSchedulesToExecute(Date currentTimestamp);
38-
39-
BackupScheduleResponse newBackupScheduleResponse(BackupSchedule schedule);
4034
}

engine/schema/src/main/java/org/apache/cloudstack/backup/dao/BackupScheduleDaoImpl.java

Lines changed: 15 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -17,21 +17,22 @@
1717

1818
package org.apache.cloudstack.backup.dao;
1919

20+
import java.sql.PreparedStatement;
21+
import java.sql.SQLException;
2022
import java.util.Date;
2123
import java.util.List;
2224

2325
import javax.annotation.PostConstruct;
2426
import javax.inject.Inject;
2527

2628
import com.cloud.utils.DateUtil;
27-
import org.apache.cloudstack.api.response.BackupScheduleResponse;
28-
import org.apache.cloudstack.backup.BackupSchedule;
29+
import com.cloud.utils.db.DB;
30+
import com.cloud.utils.db.TransactionLegacy;
2931
import org.apache.cloudstack.backup.BackupScheduleVO;
3032

3133
import com.cloud.utils.db.GenericDaoBase;
3234
import com.cloud.utils.db.SearchBuilder;
3335
import com.cloud.utils.db.SearchCriteria;
34-
import com.cloud.vm.VMInstanceVO;
3536
import com.cloud.vm.dao.VMInstanceDao;
3637

3738
public class BackupScheduleDaoImpl extends GenericDaoBase<BackupScheduleVO, Long> implements BackupScheduleDao {
@@ -59,13 +60,6 @@ protected void init() {
5960
executableSchedulesSearch.done();
6061
}
6162

62-
@Override
63-
public BackupScheduleVO findByVM(Long vmId) {
64-
SearchCriteria<BackupScheduleVO> sc = backupScheduleSearch.create();
65-
sc.setParameters("vm_id", vmId);
66-
return findOneBy(sc);
67-
}
68-
6963
@Override
7064
public List<BackupScheduleVO> listByVM(Long vmId) {
7165
SearchCriteria<BackupScheduleVO> sc = backupScheduleSearch.create();
@@ -88,21 +82,18 @@ public List<BackupScheduleVO> getSchedulesToExecute(Date currentTimestamp) {
8882
return listBy(sc);
8983
}
9084

85+
@DB
9186
@Override
92-
public BackupScheduleResponse newBackupScheduleResponse(BackupSchedule schedule) {
93-
VMInstanceVO vm = vmInstanceDao.findByIdIncludingRemoved(schedule.getVmId());
94-
BackupScheduleResponse response = new BackupScheduleResponse();
95-
response.setId(schedule.getUuid());
96-
response.setVmId(vm.getUuid());
97-
response.setVmName(vm.getHostName());
98-
response.setIntervalType(schedule.getScheduleType());
99-
response.setSchedule(schedule.getSchedule());
100-
response.setTimezone(schedule.getTimezone());
101-
response.setMaxBackups(schedule.getMaxBackups());
102-
if (schedule.getQuiesceVM() != null) {
103-
response.setQuiesceVM(schedule.getQuiesceVM());
87+
public boolean remove(Long id) {
88+
String sql = "UPDATE backups SET backup_schedule_id = NULL WHERE backup_schedule_id = ?";
89+
TransactionLegacy transaction = TransactionLegacy.currentTxn();
90+
try {
91+
PreparedStatement preparedStatement = transaction.prepareAutoCloseStatement(sql);
92+
preparedStatement.setLong(1, id);
93+
preparedStatement.executeUpdate();
94+
return super.remove(id);
95+
} catch (SQLException e) {
96+
return false;
10497
}
105-
response.setObjectName("backupschedule");
106-
return response;
10798
}
10899
}

server/src/main/java/com/cloud/api/ApiDBUtils.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@
4545
import org.apache.cloudstack.api.response.AccountResponse;
4646
import org.apache.cloudstack.api.response.AsyncJobResponse;
4747
import org.apache.cloudstack.api.response.BackupOfferingResponse;
48-
import org.apache.cloudstack.api.response.BackupScheduleResponse;
4948
import org.apache.cloudstack.api.response.DiskOfferingResponse;
5049
import org.apache.cloudstack.api.response.DomainResponse;
5150
import org.apache.cloudstack.api.response.DomainRouterResponse;
@@ -76,7 +75,6 @@
7675
import org.apache.cloudstack.api.response.ZoneResponse;
7776
import org.apache.cloudstack.backup.BackupOffering;
7877
import org.apache.cloudstack.backup.BackupRepository;
79-
import org.apache.cloudstack.backup.BackupSchedule;
8078
import org.apache.cloudstack.backup.dao.BackupDao;
8179
import org.apache.cloudstack.backup.dao.BackupOfferingDao;
8280
import org.apache.cloudstack.backup.dao.BackupRepositoryDao;
@@ -2299,10 +2297,6 @@ public static ResourceIconVO getResourceIconByResourceUUID(String resourceUUID,
22992297
return s_resourceIconDao.findByResourceUuid(resourceUUID, resourceType);
23002298
}
23012299

2302-
public static BackupScheduleResponse newBackupScheduleResponse(BackupSchedule schedule) {
2303-
return s_backupScheduleDao.newBackupScheduleResponse(schedule);
2304-
}
2305-
23062300
public static BackupOfferingResponse newBackupOfferingResponse(BackupOffering offering) {
23072301
BackupRepository repository = s_backupRepositoryDao.findByUuid(offering.getExternalId());
23082302
Boolean crossZoneInstanceCreationEnabled = repository != null ? Boolean.TRUE.equals(repository.crossZoneInstanceCreationEnabled()) : false;

server/src/main/java/com/cloud/api/ApiResponseHelper.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5042,7 +5042,25 @@ public UserDataResponse createUserDataResponse(UserData userData) {
50425042

50435043
@Override
50445044
public BackupScheduleResponse createBackupScheduleResponse(BackupSchedule schedule) {
5045-
return ApiDBUtils.newBackupScheduleResponse(schedule);
5045+
BackupScheduleResponse response = new BackupScheduleResponse();
5046+
response.setId(schedule.getUuid());
5047+
response.setIntervalType(schedule.getScheduleType());
5048+
response.setSchedule(schedule.getSchedule());
5049+
response.setTimezone(schedule.getTimezone());
5050+
response.setMaxBackups(schedule.getMaxBackups());
5051+
5052+
if (schedule.getQuiesceVM() != null) {
5053+
response.setQuiesceVM(schedule.getQuiesceVM());
5054+
}
5055+
5056+
VMInstanceVO vm = ApiDBUtils.findVMInstanceById(schedule.getVmId());
5057+
if (vm != null) {
5058+
response.setVmId(vm.getUuid());
5059+
response.setVmName(vm.getHostName());
5060+
}
5061+
5062+
response.setObjectName("backupschedule");
5063+
return response;
50465064
}
50475065

50485066
@Override

0 commit comments

Comments
 (0)