You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ro...@apache.org on 2021/09/02 19:09:02 UTC
[cloudstack] branch 4.15 updated: vmware: delete snapshot disk
after backup to secondary storage (#5333)
This is an automated email from the ASF dual-hosted git repository.
rohit pushed a commit to branch 4.15
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/4.15 by this push:
new 2297c73 vmware: delete snapshot disk after backup to secondary storage (#5333)
2297c73 is described below
commit 2297c73c92a46cc9eb544d79123487b21c8064d1
Author: Rohit Yadav <ro...@shapeblue.com>
AuthorDate: Fri Sep 3 00:38:44 2021 +0530
vmware: delete snapshot disk after backup to secondary storage (#5333)
* vmware: delete snapshot disk after backup to secondary storage
WIP - This ensures that worker VM is destroyed along with any of its own
disks that are backed up to secondary storage.
Signed-off-by: Rohit Yadav <ro...@shapeblue.com>
* fix
Signed-off-by: Abhishek Kumar <ab...@gmail.com>
* fix for volume backup and confuding vm var name
Signed-off-by: Abhishek Kumar <ab...@gmail.com>
* change
Signed-off-by: Abhishek Kumar <ab...@gmail.com>
* tag as worker vm
Signed-off-by: Abhishek Kumar <ab...@gmail.com>
Co-authored-by: Abhishek Kumar <ab...@gmail.com>
---
.../storage/resource/VmwareStorageProcessor.java | 21 ++++++++++++---------
.../hypervisor/vmware/mo/VirtualMachineMO.java | 13 +++++++------
2 files changed, 19 insertions(+), 15 deletions(-)
diff --git a/plugins/hypervisors/vmware/src/main/java/com/cloud/storage/resource/VmwareStorageProcessor.java b/plugins/hypervisors/vmware/src/main/java/com/cloud/storage/resource/VmwareStorageProcessor.java
index 6536bb7..db24603 100644
--- a/plugins/hypervisors/vmware/src/main/java/com/cloud/storage/resource/VmwareStorageProcessor.java
+++ b/plugins/hypervisors/vmware/src/main/java/com/cloud/storage/resource/VmwareStorageProcessor.java
@@ -1264,7 +1264,8 @@ public class VmwareStorageProcessor implements StorageProcessor {
} finally {
if (clonedVm != null) {
- clonedVm.detachAllDisksAndDestroy();
+ s_logger.debug(String.format("Destroying cloned VM: %s with its disks", clonedVm.getName()));
+ clonedVm.destroy();
}
}
}
@@ -1832,7 +1833,8 @@ public class VmwareStorageProcessor implements StorageProcessor {
return new Pair<>(diskDevice, disks);
} finally {
if (clonedVm != null) {
- clonedVm.detachAllDisksAndDestroy();
+ s_logger.debug(String.format("Destroying cloned VM: %s with its disks", clonedVm.getName()));
+ clonedVm.destroy();
}
}
}
@@ -3738,23 +3740,24 @@ public class VmwareStorageProcessor implements StorageProcessor {
throw new Exception(msg);
}
- VirtualMachineMO clonedVm = null;
+ VirtualMachineMO workerVm = null;
try {
hyperHost.importVmFromOVF(srcOVFFileName, newVolumeName, primaryDsMo, "thin", null);
- clonedVm = hyperHost.findVmOnHyperHost(newVolumeName);
- if (clonedVm == null) {
+ workerVm = hyperHost.findVmOnHyperHost(newVolumeName);
+ if (workerVm == null) {
throw new Exception("Unable to create container VM for volume creation");
}
+ workerVm.tagAsWorkerVM();
if(!primaryDsMo.getDatastoreType().equalsIgnoreCase("VVOL")) {
HypervisorHostHelper.createBaseFolderInDatastore(primaryDsMo, primaryDsMo.getDataCenterMor());
- clonedVm.moveAllVmDiskFiles(primaryDsMo, HypervisorHostHelper.VSPHERE_DATASTORE_BASE_FOLDER, false);
+ workerVm.moveAllVmDiskFiles(primaryDsMo, HypervisorHostHelper.VSPHERE_DATASTORE_BASE_FOLDER, false);
}
- clonedVm.detachAllDisks();
+ workerVm.detachAllDisks();
return _storage.getSize(srcOVFFileName);
} finally {
- if (clonedVm != null) {
- clonedVm.detachAllDisksAndDestroy();
+ if (workerVm != null) {
+ workerVm.detachAllDisksAndDestroy();
}
}
}
diff --git a/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java b/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java
index 30396f6..be999b4 100644
--- a/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java
+++ b/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java
@@ -36,12 +36,6 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
-import com.cloud.utils.exception.CloudRuntimeException;
-import com.vmware.vim25.InvalidStateFaultMsg;
-import com.vmware.vim25.RuntimeFaultFaultMsg;
-import com.vmware.vim25.TaskInfo;
-import com.vmware.vim25.TaskInfoState;
-import com.vmware.vim25.VirtualMachineTicket;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
@@ -53,6 +47,7 @@ import com.cloud.utils.ActionDelegate;
import com.cloud.utils.Pair;
import com.cloud.utils.Ternary;
import com.cloud.utils.concurrency.NamedThreadFactory;
+import com.cloud.utils.exception.CloudRuntimeException;
import com.cloud.utils.script.Script;
import com.google.gson.Gson;
import com.vmware.vim25.ArrayOfManagedObjectReference;
@@ -66,6 +61,7 @@ import com.vmware.vim25.GuestOsDescriptor;
import com.vmware.vim25.HttpNfcLeaseDeviceUrl;
import com.vmware.vim25.HttpNfcLeaseInfo;
import com.vmware.vim25.HttpNfcLeaseState;
+import com.vmware.vim25.InvalidStateFaultMsg;
import com.vmware.vim25.ManagedObjectReference;
import com.vmware.vim25.ObjectContent;
import com.vmware.vim25.ObjectSpec;
@@ -76,6 +72,9 @@ import com.vmware.vim25.OvfFile;
import com.vmware.vim25.ParaVirtualSCSIController;
import com.vmware.vim25.PropertyFilterSpec;
import com.vmware.vim25.PropertySpec;
+import com.vmware.vim25.RuntimeFaultFaultMsg;
+import com.vmware.vim25.TaskInfo;
+import com.vmware.vim25.TaskInfoState;
import com.vmware.vim25.TraversalSpec;
import com.vmware.vim25.VirtualBusLogicController;
import com.vmware.vim25.VirtualCdrom;
@@ -120,6 +119,7 @@ import com.vmware.vim25.VirtualMachineRelocateSpecDiskLocator;
import com.vmware.vim25.VirtualMachineRuntimeInfo;
import com.vmware.vim25.VirtualMachineSnapshotInfo;
import com.vmware.vim25.VirtualMachineSnapshotTree;
+import com.vmware.vim25.VirtualMachineTicket;
import com.vmware.vim25.VirtualSCSIController;
import com.vmware.vim25.VirtualSCSISharing;
@@ -771,6 +771,7 @@ public class VirtualMachineMO extends BaseMO {
boolean result = _context.getVimClient().waitForTask(morTask);
if (result) {
_context.waitForTaskProgressDone(morTask);
+ s_logger.debug(String.format("Cloned VM: %s as %s", getName(), cloneName));
return true;
} else {
s_logger.error("VMware cloneVM_Task failed due to " + TaskMO.getTaskFailureInfo(_context, morTask));