Greg Padgett has uploaded a new change for review.

Change subject: [WIP] vdsbroker: introduce GetVolumeChainVDSCommand
......................................................................

[WIP] vdsbroker: introduce GetVolumeChainVDSCommand

This calls a new VDSM verb, getVolumeChain, which will return the
current volume chain for a VM using QEMU if the VM is running, or by
scanning the volumes on disk if the VM is down.

Change-Id: I467ec16df9d0509f133fc3b19365fb294f701cc5
Bug-Url: https://bugzilla.redhat.com/??????
Signed-off-by: Greg Padgett <gpadg...@redhat.com>
---
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/GetVolumeChainVDSCommandParameters.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java
A 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/GetVolumeChainVDSCommand.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/VdsServerConnector.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java
6 files changed, 119 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/08/26908/1

diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/GetVolumeChainVDSCommandParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/GetVolumeChainVDSCommandParameters.java
new file mode 100644
index 0000000..ce3e29f
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/GetVolumeChainVDSCommandParameters.java
@@ -0,0 +1,53 @@
+package org.ovirt.engine.core.common.vdscommands;
+
+import org.ovirt.engine.core.compat.Guid;
+
+public class GetVolumeChainVDSCommandParameters extends 
VdsAndVmIDVDSParametersBase {
+    private Guid storagePoolId;
+    private Guid storageDomainId;
+    private Guid imageGroupId;
+    private Guid imageId;
+
+    private GetVolumeChainVDSCommandParameters() {}
+
+    public GetVolumeChainVDSCommandParameters(
+            Guid vdsId,
+            Guid vmId,
+            Guid storagePoolId,
+            Guid storageDomainId,
+            Guid imageGroupId,
+            Guid imageId) {
+        super(vdsId, vmId);
+        this.storagePoolId = storagePoolId;
+        this.storageDomainId = storageDomainId;
+        this.imageGroupId = imageGroupId;
+        this.imageId = imageId;
+    }
+
+    public Guid getStoragePoolId() {
+        return storagePoolId;
+    }
+
+    public Guid getStorageDomainId() {
+        return storageDomainId;
+    }
+
+    public Guid getImageGroupId() {
+        return imageGroupId;
+    }
+
+    public Guid getImageId() {
+        return imageId;
+    }
+
+    @Override
+    public String toString() {
+        return new StringBuilder("MergeVDSCommandParameters{")
+                .append(super.toString())
+                .append(", storagePoolId=").append(storagePoolId)
+                .append(", storageDomainId=").append(storageDomainId)
+                .append(", imageGroupId=").append(imageGroupId)
+                .append(", imageId=").append(imageId)
+                .append('}').toString();
+    }
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java
index 92368f8..9a81060 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java
@@ -161,7 +161,8 @@
     SetNumberOfCpus("org.ovirt.engine.core.vdsbroker"),
     List("org.ovirt.engine.core.vdsbroker.vdsbroker"),           // get a list 
of VMs with status only
     GetVmStats("org.ovirt.engine.core.vdsbroker.vdsbroker"),     // get a VM 
with full data and statistics
-    GetAllVmStats("org.ovirt.engine.core.vdsbroker.vdsbroker");  // get a list 
of VMs with full data and statistics
+    GetAllVmStats("org.ovirt.engine.core.vdsbroker.vdsbroker"),  // get a list 
of VMs with full data and statistics
+    GetVolumeChain("org.ovirt.engine.core.vdsbroker.vdsbroker");
 
     String packageName;
 
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/GetVolumeChainVDSCommand.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/GetVolumeChainVDSCommand.java
new file mode 100644
index 0000000..22cd5ef
--- /dev/null
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/GetVolumeChainVDSCommand.java
@@ -0,0 +1,43 @@
+package org.ovirt.engine.core.vdsbroker.vdsbroker;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import 
org.ovirt.engine.core.common.vdscommands.GetVolumeChainVDSCommandParameters;
+import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.vdsbroker.irsbroker.ImagesListReturnForXmlRpc;
+
+public class GetVolumeChainVDSCommand<P extends 
GetVolumeChainVDSCommandParameters> extends VdsBrokerCommand<P> {
+    private ImagesListReturnForXmlRpc mImagesListReturn;
+
+    public GetVolumeChainVDSCommand(P parameters) {
+        super(parameters);
+    }
+
+    @Override
+    protected void executeVdsBrokerCommand() {
+        mImagesListReturn = getBroker().getVolumeChain(
+                getParameters().getImageGroupId().toString(),
+                getParameters().getStoragePoolId().toString(),
+                getParameters().getStorageDomainId().toString(),
+                getParameters().getImageId().toString(),
+                getParameters().getVmId().toString());
+        proceedProxyReturnValue();
+
+        Set<Guid> returnImages = new HashSet<>();
+        for (String str : mImagesListReturn.getImageList()) {
+            returnImages.add(Guid.createGuidFromString(str));
+        }
+        setReturnValue(returnImages);
+    }
+
+    @Override
+    protected StatusForXmlRpc getReturnStatus() {
+        return mImagesListReturn.mStatus;
+    }
+
+    @Override
+    protected Object getReturnValueFromBroker() {
+        return mImagesListReturn;
+    }
+}
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 02731db..2f1f81f 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
@@ -17,6 +17,7 @@
 import 
org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumeTaskReturnForXmlRpc;
 import 
org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumesListReturnForXmlRpc;
 import org.ovirt.engine.core.vdsbroker.irsbroker.FileStatsReturnForXmlRpc;
+import org.ovirt.engine.core.vdsbroker.irsbroker.ImagesListReturnForXmlRpc;
 import org.ovirt.engine.core.vdsbroker.irsbroker.OneUuidReturnForXmlRpc;
 import 
org.ovirt.engine.core.vdsbroker.irsbroker.StoragePoolInfoReturnForXmlRpc;
 
@@ -195,6 +196,9 @@
     StatusOnlyReturnForXmlRpc merge(String vmId, Map<String, String> drive,
             String baseVolUUID, String topVolUUID, String bandwidth, String 
jobUUID);
 
+    ImagesListReturnForXmlRpc getVolumeChain(String imageId, String 
storagePoolId, String storageDomainId,
+            String leafVolumeId, String vmId);
+
     // Gluster vdsm Commands
     OneUuidReturnForXmlRpc glusterVolumeCreate(String volumeName,
             String[] brickList,
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 3e155c6..bdcfcee 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
@@ -173,6 +173,9 @@
     public Map<String, Object> merge(String vmId, Map<String, String> drive,
             String baseVolUUID, String topVolUUID, String bandwidth, String 
jobUUID);
 
+    public Map<String, Object> getVolumeChain(String imageId, String 
storagePoolId,
+            String storageDomainId, String leafVolumeId, String vmId);
+
     // Gluster vdsm commands
     public Map<String, Object> glusterVolumeCreate(String volumeName,
             String[] brickList,
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 81fe3bf..d1c1fd5 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
@@ -19,6 +19,7 @@
 import 
org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumeTaskReturnForXmlRpc;
 import 
org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumesListReturnForXmlRpc;
 import org.ovirt.engine.core.vdsbroker.irsbroker.FileStatsReturnForXmlRpc;
+import org.ovirt.engine.core.vdsbroker.irsbroker.ImagesListReturnForXmlRpc;
 import org.ovirt.engine.core.vdsbroker.irsbroker.OneUuidReturnForXmlRpc;
 import 
org.ovirt.engine.core.vdsbroker.irsbroker.StoragePoolInfoReturnForXmlRpc;
 import org.ovirt.engine.core.vdsbroker.xmlrpc.XmlRpcRunTimeException;
@@ -915,6 +916,19 @@
     }
 
     @Override
+    public ImagesListReturnForXmlRpc getVolumeChain(String imageId, String 
storagePoolId,
+            String storageDomainId, String leafVolumeId, String vmId) {
+        try {
+            Map<String, Object> xmlRpcReturnValue = 
vdsServer.getVolumeChain(imageId, storagePoolId,
+                    storageDomainId, leafVolumeId, vmId);
+            ImagesListReturnForXmlRpc wrapper = new 
ImagesListReturnForXmlRpc(xmlRpcReturnValue);
+            return wrapper;
+        } catch (UndeclaredThrowableException ute) {
+            throw new XmlRpcRunTimeException(ute);
+        }
+    }
+
+    @Override
     public OneUuidReturnForXmlRpc glusterVolumeCreate(String volumeName,
             String[] brickList,
             int replicaCount,


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I467ec16df9d0509f133fc3b19365fb294f701cc5
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Greg Padgett <gpadg...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to