Arik Hadas has uploaded a new change for review.

Change subject: <core | restapi | tools | history | engine | userportal | 
webadmin>: short summary under 50 chars
......................................................................

<core | restapi | tools | history | engine | userportal | webadmin>: short 
summary under 50 chars

Longer description using lines' length under 72 chars.

With multiple paragraphs if necessary.

Change-Id: I17fffcfc989552af17bba2a2717eda088679d41f
Bug-Url: https://bugzilla.redhat.com/??????
Signed-off-by: Arik Hadas <[email protected]>
---
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/CreateAllSnapshotsFromVmParameters.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/Snapshot.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/SnapshotVDSCommandParameters.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SnapshotVDSCommand.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java
7 files changed, 97 insertions(+), 9 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/80/14180/1

diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/CreateAllSnapshotsFromVmParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/CreateAllSnapshotsFromVmParameters.java
index f6cc9eb..4e701da 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/CreateAllSnapshotsFromVmParameters.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/CreateAllSnapshotsFromVmParameters.java
@@ -26,6 +26,8 @@
 
     /** Used to indicate the type of snapshot to take */
     private SnapshotType snapshotType;
+    /** Flag that indicates whether we should take snapshot for the memory or 
not */
+    private boolean memoryIncluded;
 
     public CreateAllSnapshotsFromVmParameters() {
     }
@@ -39,6 +41,14 @@
         return _description;
     }
 
+    public boolean isMemoryIncluded() {
+        return memoryIncluded;
+    }
+
+    public void setMemoryIncluded(boolean memoryIncluded) {
+        this.memoryIncluded = memoryIncluded;
+    }
+
     public SnapshotType getSnapshotType() {
         return snapshotType;
     }
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/Snapshot.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/Snapshot.java
index c677ed6..7c13b3e 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/Snapshot.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/Snapshot.java
@@ -65,6 +65,11 @@
     private Date creationDate;
 
     /**
+     * The volume that contains the memory dump
+     */
+    private String memoryVolHandle;
+
+    /**
      * A list of the applications which were installed on the guest VM at the 
time of the snapshot (might be
      * <code>null</code>).
      */
@@ -172,6 +177,14 @@
         this.appList = appList;
     }
 
