Fix list backups after backup vm is expunged (#9392)

This commit is contained in:
Suresh Kumar Anaparti 2024-07-15 17:03:59 +05:30 committed by GitHub
parent 877c4d9a64
commit 8a00e25de9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 10 additions and 1 deletions

View File

@ -36,6 +36,7 @@ import org.apache.cloudstack.api.response.ZoneResponse;
import org.apache.cloudstack.backup.Backup;
import org.apache.cloudstack.backup.BackupManager;
import org.apache.cloudstack.context.CallContext;
import org.apache.log4j.Logger;
import com.cloud.exception.ConcurrentOperationException;
import com.cloud.exception.InsufficientCapacityException;
@ -49,6 +50,7 @@ import com.cloud.utils.Pair;
responseObject = BackupResponse.class, since = "4.14.0",
authorized = {RoleType.Admin, RoleType.ResourceAdmin, RoleType.DomainAdmin, RoleType.User})
public class ListBackupsCmd extends BaseListProjectAndAccountResourcesCmd {
private static final Logger s_logger = Logger.getLogger(ListBackupsCmd.class);
@Inject
private BackupManager backupManager;
@ -116,6 +118,7 @@ public class ListBackupsCmd extends BaseListProjectAndAccountResourcesCmd {
Pair<List<Backup>, Integer> result = backupManager.listBackups(this);
setupResponseBackupList(result.first(), result.second());
} catch (Exception e) {
s_logger.debug("Exception while listing backups", e);
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, e.getMessage());
}
}

View File

@ -132,6 +132,7 @@ public interface Backup extends ControlledEntity, InternalIdentity, Identity {
}
long getVmId();
long getBackupOfferingId();
String getExternalId();
String getType();
String getDate();

View File

@ -155,6 +155,7 @@ public class BackupVO implements Backup {
this.status = status;
}
@Override
public long getBackupOfferingId() {
return backupOfferingId;
}

View File

@ -145,7 +145,11 @@ public class BackupDaoImpl extends GenericDaoBase<BackupVO, Long> implements Bac
AccountVO account = accountDao.findByIdIncludingRemoved(vm.getAccountId());
DomainVO domain = domainDao.findByIdIncludingRemoved(vm.getDomainId());
DataCenterVO zone = dataCenterDao.findByIdIncludingRemoved(vm.getDataCenterId());
BackupOffering offering = backupOfferingDao.findByIdIncludingRemoved(vm.getBackupOfferingId());
Long offeringId = vm.getBackupOfferingId();
if (offeringId == null) {
offeringId = backup.getBackupOfferingId();
}
BackupOffering offering = backupOfferingDao.findByIdIncludingRemoved(offeringId);
BackupResponse response = new BackupResponse();
response.setId(backup.getUuid());