Shubhendu Tripathi has uploaded a new change for review.

Change subject: gluster: VDS CMd: Gluster volume rebalance status
......................................................................

gluster: VDS CMd: Gluster volume rebalance status

VDS Command for gluster volume rebalance status

Change-Id: Ia9a5ec48feffac42ec073f2d6f9c91ecd5ef57da
Signed-off-by: Shubhendu Tripathi <[email protected]>
---
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllErrors.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/AbstractGlusterBrokerCommand.java
A 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GetGlusterVolumeRebalanceStatusVDSCommand.java
R 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterTaskInfoReturnForXmlRpc.java
A 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumeRebalanceTaskReturnForXmlRpc.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/StartRebalanceGlusterVolumeVDSCommand.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
M 
frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/VdsmErrors.java
11 files changed, 123 insertions(+), 2 deletions(-)


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

diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllErrors.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllErrors.java
index 1a5f93c..d011c7f 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllErrors.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllErrors.java
@@ -385,6 +385,7 @@
     GlusterHookRemoveFailed(4510),
     GlusterServicesActionFailed(4550),
     GlusterServiceActionNotSupported(4551),
+    GlusterVolumeRebalanceStatusFailed(4552),
 
     UnicodeArgumentException(4900),
 
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 c70959d..dae6666 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
@@ -147,6 +147,7 @@
     AddGlusterHook("org.ovirt.engine.core.vdsbroker.gluster"),
     RemoveGlusterHook("org.ovirt.engine.core.vdsbroker.gluster"),
     ManageGlusterService("org.ovirt.engine.core.vdsbroker.gluster"),
+    GetGlusterVolumeRebalanceStatus("org.ovirt.engine.core.vdsbroker.gluster"),
     GetDiskAlignment("org.ovirt.engine.core.vdsbroker.vdsbroker"),
     ;
 
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/AbstractGlusterBrokerCommand.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/AbstractGlusterBrokerCommand.java
index bebfe6b..ed0d8e1 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/AbstractGlusterBrokerCommand.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/AbstractGlusterBrokerCommand.java
@@ -58,6 +58,7 @@
         case GlusterHookRemoveFailed:
         case GlusterServicesActionFailed:
         case GlusterServiceActionNotSupported:
