diff --git a/core/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java b/core/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java
index 47051936fdf..7ec6c2b4462 100755
--- a/core/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java
+++ b/core/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java
@@ -1996,9 +1996,12 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
}
StorageFilerTO pool = cmd.getPool();
- try {
- VmwareHypervisorHost hyperHost = this.getHyperHost(getServiceContext());
- hyperHost.unmountDatastore(pool.getUuid());
+ try {
+ // We will leave datastore cleanup management to vCenter. Since for cluster VMFS datastore, it will always
+ // be mounted by vCenter.
+
+ // VmwareHypervisorHost hyperHost = this.getHyperHost(getServiceContext());
+ // hyperHost.unmountDatastore(pool.getUuid());
Answer answer = new Answer(cmd, true, "success");
return answer;
} catch (Throwable e) {
@@ -2599,7 +2602,12 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
if (s_logger.isInfoEnabled())
s_logger.info("Destroy volume by original name: " + cmd.getVolume().getPath() + ".vmdk");
- dsMo.deleteFile(cmd.getVolume().getPath() + ".vmdk", morDc, true);
+ dsMo.deleteFile(cmd.getVolume().getPath() + ".vmdk", morDc, true);
+
+ // root volume may be created via linked-clone, delete the delta disk as well
+ if (s_logger.isInfoEnabled())
+ s_logger.info("Destroy volume by derived name: " + cmd.getVolume().getPath() + "-delta.vmdk");
+ dsMo.deleteFile(cmd.getVolume().getPath() + "-delta.vmdk", morDc, true);
return new Answer(cmd, true, "Success");
}
@@ -2634,13 +2642,23 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
if (s_logger.isInfoEnabled()) {
s_logger.info("Empty disk chain info, fall back to try to delete by original backing file name");
}
- dsMo.deleteFile(cmd.getVolume().getPath() + ".vmdk", morDc, true);
+ dsMo.deleteFile(cmd.getVolume().getPath() + ".vmdk", morDc, true);
+
+ if (s_logger.isInfoEnabled()) {
+ s_logger.info("Destroy volume by derived name: " + cmd.getVolume().getPath() + "-flat.vmdk");
+ }
+ dsMo.deleteFile(cmd.getVolume().getPath() + "-flat.vmdk", morDc, true);
}
} else {
if (s_logger.isInfoEnabled()) {
s_logger.info("Destroy volume by original name: " + cmd.getVolume().getPath() + ".vmdk");
}
- dsMo.deleteFile(cmd.getVolume().getPath() + ".vmdk", morDc, true);
+ dsMo.deleteFile(cmd.getVolume().getPath() + ".vmdk", morDc, true);
+
+ if (s_logger.isInfoEnabled()) {
+ s_logger.info("Destroy volume by derived name: " + cmd.getVolume().getPath() + "-flat.vmdk");
+ }
+ dsMo.deleteFile(cmd.getVolume().getPath() + "-flat.vmdk", morDc, true);
}
return new Answer(cmd, true, "Success");
diff --git a/server/.classpath b/server/.classpath
index a4df474268d..77a010dd9da 100644
--- a/server/.classpath
+++ b/server/.classpath
@@ -9,5 +9,6 @@
+