+    public String getMemoryVolHandle() {
+        return memoryVolHandle;
+    }
+
+    public void setMemoryVolHandle(String memoryVolHandle) {
+        this.memoryVolHandle = memoryVolHandle;
+    }
+
     @Override
     public int hashCode() {
         final int prime = 31;
@@ -180,6 +193,7 @@
         result = prime * result + ((appList == null) ? 0 : appList.hashCode());
         result = prime * result + ((creationDate == null) ? 0 : 
creationDate.hashCode());
         result = prime * result + ((description == null) ? 0 : 
description.hashCode());
+        result = prime * result + ((memoryVolHandle == null) ? 0 : 
memoryVolHandle.hashCode());
         result = prime * result + ((status == null) ? 0 : status.hashCode());
         result = prime * result + ((type == null) ? 0 : type.hashCode());
         result = prime * result + ((vmConfiguration == null) ? 0 : 
vmConfiguration.hashCode());
@@ -203,6 +217,7 @@
                 && ObjectUtils.objectsEqual(appList, other.appList)
                 && ObjectUtils.objectsEqual(creationDate, other.creationDate)
                 && ObjectUtils.objectsEqual(description, other.description)
+                && ObjectUtils.objectsEqual(memoryVolHandle, 
other.memoryVolHandle)
                 && status == other.status
                 && type == other.type
                 && ObjectUtils.objectsEqual(vmConfiguration, 
other.vmConfiguration)
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/SnapshotVDSCommandParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/SnapshotVDSCommandParameters.java
index 4ecbf67..9b5aa83 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/SnapshotVDSCommandParameters.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/SnapshotVDSCommandParameters.java
@@ -6,14 +6,30 @@
 import org.ovirt.engine.core.compat.Guid;
 
 public class SnapshotVDSCommandParameters extends VdsAndVmIDVDSParametersBase {
+    /** Those are the disks images that snapshot should be taken for */
     private List<DiskImage> images;
+    /** This is the image to which the memory would be dump to */
+    private DiskImage memoryImage;
 
     public SnapshotVDSCommandParameters(Guid vdsId, Guid vmId, List<DiskImage> 
images) {
         super(vdsId, vmId);
         this.images = images;
     }
 
+    public SnapshotVDSCommandParameters(Guid vdsId, Guid vmId, List<DiskImage> 
images, DiskImage memoryImage) {
+        this(vdsId, vmId, images);
+        this.memoryImage = memoryImage;
+    }
+
     public List<DiskImage> getImages() {
         return images;
     }
+
+    public DiskImage getMemoryImage() {
+        return memoryImage;
+    }
+
+    public boolean isMemoryIncluded() {
+        return memoryImage != null;
+    }
 }
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java
index 41fe126..27eeff0 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java
@@ -181,7 +181,25 @@
 
     FutureTask<Map<String, Object>> poll();
 
-    StatusOnlyReturnForXmlRpc snapshot(String vmId, Map<String, String>[] 
snapParams);
+    /**
+     * Called to create snapshot for the given disks that belong to the given 
VM
+     *
+     * @param vmId - id of the VM on which we're going to create the snapshot
+     * @param diskImages -the images for which we're going to take snapshots
+     * @return operation status
+     */
+    StatusOnlyReturnForXmlRpc snapshot(String vmId, Map<String, String>[] 
diskImages);
+
+    /**
+     * Called to create snapshot for the given disks that belong to the given 
VM
+     * plus taking a snapshot of the memory (RAM) of the VM
+     *
+     * @param vmId - id of the VM on which we're going to create the snapshot
+     * @param diskImages -the images for which we're going to take snapshots
+     * @param memoryImage - the image which will hold the memory dump
+     * @return operation status
+     */
+    StatusOnlyReturnForXmlRpc snapshot(String vmId, Map<String, String>[] 
diskImages, Map<String, String> memoryImage);
 
     // Gluster vdsm Commands
     OneUuidReturnForXmlRpc glusterVolumeCreate(String volumeName,
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SnapshotVDSCommand.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SnapshotVDSCommand.java
index 9787b0c..e867184 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SnapshotVDSCommand.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SnapshotVDSCommand.java
@@ -21,24 +21,38 @@
 
     @Override
     protected void ExecuteVdsBrokerCommand() {
-        status = getBroker().snapshot(getParameters().getVmId().toString(), 
createSnapshotParameters());
+        String vmId = getParameters().getVmId().toString();
+        status = getParameters().isMemoryIncluded() ?
+                getBroker().snapshot(vmId, createDisksMap())
+                : getBroker().snapshot(vmId, createDisksMap(), 
createMemoryMap());
+
         ProceedProxyReturnValue();
     }
 
-    private Map<String, String>[] createSnapshotParameters() {
+    private Map<String, String>[] createDisksMap() {
         @SuppressWarnings("unchecked")
         Map<String, String>[] result = new 
HashMap[getParameters().getImages().size()];
 
         for (int i = 0; i < result.length; i++) {
             DiskImage image = getParameters().getImages().get(i);
             Map<String, String> imageParams = new HashMap<String, String>();
-            imageParams.put("domainID", 
image.getStorageIds().get(0).toString());
-            imageParams.put("imageID", image.getimage_group_id().toString());
+            imageParams.put("domainID",     
image.getStorageIds().get(0).toString());
+            imageParams.put("imageID",      
image.getimage_group_id().toString());
             imageParams.put("baseVolumeID", image.getParentId().toString());
-            imageParams.put("volumeID", image.getImageId().toString());
+            imageParams.put("volumeID",     image.getImageId().toString());
             result[i] = imageParams;
         }
 
         return result;
     }
+
+    private Map<String, String> createMemoryMap() {
+        Map<String, String> result = new HashMap<String, String>();
+        DiskImage memoryImage = getParameters().getMemoryImage();
+        result.put("domainID",     
memoryImage.getStorageIds().get(0).toString());
+        result.put("imageID",      memoryImage.getimage_group_id().toString());
+        result.put("baseVolumeID", memoryImage.getParentId().toString());
+        result.put("volumeID",     memoryImage.getImageId().toString());
+        return result;
+    }
 }
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java
index 70b2e59..1f70b8f 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java
@@ -166,7 +166,9 @@
 
     public Map<String, Object> vmUpdateDevice(String vmId, Map<String, Object> 
device);
 
-    Map<String, Object> snapshot(String vmId, Map<String, String>[] 
snapParams);
+    Map<String, Object> snapshot(String vmId, Map<String, String>[] 
diskImages);
+
+    Map<String, Object> snapshot(String vmId, Map<String, String>[] 
diskImages, Map<String, String> memoryImage);
 
     // Gluster vdsm commands
     public Map<String, Object> glusterVolumeCreate(String volumeName,
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java
index b7d8764..fc7a52d 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java
@@ -902,9 +902,22 @@
     }
 
     @Override
-    public StatusOnlyReturnForXmlRpc snapshot(String vmId, Map<String, 
String>[] snapParams) {
+    public StatusOnlyReturnForXmlRpc snapshot(String vmId, Map<String, 
String>[] diskImages) {
         try {
-            Map<String, Object> xmlRpcReturnValue = vdsServer.snapshot(vmId, 
snapParams);
+            Map<String, Object> xmlRpcReturnValue = vdsServer.snapshot(vmId, 
diskImages);
+            StatusOnlyReturnForXmlRpc wrapper = new 
StatusOnlyReturnForXmlRpc(xmlRpcReturnValue);
+            return wrapper;
+        } catch (UndeclaredThrowableException ute) {
+            throw new XmlRpcRunTimeException(ute);
+        }
+    }
+
+    @Override
+    public StatusOnlyReturnForXmlRpc snapshot(String vmId,
+            Map<String, String>[] diskImages,
+            Map<String, String> memoryImage) {
+        try {
+            Map<String, Object> xmlRpcReturnValue = vdsServer.snapshot(vmId, 
diskImages, memoryImage);
             StatusOnlyReturnForXmlRpc wrapper = new 
StatusOnlyReturnForXmlRpc(xmlRpcReturnValue);
             return wrapper;
         } catch (UndeclaredThrowableException ute) {


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I17fffcfc989552af17bba2a2717eda088679d41f
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