Sahina Bose has uploaded a new change for review.

Change subject: engine: VDS command to get geo-rep status for a volume
......................................................................

engine: VDS command to get geo-rep status for a volume

VDS command to retrieve status of geo-rep sessions
associated with a volume

Change-Id: Id313742c9f3c036a0017fe37bd818af1bed0e081
Bug-Url: https://bugzilla.redhat.com/1125845
Signed-off-by: Sahina Bose <sab...@redhat.com>
---
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/queries/VdcQueryType.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/gluster/GlusterVolumeGeoRepSessionVDSParameters.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterDBUtils.java
M backend/manager/modules/dal/src/main/resources/bundles/VdsmErrors.properties
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/GetGlusterVolumeGeoRepStatusVDSCommand.java
A 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumeGeoRepStatusForXmlRpc.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/JsonRpcVdsServer.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
14 files changed, 205 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/99/31799/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 4c7629d..b02a62a 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
@@ -401,6 +401,7 @@
     GlfsStatvfsException(4571),
     GlfsInitException(4572),
     GlfsFiniException(4573),
+    GlusterVolumeGeoRepStatusFailed(4599),
 
     UnicodeArgumentException(4900),
 
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
index 7ac717d..56099ec 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
@@ -328,6 +328,7 @@
     GetGlusterServerServicesByServerId,
     GetGlusterClusterServiceByClusterId,
     GetGlusterVolumeRebalanceStatus,
+    GetGlusterVolumeGeoRepStatus,
     GetGlusterVolumeRemoveBricksStatus,
     GetGlusterVolumeByTaskId,
 
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 6a055cc..3413bdc 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
@@ -156,6 +156,7 @@
     GetDiskAlignment("org.ovirt.engine.core.vdsbroker.vdsbroker"),
     GlusterTasksList("org.ovirt.engine.core.vdsbroker.gluster"),
     
GetGlusterVolumeRemoveBricksStatus("org.ovirt.engine.core.vdsbroker.gluster"),
+    GetGlusterVolumeGeoRepStatus("org.ovirt.engine.core.vdsbroker.gluster"),
     SetNumberOfCpus("org.ovirt.engine.core.vdsbroker"),
     UpdateVmPolicy("org.ovirt.engine.core.vdsbroker"),
     List("org.ovirt.engine.core.vdsbroker.vdsbroker"),           // get a list 
of VMs with status only
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/gluster/GlusterVolumeGeoRepSessionVDSParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/gluster/GlusterVolumeGeoRepSessionVDSParameters.java
new file mode 100644
index 0000000..7fe37c6
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/gluster/GlusterVolumeGeoRepSessionVDSParameters.java
@@ -0,0 +1,35 @@
+package org.ovirt.engine.core.common.vdscommands.gluster;
+
+import org.ovirt.engine.core.compat.Guid;
+
+public class GlusterVolumeGeoRepSessionVDSParameters extends 
GlusterVolumeVDSParameters {
+
+    String slaveHost;
+    String slaveVolume;
+
+    public GlusterVolumeGeoRepSessionVDSParameters() {
+
+    }
+
+    public GlusterVolumeGeoRepSessionVDSParameters(Guid serverId, String 
volumeName, String slaveHost, String slaveVolume) {
+        super(serverId, volumeName);
+        this.slaveHost = slaveHost;
+        this.slaveVolume = slaveVolume;
+    }
+
+    public String getSlaveHost() {
+        return slaveHost;
+    }
+
+    public void setSlaveHost(String slaveHost) {
+        this.slaveHost = slaveHost;
+    }
+
+    public String getSlaveVolume() {
+        return slaveVolume;
+    }
+
+    public void setSlaveVolume(String slaveVolume) {
+        this.slaveVolume = slaveVolume;
+    }
+}
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterDBUtils.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterDBUtils.java
index 855a30f..1c52142 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterDBUtils.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterDBUtils.java
@@ -165,4 +165,16 @@
         }
         return hostName;
     }
+
+    public GlusterBrickEntity getGlusterBrickByServerUuidAndBrickDir(Guid 
serverId, String brickDir)
+    {
+        return getGlusterBrickDao().getBrickByServerIdAndDirectory(serverId, 
brickDir);
+    }
+
+    public GlusterVolumeEntity getVolumeByNameAndHostId(String volumeName, 
Guid hostId) {
+        VdsStatic vds = getVdsStaticDao().get(hostId);
+        Guid vdsGroupId = vds.getVdsGroupId();
+        return getGlusterVolumeDao().getByName(vdsGroupId, volumeName);
+    }
+
 }
