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