+        case GlusterVolumeRebalanceStatusFailed:
             // Capture error from gluster command and record failure
             getVDSReturnValue().setVdsError(new VDSError(returnStatus, 
getReturnStatus().mMessage));
             getVDSReturnValue().setSucceeded(false);
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GetGlusterVolumeRebalanceStatusVDSCommand.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GetGlusterVolumeRebalanceStatusVDSCommand.java
new file mode 100644
index 0000000..db3fef2
--- /dev/null
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GetGlusterVolumeRebalanceStatusVDSCommand.java
@@ -0,0 +1,25 @@
+package org.ovirt.engine.core.vdsbroker.gluster;
+
+import 
org.ovirt.engine.core.common.vdscommands.gluster.GlusterVolumeVDSParameters;
+import org.ovirt.engine.core.vdsbroker.vdsbroker.StatusForXmlRpc;
+
+public class GetGlusterVolumeRebalanceStatusVDSCommand <P extends 
GlusterVolumeVDSParameters> extends AbstractGlusterBrokerCommand<P> {
+    private GlusterVolumeRebalanceTaskReturnForXmlRpc result;
+
+    public GetGlusterVolumeRebalanceStatusVDSCommand(P parameters) {
+        super(parameters);
+    }
+
+    @Override
+    protected StatusForXmlRpc getReturnStatus() {
+        return result.mStatus;
+    }
+
+    @Override
+    protected void ExecuteVdsBrokerCommand() {
+        String volumeName = getParameters().getVolumeName();
+        result = getBroker().glusterVolumeRebalanceStatus(volumeName);
+        ProceedProxyReturnValue();
+        setReturnValue(result.getStatusDetails());
+    }
+}
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/GlusterTaskInfoReturnForXmlRpc.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterTaskInfoReturnForXmlRpc.java
similarity index 94%
rename from 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/GlusterTaskInfoReturnForXmlRpc.java
rename to 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterTaskInfoReturnForXmlRpc.java
index a814284..a51b25b 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/GlusterTaskInfoReturnForXmlRpc.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterTaskInfoReturnForXmlRpc.java
@@ -1,4 +1,4 @@
-package org.ovirt.engine.core.vdsbroker.vdsbroker;
+package org.ovirt.engine.core.vdsbroker.gluster;
 
 import java.util.Map;
 
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumeRebalanceTaskReturnForXmlRpc.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumeRebalanceTaskReturnForXmlRpc.java
new file mode 100644
index 0000000..a600aa0
--- /dev/null
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumeRebalanceTaskReturnForXmlRpc.java
@@ -0,0 +1,72 @@
+package org.ovirt.engine.core.vdsbroker.gluster;
+
+import java.util.Map;
+
+import org.ovirt.engine.core.common.asynctasks.gluster.GlusterAsyncTask;
+import org.ovirt.engine.core.common.asynctasks.gluster.GlusterTaskStatus;
+import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeRebalanceStatusDetails;
+import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeRebalanceStatusForNode;
+import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeRebalanceStatusSummary;
+import org.ovirt.engine.core.compat.Guid;
+
+public class GlusterVolumeRebalanceTaskReturnForXmlRpc extends 
GlusterTaskInfoReturnForXmlRpc {
+    private static final String HOST_LIST = "host";
+    private static final String SUMMARY = "summary";
+    private static final String TASK_ID = "taskId";
+    private static final String NODE_NAME = "name";
+    private static final String FILES_MOVED = "filesMoved";
+    private static final String TOTAL_SIZE_MOVED = "totalSizeMoved";
+    private static final String FILES_SCANNED = "filesScanned";
+    private static final String FILES_FAILED = "filesFailed";
+    private static final String STATUS = "status";
+
+    private final GlusterVolumeRebalanceStatusDetails statusDetails = new 
GlusterVolumeRebalanceStatusDetails();
+
+    @SuppressWarnings("unchecked")
+    public GlusterVolumeRebalanceTaskReturnForXmlRpc(Map<String, Object> 
innerMap) {
+        super(innerMap);
+
+        if(innerMap.containsKey(TASK_ID)) {
+            GlusterAsyncTask task = new GlusterAsyncTask();
+            task.setTaskId(new Guid((String)innerMap.get(TASK_ID)));
+            statusDetails.setTask(task);
+        }
+
+        if (innerMap.containsKey(HOST_LIST)) {
+            for (Object nodeStatus : (Object[])innerMap.get(HOST_LIST)) {
+                
statusDetails.getNodeStatusDetails().add(getStatusForNode((Map<String, 
Object>)nodeStatus));
+            }
+        }
+
+        if (innerMap.containsKey(SUMMARY)) {
+            statusDetails.setStatusSummary(getAggregateStatus((Map<String, 
Object>)innerMap.get(SUMMARY)));
+        }
+    }
+
+    private GlusterVolumeRebalanceStatusForNode getStatusForNode(Map<String, 
Object> nodeStatus) {
+        GlusterVolumeRebalanceStatusForNode rebalanceStatusForNode = new 
GlusterVolumeRebalanceStatusForNode();
+        rebalanceStatusForNode.setNodeName((String)nodeStatus.get(NODE_NAME));
+        
rebalanceStatusForNode.setFilesMoved(Integer.parseInt((String)nodeStatus.get(FILES_MOVED)));
+        
rebalanceStatusForNode.setTotalSizeMoved(Long.parseLong((String)nodeStatus.get(TOTAL_SIZE_MOVED)));
+        
rebalanceStatusForNode.setFilesScanned(Integer.parseInt((String)nodeStatus.get(FILES_SCANNED)));
+        
rebalanceStatusForNode.setFilesFailed(Integer.parseInt((String)nodeStatus.get(FILES_FAILED)));
+        
rebalanceStatusForNode.setStatus(GlusterTaskStatus.valueOf((String)nodeStatus.get(STATUS)));
+
+        return rebalanceStatusForNode;
+    }
+
+    private GlusterVolumeRebalanceStatusSummary getAggregateStatus(Map<String, 
Object> aggregateStatus) {
+        GlusterVolumeRebalanceStatusSummary statusSummary = new 
GlusterVolumeRebalanceStatusSummary();
+        
statusSummary.setTotalScannedCount(Integer.parseInt((String)aggregateStatus.get(FILES_SCANNED)));
+        
statusSummary.setTotalRebalancedFiles(Integer.parseInt((String)aggregateStatus.get(FILES_MOVED)));
+        
statusSummary.setFailuresCount(Integer.parseInt((String)aggregateStatus.get(FILES_FAILED)));
+        
statusSummary.setSize(Long.parseLong((String)aggregateStatus.get(TOTAL_SIZE_MOVED)));
+        
statusSummary.setStatus(GlusterTaskStatus.valueOf((String)aggregateStatus.get(STATUS)));
+
+        return statusSummary;
+    }
+
+    public GlusterVolumeRebalanceStatusDetails getStatusDetails() {
+        return statusDetails;
+    }
+}
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/StartRebalanceGlusterVolumeVDSCommand.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/StartRebalanceGlusterVolumeVDSCommand.java
index 62f1cbf..f85b951 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/StartRebalanceGlusterVolumeVDSCommand.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/StartRebalanceGlusterVolumeVDSCommand.java
@@ -2,7 +2,6 @@
 
 import org.ovirt.engine.core.common.asynctasks.gluster.GlusterAsyncTask;
 import 
