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