diff --git 
a/backend/manager/modules/dal/src/main/resources/bundles/VdsmErrors.properties 
b/backend/manager/modules/dal/src/main/resources/bundles/VdsmErrors.properties
index e2d4509..5c9ba41 100644
--- 
a/backend/manager/modules/dal/src/main/resources/bundles/VdsmErrors.properties
+++ 
b/backend/manager/modules/dal/src/main/resources/bundles/VdsmErrors.properties
@@ -370,6 +370,7 @@
 GlusterServiceActionNotSupported=Gluster service action not supported
 GlusterVolumeStatusAllFailedException=Failed to get gluster tasks list
 GlusterVolumeRebalanceStatusFailedException=Failed to get gluster volume 
rebalance status
+GlusterVolumeGeoRepStatusFailedException=Failed to get gluster volume 
geo-replication status
 GlusterLibgfapiException=Command failed due to gluster libgfapi exception
 GlfsStatvfsException=Failed to get gluster volume size info
 GlfsInitException=Command failed while mounting gluster volume
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 2b2d573..41c1d1e 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
@@ -66,6 +66,7 @@
         case GlusterVolumeRemoveBricksStopFailed:
         case GlusterVolumeRemoveBrickStatusFailed:
         case GlusterVolumeRemoveBricksCommitFailed:
+        case GlusterVolumeGeoRepStatusFailed:
         case GlusterLibgfapiException:
         case GlfsStatvfsException:
         case GlfsInitException:
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GetGlusterVolumeGeoRepStatusVDSCommand.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GetGlusterVolumeGeoRepStatusVDSCommand.java
new file mode 100644
index 0000000..95e6de6
--- /dev/null
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GetGlusterVolumeGeoRepStatusVDSCommand.java
@@ -0,0 +1,19 @@
+package org.ovirt.engine.core.vdsbroker.gluster;
+
+import 
org.ovirt.engine.core.common.vdscommands.gluster.GlusterVolumeGeoRepSessionVDSParameters;
+
+public class GetGlusterVolumeGeoRepStatusVDSCommand<P extends 
GlusterVolumeGeoRepSessionVDSParameters> extends 
AbstractGlusterBrokerCommand<P> {
+
+    public GetGlusterVolumeGeoRepStatusVDSCommand(P parameters) {
+        super(parameters);
+    }
+
+    @Override
+    protected void executeVdsBrokerCommand() {
+        GlusterVolumeGeoRepSessionVDSParameters parameter = getParameters();
+        GlusterVolumeGeoRepStatusForXmlRpc result = 
getBroker().glusterVolumeGeoRepStatus(parameter.getVolumeName(), 
parameter.getSlaveHost(), parameter.getSlaveVolume());
+        proceedProxyReturnValue();
+        setReturnValue(result);
+    }
+
+}
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumeGeoRepStatusForXmlRpc.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumeGeoRepStatusForXmlRpc.java
new file mode 100644
index 0000000..4de2519
--- /dev/null
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumeGeoRepStatusForXmlRpc.java
@@ -0,0 +1,105 @@
+package org.ovirt.engine.core.vdsbroker.gluster;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.ovirt.engine.core.common.businessentities.gluster.GeoRepCrawlStatus;
+import 
org.ovirt.engine.core.common.businessentities.gluster.GeoRepSessionStatus;
+import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterGeoRepSession;
+import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterGeoRepSessionDetails;
+import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.dao.gluster.GlusterDBUtils;
+import org.ovirt.engine.core.utils.log.Log;
+import org.ovirt.engine.core.utils.log.LogFactory;
+import org.ovirt.engine.core.vdsbroker.irsbroker.StatusReturnForXmlRpc;
+
+public class GlusterVolumeGeoRepStatusForXmlRpc extends StatusReturnForXmlRpc{
+
+    private static final String SESSIONS = "sessions";
+    private static final String SESSION_SLAVE = "sessionSlave";
+    private static final String MASTER_NODE_UUID = "masterNodeUuid";
+    private static final String MASTER_BRICK = "masterBrick";
+    private static final String SLAVE = "slave";
+    private static final String GEO_REP_PAIRS = "pairs";
+    private static final String STATUS = "status";
+    private static final String CHECK_POINT_STATUS = "checkpointStatus";
+    private static final String CRAWL_STATUS = "crawlStatus";
+
+    private final List<GlusterGeoRepSession> geoRepSessions = new 
ArrayList<GlusterGeoRepSession>();
+
+
+    private static final Log log = 
LogFactory.getLog(GlusterVolumesListReturnForXmlRpc.class);
+
+    protected GlusterGeoRepSessionDetails getSessionDetails(Map<String, 
Object> innerMap, GlusterGeoRepSession session) {
+        GlusterGeoRepSessionDetails details = new 
GlusterGeoRepSessionDetails();
+        details.setSessionId(session.getId());
+        Guid masterNodeId;
+        if(innerMap.containsKey(MASTER_NODE_UUID)) {
+            masterNodeId = new Guid(innerMap.get(MASTER_NODE_UUID).toString());
+        } else {
+            log.error("Host Node Id is not available");
+            return null;
+        }
+        String masterBrick = (innerMap.containsKey(MASTER_BRICK)) ? 
innerMap.get(MASTER_BRICK).toString() : null;
+        
details.setMasterBrickId(getDbUtils().getGlusterBrickByServerUuidAndBrickDir(masterNodeId,
 masterBrick).getId());
+
+        String slave = innerMap.containsKey(SLAVE) ? 
innerMap.get(SLAVE).toString() : null;
+        String slaveHost = (slave != null) ? slave.split("([:]+)")[0] : null;
+
+        details.setSlaveHostName(slaveHost);
+        
details.setStatus(GeoRepSessionStatus.valueOf((String)innerMap.get(STATUS)));
+        
details.setCrawlStatus(GeoRepCrawlStatus.valueOf((String)innerMap.get(CRAWL_STATUS)));
+        details.setCheckPointStatus((String)innerMap.get(CHECK_POINT_STATUS));
+        return details;
+    }
+
+    protected GlusterGeoRepSession getSession(Map<String, Object> innerMap) {
+        GlusterGeoRepSession geoRepSession = new GlusterGeoRepSession();
+        // sessionslave in the form -  
<session_slave>11ae7a03-e793-4270-8fc4-b42def8b3051:ssh://192.168.122.14::slave2</session_slave>
+        String sessionSlave = (String) innerMap.get(SESSION_SLAVE);
+        String sessSplit[] = sessionSlave.split("([://]+)");
+        String sessionId = sessSplit[0];
+        String slaveNode = sessSplit[sessSplit.length -2];
+        String slaveVolume = sessSplit[sessSplit.length -1];
+        geoRepSession.setId(Guid.createGuidFromString(sessionId));
+        geoRepSession.setSlaveHostName(slaveNode);
+        geoRepSession.setSlaveVolumeName(slaveVolume);
+        return geoRepSession;
+    }
+
+    private GlusterDBUtils getDbUtils() {
+        return GlusterDBUtils.getInstance();
+    }
+
+    @SuppressWarnings("unchecked")
+    private void populateSessions(Map<String, Object> innerMap) {
+        if (innerMap.containsKey(SESSIONS)) {
+            for (Map<String, Object> session: (Map<String, Object>[]) 
innerMap.get(SESSIONS)) {
+                geoRepSessions.add(populateSession(session));
+            }
+        }
+    }
+
+    private GlusterGeoRepSession populateSession(Map<String, Object> innerMap) 
{
+        GlusterGeoRepSession geoRepSession = getSession(innerMap);
+        List<GlusterGeoRepSessionDetails> geoRepSessionDetails = new 
ArrayList<GlusterGeoRepSessionDetails>();
+        if(innerMap.containsKey(GEO_REP_PAIRS)) {
+            for(Map<String, Object> sessionPair : (Map<String, Object>[]) 
innerMap.get(GEO_REP_PAIRS)) {
+                geoRepSessionDetails.add(getSessionDetails(sessionPair, 
geoRepSession));
+            }
+        }
+        geoRepSession.setSessionDetails(geoRepSessionDetails);
+        return geoRepSession;
+    }
+
+    public GlusterVolumeGeoRepStatusForXmlRpc(Map<String, Object> innerMap) {
+        super(innerMap);
+        populateSessions(innerMap);
+    }
+
+    public List<GlusterGeoRepSession> getGeoRepSessions() {
+        return geoRepSessions;
+    }
+
+}
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/JsonRpcVdsServer.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/JsonRpcVdsServer.java
index bbba12b..6a93be1 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/JsonRpcVdsServer.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/JsonRpcVdsServer.java
@@ -16,6 +16,7 @@
 import org.ovirt.engine.core.vdsbroker.gluster.GlusterServicesReturnForXmlRpc;
 import org.ovirt.engine.core.vdsbroker.gluster.GlusterTaskInfoReturnForXmlRpc;
 import org.ovirt.engine.core.vdsbroker.gluster.GlusterTasksListReturnForXmlRpc;
+import 
org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumeGeoRepStatusForXmlRpc;
 import 
org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumeOptionsInfoReturnForXmlRpc;
 import 
org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumeProfileInfoReturnForXmlRpc;
 import 
org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumeStatusReturnForXmlRpc;
@@ -1379,6 +1380,15 @@
     }
 
     @Override