org.ovirt.engine.core.common.vdscommands.gluster.GlusterVolumeRebalanceVDSParameters;
-import 
org.ovirt.engine.core.vdsbroker.vdsbroker.GlusterTaskInfoReturnForXmlRpc;
 import org.ovirt.engine.core.vdsbroker.vdsbroker.StatusForXmlRpc;
 
 public class StartRebalanceGlusterVolumeVDSCommand<P extends 
GlusterVolumeRebalanceVDSParameters> extends AbstractGlusterBrokerCommand<P> {
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 4d409f5..c2d12b8 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
@@ -9,8 +9,10 @@
 import org.ovirt.engine.core.vdsbroker.gluster.GlusterHooksListReturnForXmlRpc;
 import 
org.ovirt.engine.core.vdsbroker.gluster.GlusterServersListReturnForXmlRpc;
 import org.ovirt.engine.core.vdsbroker.gluster.GlusterServicesReturnForXmlRpc;
+import org.ovirt.engine.core.vdsbroker.gluster.GlusterTaskInfoReturnForXmlRpc;
 import 
org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumeOptionsInfoReturnForXmlRpc;
 import 
org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumeProfileInfoReturnForXmlRpc;
+import 
org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumeRebalanceTaskReturnForXmlRpc;
 import 
org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumeStatusReturnForXmlRpc;
 import 
org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumesListReturnForXmlRpc;
 import org.ovirt.engine.core.vdsbroker.irsbroker.IsoListReturnForXmlRpc;
@@ -257,4 +259,6 @@
     StatusOnlyReturnForXmlRpc glusterHookRemove(String glusterCommand, String 
stage, String hookName);
 
     GlusterServicesReturnForXmlRpc glusterServicesAction(Guid serverId, String 
[] serviceList, String actionType);
+
+    GlusterVolumeRebalanceTaskReturnForXmlRpc 
glusterVolumeRebalanceStatus(String volumeName);
 }
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 9c18928..19f7429 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
@@ -244,4 +244,6 @@
     public Map<String,Object> glusterHookRemove(String glusterCommand, String 
stage, String hookName);
 
     public Map<String, Object> glusterServicesAction(String[] serviceNames, 
String action);
+
+    public Map<String, Object> glusterVolumeRebalanceStatus(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 636db24..3c09d73 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
@@ -11,8 +11,10 @@
 import org.ovirt.engine.core.vdsbroker.gluster.GlusterHooksListReturnForXmlRpc;
 import 
org.ovirt.engine.core.vdsbroker.gluster.GlusterServersListReturnForXmlRpc;
 import org.ovirt.engine.core.vdsbroker.gluster.GlusterServicesReturnForXmlRpc;
+import org.ovirt.engine.core.vdsbroker.gluster.GlusterTaskInfoReturnForXmlRpc;
 import 
org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumeOptionsInfoReturnForXmlRpc;
 import 
org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumeProfileInfoReturnForXmlRpc;
+import 
org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumeRebalanceTaskReturnForXmlRpc;
 import 
org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumeStatusReturnForXmlRpc;
 import 
org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumesListReturnForXmlRpc;
 import org.ovirt.engine.core.vdsbroker.irsbroker.IsoListReturnForXmlRpc;
@@ -1244,6 +1246,17 @@
     }
 
     @Override
+    public GlusterVolumeRebalanceTaskReturnForXmlRpc 
glusterVolumeRebalanceStatus(String volumeName) {
+        try {
+            Map<String, Object> xmlRpcReturnValue = 
vdsServer.glusterVolumeRebalanceStatus(volumeName);
+            GlusterVolumeRebalanceTaskReturnForXmlRpc wrapper = new 
GlusterVolumeRebalanceTaskReturnForXmlRpc(xmlRpcReturnValue);
+            return wrapper;
+        } catch (UndeclaredThrowableException ute) {
+            throw new XmlRpcRunTimeException(ute);
+        }
+    }
+
+    @Override
     public StatusOnlyReturnForXmlRpc setMOMPolicyParameters(Map<String, 
Object> key_value_store) {
         try {
             Map<String, Object> xmlRpcReturnValue = 
vdsServer.setMOMPolicyParameters(key_value_store);
diff --git 
a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/VdsmErrors.java
 
b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/VdsmErrors.java
index 5b84ff3..de7ff81 100644
--- 
a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/VdsmErrors.java
+++ 
b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/VdsmErrors.java
@@ -772,4 +772,7 @@
 
     @DefaultStringValue("Gluster service action not supported")
     String GlusterServiceActionNotSupported();
+
+    @DefaultStringValue("Failed to get gluster volume rebalance status")
+    String GlusterVolumeRebalanceStatusFailed();
 }


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

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

Reply via email to