Updated Branches:
  refs/heads/4.2-forward 4ab2a741f -> 5e52a86a2

CLOUDSTACK-4659: Fix the regression caused by worker VM consolidation for GC 
purpose


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/5e52a86a
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/5e52a86a
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/5e52a86a

Branch: refs/heads/4.2-forward
Commit: 5e52a86a2ac8783141c99e8ab34a96fb21b8826a
Parents: 4ab2a74
Author: Kelven Yang <[email protected]>
Authored: Sun Sep 15 11:39:32 2013 -0700
Committer: Kelven Yang <[email protected]>
Committed: Sun Sep 15 11:39:32 2013 -0700

----------------------------------------------------------------------
 .../resource/VmwareStorageProcessor.java        | 24 ++++++--------------
 .../hypervisor/vmware/mo/VirtualMachineMO.java  |  9 ++++----
 2 files changed, 12 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5e52a86a/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java
----------------------------------------------------------------------
diff --git 
a/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java
 
b/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java
index 5dad90a..05ffec9 100644
--- 
a/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java
+++ 
b/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java
@@ -660,15 +660,10 @@ public class VmwareStorageProcessor implements 
StorageProcessor {
             }
 
             // 4 MB is the minimum requirement for VM memory in VMware
-            vmMo.cloneFromCurrentSnapshot(workerVmName, 0, 4, 
volumeDeviceInfo.second(),
+            Pair<VirtualMachineMO, String[]> cloneResult = 
vmMo.cloneFromCurrentSnapshot(workerVmName, 0, 4, volumeDeviceInfo.second(),
                     
VmwareHelper.getDiskDeviceDatastore(volumeDeviceInfo.first()));
-            clonedVm = vmMo.getRunningHost().findVmOnHyperHost(workerVmName);
-            if(clonedVm == null) {
-                String msg = "Unable to create dummy VM to export volume. 
volume path: " + volumePath;
-                s_logger.error(msg);
-                throw new Exception(msg);
-            }
-
+            clonedVm = cloneResult.first();
+            
             clonedVm.exportVm(secondaryMountPoint + "/" + installPath, 
templateUniqueName, true, false);
 
             long physicalSize = new File(installFullPath + "/" + 
templateUniqueName + ".ova").length();
@@ -984,17 +979,12 @@ public class VmwareStorageProcessor implements 
StorageProcessor {
             }
 
             // 4 MB is the minimum requirement for VM memory in VMware
-            String disks[] = vmMo.cloneFromCurrentSnapshot(workerVmName, 0, 4, 
volumeDeviceInfo.second(),
-                    
VmwareHelper.getDiskDeviceDatastore(volumeDeviceInfo.first()));
-            clonedVm = vmMo.getRunningHost().findVmOnHyperHost(workerVmName);
-            if(clonedVm == null) {
-                String msg = "Unable to create dummy VM to export volume. 
volume path: " + volumePath;
-                s_logger.error(msg);
-                throw new Exception(msg);
-            }
+            Pair<VirtualMachineMO, String[]> cloneResult = 
vmMo.cloneFromCurrentSnapshot(workerVmName, 0, 4, volumeDeviceInfo.second(),
+                VmwareHelper.getDiskDeviceDatastore(volumeDeviceInfo.first()));
+            clonedVm = cloneResult.first();
+            String disks[] = cloneResult.second();
 
             clonedVm.exportVm(exportPath, exportName, false, false);
-            
             return new Pair<String, String[]>(volumeDeviceInfo.second(), 
disks);
         } finally {
             if(clonedVm != null) {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5e52a86a/vmware-base/src/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java
----------------------------------------------------------------------
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 a6df40e..f64c3c0 100644
--- a/vmware-base/src/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java
+++ b/vmware-base/src/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java
@@ -1545,15 +1545,15 @@ public class VirtualMachineMO extends BaseMO {
        }
 
        // return the disk chain (VMDK datastore paths) for cloned snapshot
-       public String[] cloneFromCurrentSnapshot(String clonedVmName, int 
cpuSpeedMHz, int memoryMb, String diskDevice,
+       public Pair<VirtualMachineMO, String[]> cloneFromCurrentSnapshot(String 
clonedVmName, int cpuSpeedMHz, int memoryMb, String diskDevice,
                ManagedObjectReference morDs) throws Exception {
                assert(morDs != null);
                String[] disks = 
getCurrentSnapshotDiskChainDatastorePaths(diskDevice);
-               cloneFromDiskChain(clonedVmName, cpuSpeedMHz, memoryMb, disks, 
morDs);
-               return disks;
+               VirtualMachineMO clonedVm = cloneFromDiskChain(clonedVmName, 
cpuSpeedMHz, memoryMb, disks, morDs);
+               return new Pair<VirtualMachineMO, String[]>(clonedVm, disks);
        }
 
-       public void cloneFromDiskChain(String clonedVmName, int cpuSpeedMHz, 
int memoryMb,
+       public VirtualMachineMO cloneFromDiskChain(String clonedVmName, int 
cpuSpeedMHz, int memoryMb,
                String[] disks, ManagedObjectReference morDs) throws Exception {
                assert(disks != null);
            assert(disks.length >= 1);
@@ -1576,6 +1576,7 @@ public class VirtualMachineMO extends BaseMO {
            vmConfigSpec.getDeviceChange().add(deviceConfigSpec);
            clonedVmMo.configureVm(vmConfigSpec);
            bSuccess = true;
+           return clonedVmMo;
                } finally {
                    if(!bSuccess) {
                        clonedVmMo.detachAllDisks();

Reply via email to