From 24499deb43593b4829ec31a730f63f980b616f29 Mon Sep 17 00:00:00 2001 From: Fang Wang Date: Thu, 27 Jun 2013 15:31:28 -0700 Subject: [PATCH] CLOUDSTACK-2384: Template created from snapshot error. In DB, the backedUpSnapshotUuid format got changed. This messed up the vmdk file path in template creation from snapshot --- .../vmware/manager/VmwareStorageManagerImpl.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java index 4ae0f305d99..7b01d061d49 100644 --- a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java +++ b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java @@ -687,7 +687,10 @@ public class VmwareStorageManagerImpl implements VmwareStorageManager { String result; Script command; String templateVMDKName = ""; - String snapshotFullVMDKName = snapshotRoot + "/"; + //String snapshotFullVMDKName = snapshotRoot + "/"; + // the backedUpSnapshotUuid field currently has the format: uuid/uuid. so we need to extract the uuid out + String backupSSUuid = backedUpSnapshotUuid.substring(0, backedUpSnapshotUuid.indexOf('/')); + String snapshotFullVMDKName = snapshotRoot + "/" + backupSSUuid + "/"; synchronized(installPath.intern()) { command = new Script(false, "mkdir", _timeout, s_logger); @@ -742,12 +745,15 @@ public class VmwareStorageManagerImpl implements VmwareStorageManager { throw new Exception(msg); } - File snapshotdir = new File(snapshotRoot); + s_logger.info("vmdkfile parent dir: " + snapshotFullVMDKName); + File snapshotdir = new File(snapshotFullVMDKName); + // File snapshotdir = new File(snapshotRoot); File[] ssfiles = snapshotdir.listFiles(); // List filenames = new ArrayList(); for (int i = 0; i < ssfiles.length; i++) { String vmdkfile = ssfiles[i].getName(); - if(vmdkfile.toLowerCase().startsWith(backedUpSnapshotUuid) && vmdkfile.toLowerCase().endsWith(".vmdk")) { + s_logger.info("vmdk file name: " + vmdkfile); + if(vmdkfile.toLowerCase().startsWith(backupSSUuid) && vmdkfile.toLowerCase().endsWith(".vmdk")) { snapshotFullVMDKName += vmdkfile; templateVMDKName += vmdkfile; break;