Arik Hadas has uploaded a new change for review.

Change subject: core: [WIP] restore memory from snapshot on run vm
......................................................................

core: [WIP] restore memory from snapshot on run vm

If we're going to run a VM which is not suspended and its active
snapshot contains memory, we set the memory volume that the active
snapshot points to as the initial memory state of the VM.

Change-Id: Id382ff479827af96fc529b57ec0ea1b0b7d21818
Signed-off-by: Arik Hadas <[email protected]>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilderBase.java
2 files changed, 11 insertions(+), 5 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/60/14860/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java
index 03d6c5e..bdc5b51 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java
@@ -37,6 +37,7 @@
 import org.ovirt.engine.core.common.businessentities.Entities;
 import org.ovirt.engine.core.common.businessentities.ImageFileType;
 import org.ovirt.engine.core.common.businessentities.RepoFileMetaData;
+import org.ovirt.engine.core.common.businessentities.Snapshot;
 import org.ovirt.engine.core.common.businessentities.Snapshot.SnapshotType;
 import org.ovirt.engine.core.common.businessentities.StorageDomain;
 import org.ovirt.engine.core.common.businessentities.StorageDomainStatus;
@@ -62,6 +63,7 @@
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.compat.Version;
 import org.ovirt.engine.core.dal.VdcBllMessages;
+import org.ovirt.engine.core.dal.dbbroker.DbFacade;
 import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogDirector;
 import org.ovirt.engine.core.dal.job.ExecutionMessageDirector;
 import org.ovirt.engine.core.utils.NetworkUtils;
@@ -444,11 +446,17 @@
     }
 
     /**
-     * Initial the parameters for the VDSM command for VM creation
+     * Initial the parameters for the VDSM command of VM creation
      * @return the VDS create VM parameters
      */
     protected CreateVmVDSCommandParameters initVdsCreateVmParams() {
-        return new CreateVmVDSCommandParameters(getVdsId(), getVm());
+        VM vmToBeCreated = getVm();
+        if (vmToBeCreated.getStatus() != VMStatus.Suspended) {
+            Snapshot activeSnapshotOfVmToBeCreated =
+                    
DbFacade.getInstance().getSnapshotDao().get(vmToBeCreated.getId(), 
SnapshotType.ACTIVE);
+            
vmToBeCreated.setHibernationVolHandle(activeSnapshotOfVmToBeCreated.getMemoryVolume());
+        }
+        return new CreateVmVDSCommandParameters(getVdsId(), vmToBeCreated);
     }
 
     @Override
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilderBase.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilderBase.java
index 6b7e672..c156087 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilderBase.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilderBase.java
@@ -16,7 +16,6 @@
 import org.ovirt.engine.core.common.businessentities.Disk;
 import org.ovirt.engine.core.common.businessentities.DisplayType;
 import org.ovirt.engine.core.common.businessentities.VM;
-import org.ovirt.engine.core.common.businessentities.VMStatus;
 import org.ovirt.engine.core.common.businessentities.VmBase;
 import org.ovirt.engine.core.common.businessentities.VmType;
 import 
org.ovirt.engine.core.common.businessentities.comparators.DiskImageByDiskAliasComparator;
@@ -95,8 +94,7 @@
         }
         createInfo.put(VdsProperties.niceLevel,
                 String.valueOf(vm.getNiceLevel()));
-        if (vm.getStatus() == VMStatus.Suspended
-                && !StringUtils.isEmpty(vm.getHibernationVolHandle())) {
+        if (!StringUtils.isEmpty(vm.getHibernationVolHandle())) {
             createInfo.put(VdsProperties.hiberVolHandle,
                     vm.getHibernationVolHandle());
         }


--
To view, visit http://gerrit.ovirt.org/14860
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Id382ff479827af96fc529b57ec0ea1b0b7d21818
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Arik Hadas <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to