mirror of
				https://github.com/apache/cloudstack.git
				synced 2025-10-26 08:42:29 +01:00 
			
		
		
		
	Added option to reload VM during in RevertToVMSnapshotCommand (only in VMWare as I don't believe that XenServer supports anything similar)
Signed-off-by: Edison Su <sudison@gmail.com>
This commit is contained in:
		
							parent
							
								
									99acb97854
								
							
						
					
					
						commit
						d0123f9594
					
				| @ -18,7 +18,6 @@ package com.cloud.agent.api; | ||||
| 
 | ||||
| import java.util.List; | ||||
| 
 | ||||
| import com.cloud.agent.api.to.VolumeTO; | ||||
| import org.apache.cloudstack.storage.to.VolumeObjectTO; | ||||
| 
 | ||||
| public class RevertToVMSnapshotCommand extends VMSnapshotBaseCommand { | ||||
| @ -27,4 +26,18 @@ public class RevertToVMSnapshotCommand extends VMSnapshotBaseCommand { | ||||
|         super(vmName, snapshot, volumeTOs, guestOSType); | ||||
|     } | ||||
| 
 | ||||
|     public RevertToVMSnapshotCommand(String vmName, VMSnapshotTO snapshot, List<VolumeObjectTO> volumeTOs, String guestOSType, boolean reloadVm) { | ||||
|         this(vmName, snapshot, volumeTOs, guestOSType); | ||||
|         setReloadVm(reloadVm); | ||||
|     } | ||||
| 
 | ||||
|     private boolean reloadVm = false; | ||||
| 
 | ||||
|     public boolean isReloadVm() { | ||||
|         return reloadVm; | ||||
|     } | ||||
| 
 | ||||
|     public void setReloadVm(boolean reloadVm) { | ||||
|         this.reloadVm = reloadVm; | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -16,6 +16,23 @@ | ||||
| // under the License. | ||||
| package com.cloud.hypervisor.vmware.manager; | ||||
| 
 | ||||
| import java.io.BufferedWriter; | ||||
| import java.io.File; | ||||
| import java.io.FileInputStream; | ||||
| import java.io.FileOutputStream; | ||||
| import java.io.OutputStreamWriter; | ||||
| import java.rmi.RemoteException; | ||||
| import java.util.ArrayList; | ||||
| import java.util.HashMap; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| import java.util.Properties; | ||||
| import java.util.UUID; | ||||
| 
 | ||||
| import org.apache.cloudstack.storage.to.TemplateObjectTO; | ||||
| import org.apache.cloudstack.storage.to.VolumeObjectTO; | ||||
| import org.apache.log4j.Logger; | ||||
| 
 | ||||
| import com.cloud.agent.api.Answer; | ||||
| import com.cloud.agent.api.BackupSnapshotAnswer; | ||||
| import com.cloud.agent.api.BackupSnapshotCommand; | ||||
| @ -70,22 +87,6 @@ import com.vmware.vim25.HostDatastoreBrowserSearchSpec; | ||||
| import com.vmware.vim25.ManagedObjectReference; | ||||
| import com.vmware.vim25.TaskInfo; | ||||
| import com.vmware.vim25.VirtualDisk; | ||||
| import org.apache.cloudstack.storage.to.TemplateObjectTO; | ||||
| import org.apache.cloudstack.storage.to.VolumeObjectTO; | ||||
| import org.apache.log4j.Logger; | ||||
| 
 | ||||
| import java.io.BufferedWriter; | ||||
| import java.io.File; | ||||
| import java.io.FileInputStream; | ||||
| import java.io.FileOutputStream; | ||||
| import java.io.OutputStreamWriter; | ||||
| import java.rmi.RemoteException; | ||||
| import java.util.ArrayList; | ||||
| import java.util.HashMap; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| import java.util.Properties; | ||||
| import java.util.UUID; | ||||
| 
 | ||||
| public class VmwareStorageManagerImpl implements VmwareStorageManager { | ||||
|     @Override | ||||
| @ -332,7 +333,7 @@ public class VmwareStorageManagerImpl implements VmwareStorageManager { | ||||
| 
 | ||||
|                         workerVMName = hostService.getWorkerName(context, cmd, 0); | ||||
|                         vmMo = HypervisorHostHelper.createWorkerVM(hyperHost, dsMo, workerVMName); | ||||
|                          | ||||
| 
 | ||||
|                         if (vmMo == null) { | ||||
|                             throw new Exception("Failed to find the newly create or relocated VM. vmName: " + workerVMName); | ||||
|                         } | ||||
| @ -1056,7 +1057,7 @@ public class VmwareStorageManagerImpl implements VmwareStorageManager { | ||||
|                 // create a dummy worker vm for attaching the volume | ||||
|                 DatastoreMO dsMo = new DatastoreMO(hyperHost.getContext(), morDs); | ||||
|                 workerVm = HypervisorHostHelper.createWorkerVM(hyperHost, dsMo, workerVmName); | ||||
|                  | ||||
| 
 | ||||
|                 if (workerVm == null) { | ||||
|                     String msg = "Unable to create worker VM to execute CopyVolumeCommand"; | ||||
|                     s_logger.error(msg); | ||||
| @ -1449,6 +1450,9 @@ public class VmwareStorageManagerImpl implements VmwareStorageManager { | ||||
|                 s_logger.debug(msg); | ||||
|                 return new RevertToVMSnapshotAnswer(cmd, false, msg); | ||||
|             } else { | ||||
|                 if (cmd.isReloadVm()) { | ||||
|                     vmMo.reload(); | ||||
|                 } | ||||
|                 boolean result = false; | ||||
|                 if (snapshotName != null) { | ||||
|                     ManagedObjectReference morSnapshot = vmMo.getSnapshotMor(snapshotName); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user