CLOUDSTACK-4518: make folder sync resilience with possible runtime situation

This commit is contained in:
Kelven Yang 2013-08-27 16:28:16 -07:00
parent 687e87faa7
commit 8326dfb76f
1 changed files with 7 additions and 4 deletions

View File

@ -129,17 +129,20 @@ public class VmwareStorageLayoutHelper {
vmdkLinkedCloneModePair[1], dcMo.getMor(), true); vmdkLinkedCloneModePair[1], dcMo.getMor(), true);
} }
s_logger.info("sync " + vmdkLinkedCloneModeLegacyPair[0] + "->" + vmdkLinkedCloneModePair[0]); if(ds.fileExists(vmdkLinkedCloneModeLegacyPair[0])) {
ds.moveDatastoreFile(vmdkLinkedCloneModeLegacyPair[0], dcMo.getMor(), ds.getMor(), s_logger.info("sync " + vmdkLinkedCloneModeLegacyPair[0] + "->" + vmdkLinkedCloneModePair[0]);
vmdkLinkedCloneModePair[0], dcMo.getMor(), true); ds.moveDatastoreFile(vmdkLinkedCloneModeLegacyPair[0], dcMo.getMor(), ds.getMor(),
vmdkLinkedCloneModePair[0], dcMo.getMor(), true);
}
// Note: we will always return a path
return vmdkLinkedCloneModePair[0]; return vmdkLinkedCloneModePair[0];
} }
public static void syncVolumeToRootFolder(DatacenterMO dcMo, DatastoreMO ds, String vmdkName) throws Exception { public static void syncVolumeToRootFolder(DatacenterMO dcMo, DatastoreMO ds, String vmdkName) throws Exception {
String fileDsFullPath = ds.searchFileInSubFolders(vmdkName + ".vmdk", false); String fileDsFullPath = ds.searchFileInSubFolders(vmdkName + ".vmdk", false);
if(fileDsFullPath == null) if(fileDsFullPath == null)
throw new Exception("Unable to find " + vmdkName + ".vmdk in datastore: " + ds.getName()); return;
DatastoreFile srcDsFile = new DatastoreFile(fileDsFullPath); DatastoreFile srcDsFile = new DatastoreFile(fileDsFullPath);
String companionFilePath = srcDsFile.getCompanionPath(vmdkName + "-flat.vmdk"); String companionFilePath = srcDsFile.getCompanionPath(vmdkName + "-flat.vmdk");