From ddcae8a9306f5f7dd416b859e59fd10094c91551 Mon Sep 17 00:00:00 2001 From: Likitha Shetty Date: Fri, 28 Nov 2014 11:09:01 +0530 Subject: [PATCH] CLOUDSTACK-8118. Root volume migration fails with 'No such disk device' in case of vCenter 5.5 setup. If an exact match is being done while locating disk chain by name, don't trim snapshot postfix appended to the disk name. --- .../hypervisor/vmware/resource/VmwareResource.java | 2 +- .../cloud/hypervisor/vmware/mo/VirtualMachineMO.java | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java index 5a16f03d87a..53cdb998d18 100644 --- a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java +++ b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java @@ -3205,7 +3205,7 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa } private int getVirtualDiskInfo(VirtualMachineMO vmMo, String srcDiskName) throws Exception { - Pair deviceInfo = vmMo.getDiskDevice(srcDiskName, true); + Pair deviceInfo = vmMo.getDiskDevice(srcDiskName, false); if (deviceInfo == null) { throw new Exception("No such disk device: " + srcDiskName); } diff --git a/vmware-base/src/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java b/vmware-base/src/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java index 471b4a8ded5..be39bfb3a5a 100644 --- a/vmware-base/src/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java +++ b/vmware-base/src/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java @@ -1931,10 +1931,13 @@ public class VirtualMachineMO extends BaseMO { DatastoreFile dsSrcFile = new DatastoreFile(vmdkDatastorePath); String srcBaseName = dsSrcFile.getFileBaseName(); + String trimmedSrcBaseName = trimSnapshotDeltaPostfix(srcBaseName); - srcBaseName = trimSnapshotDeltaPostfix(srcBaseName); - - s_logger.info("Look for disk device info from volume : " + vmdkDatastorePath + " with trimmed base name: " + srcBaseName); + if (matchExactly) { + s_logger.info("Look for disk device info from volume : " + vmdkDatastorePath + " with base name: " + srcBaseName); + } else { + s_logger.info("Look for disk device info from volume : " + vmdkDatastorePath + " with trimmed base name: " + trimmedSrcBaseName); + } if (devices != null && devices.size() > 0) { for (VirtualDevice device : devices) { @@ -1957,7 +1960,7 @@ public class VirtualMachineMO extends BaseMO { return new Pair((VirtualDisk)device, deviceNumbering); } } else { - if (backingBaseName.contains(srcBaseName)) { + if (backingBaseName.contains(trimmedSrcBaseName)) { String deviceNumbering = getDeviceBusName(devices, device); s_logger.info("Disk backing : " + diskBackingInfo.getFileName() + " matches ==> " + deviceNumbering);