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 @@ +