+    public GlusterVolumeGeoRepStatusForXmlRpc glusterVolumeGeoRepStatus(String 
volumeName, String slaveHost, String slaveVolumeName) {
+        JsonRpcRequest request = new 
RequestBuilder("GlusterVolume.geoRepStatus").withParameter("volName", 
volumeName)
+                .withParameter("remoteHost", slaveHost)
+                .withParameter("remoteVolName", slaveVolumeName).build();
+        Map<String, Object> response = new FutureMap(this.client, 
request).withIgnoreResponseKey();
+        return new GlusterVolumeGeoRepStatusForXmlRpc(response);
+    }
+
+    @Override
     public GlusterVolumeTaskReturnForXmlRpc 
glusterVolumeRemoveBrickStatus(String volumeName, String[] bricksList) {
         JsonRpcRequest request =
                 new 
RequestBuilder("GlusterVolume.removeBrickStatus").withParameter("volumeName", 
volumeName)
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 ff27a06..426ea6b 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
@@ -11,6 +11,7 @@
 import org.ovirt.engine.core.vdsbroker.gluster.GlusterServicesReturnForXmlRpc;
 import org.ovirt.engine.core.vdsbroker.gluster.GlusterTaskInfoReturnForXmlRpc;
 import org.ovirt.engine.core.vdsbroker.gluster.GlusterTasksListReturnForXmlRpc;
+import 
org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumeGeoRepStatusForXmlRpc;
 import 
org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumeOptionsInfoReturnForXmlRpc;
 import 
org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumeProfileInfoReturnForXmlRpc;
 import 
org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumeStatusReturnForXmlRpc;
@@ -300,6 +301,8 @@
 
     GlusterVolumeTaskReturnForXmlRpc glusterVolumeRebalanceStatus(String 
volumeName);
 
+    GlusterVolumeGeoRepStatusForXmlRpc glusterVolumeGeoRepStatus(String 
volumeName, String slaveHost, String slaveVolumeName);
+
     GlusterVolumeTaskReturnForXmlRpc glusterVolumeRemoveBrickStatus(String 
volumeName, String[] bricksList);
 
     StatusOnlyReturnForXmlRpc setNumberOfCpus(String vmId, String 
numberOfCpus);
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 c937834..ca53686 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
@@ -289,6 +289,8 @@
 
     public Map<String, Object> glusterVolumeRebalanceStatus(String volumeName);
 
+    public Map<String, Object> glusterVolumeGeoRepStatus(String volumeName, 
String slaveHost, String slaveVolumeName);
+
     public Map<String, Object> glusterVolumeRemoveBrickStatus(String 
volumeName, String[] bricksList);
 
     public Map<String, Object> setNumberOfCpus(String vmId, String 
numberOfCpus);
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 82e28e0..16fbf0c 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
@@ -13,6 +13,7 @@
 import org.ovirt.engine.core.vdsbroker.gluster.GlusterServicesReturnForXmlRpc;
 import org.ovirt.engine.core.vdsbroker.gluster.GlusterTaskInfoReturnForXmlRpc;
 import org.ovirt.engine.core.vdsbroker.gluster.GlusterTasksListReturnForXmlRpc;
+import 
org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumeGeoRepStatusForXmlRpc;
 import 
org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumeOptionsInfoReturnForXmlRpc;
 import 
org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumeProfileInfoReturnForXmlRpc;
 import 
org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumeStatusReturnForXmlRpc;
@@ -1364,6 +1365,16 @@
     }
 
     @Override
+    public GlusterVolumeGeoRepStatusForXmlRpc glusterVolumeGeoRepStatus(String 
volumeName, String slaveHost, String slaveVolumeName) {
+        try {
+            Map<String, Object> response = 
vdsServer.glusterVolumeGeoRepStatus(volumeName, slaveHost, slaveVolumeName);
+            return new GlusterVolumeGeoRepStatusForXmlRpc(response);
+        } catch (UndeclaredThrowableException ute) {
+            throw new XmlRpcRunTimeException(ute);
+        }
+    }
+
+    @Override
     public GlusterVolumeTaskReturnForXmlRpc 
glusterVolumeRemoveBrickStatus(String volumeName, String[] bricksList) {
         try {
             Map<String, Object> xmlRpcReturnValue = 
vdsServer.glusterVolumeRemoveBrickStatus(volumeName, bricksList);
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 04cc904..8a31198 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
@@ -796,6 +796,9 @@
     @DefaultStringValue("Failed to get gluster volume rebalance status")
     String GlusterVolumeRebalanceStatusFailedException();
 
+    @DefaultStringValue("Failed to get gluster volume geo-replication status")
+    String GlusterVolumeGeoRepStatusDFailed();
+
     @DefaultStringValue("Failed to get status of gluster volume remove bricks")
     String GlusterVolumeRemoveBrickStatusFailed();
 


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

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

Reply via email to