Updated Branches: refs/heads/master 0be4a685e -> 102331c62
CLOUDSTACK-5122. [VMware] During upgrade from 4.1 system vms don't come up with 'ROOT-x-y VMDK file not found' exception. During VM start, if VM already exists and CS finds a matching disk in storage for each of the existing disk then the VM is reconfigured with VM's existing disk information. This existing disk information for a VM is got from vCenter. CS checks if a matching disk exists in storage by checking if there is a disk in storage whose name atleast partially matches with the name of the existing disk. Post 4.1, Volume path has been changed to ROOT-<instanceId> from ROOT-<instanceId>-<volumeId>. Hence in case of an upgraded setup (pre 4.1 to 4.2) during search for an existing disk in storage even though ROOT-<instanceId>-<volumeId> has been deleted, CS does a postive match of the old existing disk because of the partial match with the new disk ROOT-<instanceId> that exists in storage. And so when VM is being powered on by vCenter it looks for ROOT-<instanceId>-<volumeId> and fails to power on. Solution - While looking for a VM's matching disk in storage, instead of checking if a disk with a partial match exists check if a disk with the exact name exists. Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/29c36b2a Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/29c36b2a Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/29c36b2a Branch: refs/heads/master Commit: 29c36b2ad20a65085f76f529a0e0007c99310489 Parents: 0be4a68 Author: Likitha Shetty <[email protected]> Authored: Fri Nov 22 16:43:17 2013 +0530 Committer: Likitha Shetty <[email protected]> Committed: Mon Nov 25 15:52:24 2013 +0530 ---------------------------------------------------------------------- .../cloud/hypervisor/vmware/mo/VirtualMachineDiskInfoBuilder.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/29c36b2a/vmware-base/src/com/cloud/hypervisor/vmware/mo/VirtualMachineDiskInfoBuilder.java ---------------------------------------------------------------------- diff --git a/vmware-base/src/com/cloud/hypervisor/vmware/mo/VirtualMachineDiskInfoBuilder.java b/vmware-base/src/com/cloud/hypervisor/vmware/mo/VirtualMachineDiskInfoBuilder.java index baddfc0..9e9fa89 100644 --- a/vmware-base/src/com/cloud/hypervisor/vmware/mo/VirtualMachineDiskInfoBuilder.java +++ b/vmware-base/src/com/cloud/hypervisor/vmware/mo/VirtualMachineDiskInfoBuilder.java @@ -88,7 +88,7 @@ public class VirtualMachineDiskInfoBuilder { for (String backing : chain) { DatastoreFile file = new DatastoreFile(backing); - if (file.getFileBaseName().contains(diskBackingFileBaseName)) + if (file.getFileBaseName().equals(diskBackingFileBaseName)) return true; }
