mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
CLOUDSTACK-2040 VM with snapshot not getting destroyed during account delation
This commit is contained in:
parent
7bff1d08f4
commit
cbe021b8d2
@ -19,6 +19,7 @@ package com.cloud.agent.api;
|
|||||||
import com.cloud.agent.api.LogLevel.Log4jLevel;
|
import com.cloud.agent.api.LogLevel.Log4jLevel;
|
||||||
import com.cloud.agent.api.to.S3TO;
|
import com.cloud.agent.api.to.S3TO;
|
||||||
import com.cloud.agent.api.to.SwiftTO;
|
import com.cloud.agent.api.to.SwiftTO;
|
||||||
|
import com.cloud.storage.StoragePool;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This command encapsulates a primitive operation which enables coalescing the backed up VHD snapshots on the secondary server
|
* This command encapsulates a primitive operation which enables coalescing the backed up VHD snapshots on the secondary server
|
||||||
@ -78,7 +79,8 @@ public class DeleteSnapshotBackupCommand extends SnapshotCommand {
|
|||||||
* @param backupUUID The VHD which has to be deleted
|
* @param backupUUID The VHD which has to be deleted
|
||||||
* @param childUUID The child VHD file of the backup whose parent is reset to its grandparent.
|
* @param childUUID The child VHD file of the backup whose parent is reset to its grandparent.
|
||||||
*/
|
*/
|
||||||
public DeleteSnapshotBackupCommand(SwiftTO swift,
|
public DeleteSnapshotBackupCommand(StoragePool pool,
|
||||||
|
SwiftTO swift,
|
||||||
S3TO s3,
|
S3TO s3,
|
||||||
String secondaryStoragePoolURL,
|
String secondaryStoragePoolURL,
|
||||||
Long dcId,
|
Long dcId,
|
||||||
@ -86,7 +88,7 @@ public class DeleteSnapshotBackupCommand extends SnapshotCommand {
|
|||||||
Long volumeId,
|
Long volumeId,
|
||||||
String backupUUID, Boolean all)
|
String backupUUID, Boolean all)
|
||||||
{
|
{
|
||||||
super(null, secondaryStoragePoolURL, backupUUID, null, dcId, accountId, volumeId);
|
super(pool, secondaryStoragePoolURL, backupUUID, null, dcId, accountId, volumeId);
|
||||||
setSwift(swift);
|
setSwift(swift);
|
||||||
this.s3 = s3;
|
this.s3 = s3;
|
||||||
setAll(all);
|
setAll(all);
|
||||||
|
|||||||
@ -33,6 +33,8 @@ import org.apache.cloudstack.engine.subsystem.api.storage.EndPoint;
|
|||||||
import org.apache.cloudstack.engine.subsystem.api.storage.VolumeInfo;
|
import org.apache.cloudstack.engine.subsystem.api.storage.VolumeInfo;
|
||||||
import org.apache.cloudstack.framework.async.AsyncCompletionCallback;
|
import org.apache.cloudstack.framework.async.AsyncCompletionCallback;
|
||||||
import org.apache.cloudstack.framework.async.AsyncRpcConext;
|
import org.apache.cloudstack.framework.async.AsyncRpcConext;
|
||||||
|
import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao;
|
||||||
|
import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
|
||||||
import org.apache.cloudstack.storage.image.ImageDataStoreDriver;
|
import org.apache.cloudstack.storage.image.ImageDataStoreDriver;
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
@ -45,8 +47,8 @@ import com.cloud.agent.api.to.SwiftTO;
|
|||||||
import com.cloud.host.HostVO;
|
import com.cloud.host.HostVO;
|
||||||
import com.cloud.host.dao.HostDao;
|
import com.cloud.host.dao.HostDao;
|
||||||
import com.cloud.storage.RegisterVolumePayload;
|
import com.cloud.storage.RegisterVolumePayload;
|
||||||
import com.cloud.storage.Storage.ImageFormat;
|
|
||||||
import com.cloud.storage.SnapshotVO;
|
import com.cloud.storage.SnapshotVO;
|
||||||
|
import com.cloud.storage.Storage.ImageFormat;
|
||||||
import com.cloud.storage.VMTemplateStorageResourceAssoc;
|
import com.cloud.storage.VMTemplateStorageResourceAssoc;
|
||||||
import com.cloud.storage.VMTemplateVO;
|
import com.cloud.storage.VMTemplateVO;
|
||||||
import com.cloud.storage.VMTemplateZoneVO;
|
import com.cloud.storage.VMTemplateZoneVO;
|
||||||
@ -80,6 +82,7 @@ public class AncientImageDataStoreDriverImpl implements ImageDataStoreDriver {
|
|||||||
@Inject SnapshotDao snapshotDao;
|
@Inject SnapshotDao snapshotDao;
|
||||||
@Inject AgentManager agentMgr;
|
@Inject AgentManager agentMgr;
|
||||||
@Inject SnapshotManager snapshotMgr;
|
@Inject SnapshotManager snapshotMgr;
|
||||||
|
@Inject PrimaryDataStoreDao primaryDataStoreDao;
|
||||||
@Inject
|
@Inject
|
||||||
private SwiftManager _swiftMgr;
|
private SwiftManager _swiftMgr;
|
||||||
@Inject
|
@Inject
|
||||||
@ -196,9 +199,10 @@ public class AncientImageDataStoreDriverImpl implements ImageDataStoreDriver {
|
|||||||
}
|
}
|
||||||
SwiftTO swift = _swiftMgr.getSwiftTO(snapshot.getSwiftId());
|
SwiftTO swift = _swiftMgr.getSwiftTO(snapshot.getSwiftId());
|
||||||
S3TO s3 = _s3Mgr.getS3TO();
|
S3TO s3 = _s3Mgr.getS3TO();
|
||||||
|
VolumeVO volume = volumeDao.findById(volumeId);
|
||||||
|
StoragePoolVO pool = primaryDataStoreDao.findById(volume.getPoolId());
|
||||||
DeleteSnapshotBackupCommand cmd = new DeleteSnapshotBackupCommand(
|
DeleteSnapshotBackupCommand cmd = new DeleteSnapshotBackupCommand(
|
||||||
swift, s3, secondaryStoragePoolUrl, dcId, accountId, volumeId,
|
pool, swift, s3, secondaryStoragePoolUrl, dcId, accountId, volumeId,
|
||||||
backupOfSnapshot, false);
|
backupOfSnapshot, false);
|
||||||
Answer answer = agentMgr.sendToSSVM(dcId, cmd);
|
Answer answer = agentMgr.sendToSSVM(dcId, cmd);
|
||||||
|
|
||||||
|
|||||||
@ -181,9 +181,8 @@ public class SnapshotManagerImpl extends ManagerBase implements SnapshotManager,
|
|||||||
private ResourceTagDao _resourceTagDao;
|
private ResourceTagDao _resourceTagDao;
|
||||||
@Inject
|
@Inject
|
||||||
private ConfigurationDao _configDao;
|
private ConfigurationDao _configDao;
|
||||||
|
@Inject
|
||||||
@Inject
|
private PrimaryDataStoreDao _primaryDataStoreDao;
|
||||||
private VMSnapshotDao _vmSnapshotDao;
|
|
||||||
String _name;
|
String _name;
|
||||||
|
|
||||||
@Inject TemplateManager templateMgr;
|
@Inject TemplateManager templateMgr;
|
||||||
@ -694,11 +693,11 @@ public class SnapshotManagerImpl extends ManagerBase implements SnapshotManager,
|
|||||||
S3TO s3 = _s3Mgr.getS3TO();
|
S3TO s3 = _s3Mgr.getS3TO();
|
||||||
|
|
||||||
checkObjectStorageConfiguration(swift, s3);
|
checkObjectStorageConfiguration(swift, s3);
|
||||||
|
StoragePoolVO pool = _primaryDataStoreDao.findById(volume.getPoolId());
|
||||||
if (swift == null && s3 == null) {
|
if (swift == null && s3 == null) {
|
||||||
for (HostVO ssHost : ssHosts) {
|
for (HostVO ssHost : ssHosts) {
|
||||||
DeleteSnapshotBackupCommand cmd = new DeleteSnapshotBackupCommand(
|
DeleteSnapshotBackupCommand cmd = new DeleteSnapshotBackupCommand(
|
||||||
null, null, ssHost.getStorageUrl(), dcId,
|
pool,null, null, ssHost.getStorageUrl(), dcId,
|
||||||
accountId, volumeId, "", true);
|
accountId, volumeId, "", true);
|
||||||
Answer answer = null;
|
Answer answer = null;
|
||||||
try {
|
try {
|
||||||
@ -717,7 +716,7 @@ public class SnapshotManagerImpl extends ManagerBase implements SnapshotManager,
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
DeleteSnapshotBackupCommand cmd = new DeleteSnapshotBackupCommand(
|
DeleteSnapshotBackupCommand cmd = new DeleteSnapshotBackupCommand(
|
||||||
swift, s3, "", dcId, accountId, volumeId, "", true);
|
pool,swift, s3, "", dcId, accountId, volumeId, "", true);
|
||||||
Answer answer = null;
|
Answer answer = null;
|
||||||
try {
|
try {
|
||||||
answer = _agentMgr.sendToSSVM(dcId, cmd);
|
answer = _agentMgr.sendToSSVM(dcId, cmd);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user