Selvasundaram has uploaded a new change for review.

Change subject: engine: Get Gluster Volume Geo-replication Config query
......................................................................

engine: Get Gluster Volume Geo-replication Config query

  - To fetch the Gluster Geo-replication Configurations either from db (for 
active geo-replication)
    or from vdsm (for other goe-replication) based on the query parameters

  - Return value will be List of GlusterGeorepConfigEntity when query from db
    and List of GlusterGeorepConfigInfo when query from vdsm

  - New query parameter class
  - New vds command
  - Junit test for query

Change-Id: If9d26b1c44d2d7cad12dd7ca64651a0ba74a89ec
Signed-off-by: Selvasundaram <sesub...@redhat.com>
---
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetGlusterVolumeGeorepConfigInfoQuery.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterQueriesCommandBase.java
A 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/GetGlusterVolumeGeorepConfigInfoQueryTest.java
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterGeorepConfigInfo.java
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
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/gluster/GlusterVolumeGeoreplicationQueryParameters.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.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/GetGlusterVolumeGeorepConfigInfoVDSCommand.java
A 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/GlusterVolumeGeorepConfigInfoReturnForXmlRpc.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
16 files changed, 506 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/25/9325/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetGlusterVolumeGeorepConfigInfoQuery.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetGlusterVolumeGeorepConfigInfoQuery.java
new file mode 100644
index 0000000..de65f44
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetGlusterVolumeGeorepConfigInfoQuery.java
@@ -0,0 +1,78 @@
+package org.ovirt.engine.core.bll.gluster;
+
+import org.apache.commons.lang.StringUtils;
+import org.ovirt.engine.core.bll.Backend;
+import org.ovirt.engine.core.bll.utils.ClusterUtils;
+import org.ovirt.engine.core.common.businessentities.VDS;
+import org.ovirt.engine.core.common.businessentities.VDSStatus;
+import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeEntity;
+import org.ovirt.engine.core.common.interfaces.VDSBrokerFrontend;
+import 
org.ovirt.engine.core.common.queries.gluster.GlusterVolumeGeoreplicationQueryParameters;
+import org.ovirt.engine.core.common.vdscommands.VDSCommandType;
+import org.ovirt.engine.core.common.vdscommands.VDSReturnValue;
+import 
org.ovirt.engine.core.common.vdscommands.gluster.GlusterVolumeGeoreplicationVDSParameters;
+
+/**
+ * Query to get volume geo-replication config info
+ */
+public class GetGlusterVolumeGeorepConfigInfoQuery<P extends 
GlusterVolumeGeoreplicationQueryParameters>
+        extends GlusterQueriesCommandBase<P> {
+
+    public GetGlusterVolumeGeorepConfigInfoQuery(P params) {
+        super(params);
+    }
+
+    @Override
+    protected void executeQueryCommand() {
+        if (getParameters().getGeorepId() != null) {
+            
getQueryReturnValue().setReturnValue(getGlusterGeorepConfigDao().getAllByGeorepId(getParameters().getGeorepId()));
+        } else if (validParameters()) {
+            VDSReturnValue returnValue =
+                    
getBackendInstance().RunVdsCommand(VDSCommandType.GetGlusterVolumeGeorepConfigInfo,
+                            new 
GlusterVolumeGeoreplicationVDSParameters(getServer().getId(),
+                                    getVolume().getName(),
+                                    getParameters().getRemoteServer(),
+                                    getParameters().getRemoteServerUser(),
+                                    getParameters().getRemoteVolumeOrDir()));
+            getQueryReturnValue().setReturnValue(returnValue.getReturnValue());
+        } else {
+            getQueryReturnValue().setSucceeded(false);
+            // getQueryReturnValue().setReturnValue(null);
+        }
+
+    }
+
+    private boolean validParameters() {
+        return (getVolume() != null
+                && getServer() != null
+                && getServer().getstatus() == VDSStatus.Up
+                && (!StringUtils.isEmpty(getParameters().getRemoteServer()))
+                && 
(!StringUtils.isEmpty(getParameters().getRemoteServerUser()))
+                && 
(!StringUtils.isEmpty(getParameters().getRemoteVolumeOrDir())));
+    }
+
+    public GlusterVolumeEntity getVolume() {
+        try {
+            return 
getGlusterVolumeDao().getById(getParameters().getVolumeId());
+        } catch (Exception e) {
+            return null;
+        }
+    }
+
+    public VDS getServer() {
+        try {
+            return getVdsDao().get(getParameters().getServerId());
+        } catch (Exception e) {
+            return null;
+        }
+    }
+
+    public ClusterUtils getClusterUtils() {
+        return ClusterUtils.getInstance();
+    }
+
+    public VDSBrokerFrontend getBackendInstance() {
+        return Backend.getInstance()
+                .getResourceManager();
+    }
+}
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterQueriesCommandBase.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterQueriesCommandBase.java
index 1569320..1368146 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterQueriesCommandBase.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterQueriesCommandBase.java
@@ -3,7 +3,10 @@
 import org.ovirt.engine.core.bll.QueriesCommandBase;
 import org.ovirt.engine.core.common.queries.VdcQueryParametersBase;
 import org.ovirt.engine.core.dal.dbbroker.DbFacade;
+import org.ovirt.engine.core.dao.VdsDAO;
 import org.ovirt.engine.core.dao.gluster.GlusterBrickDao;
+import org.ovirt.engine.core.dao.gluster.GlusterGeorepConfigDao;
+import org.ovirt.engine.core.dao.gluster.GlusterGeoreplicationDao;
 import org.ovirt.engine.core.dao.gluster.GlusterVolumeDao;
 
 public abstract class GlusterQueriesCommandBase<P extends 
VdcQueryParametersBase> extends QueriesCommandBase<P> {
@@ -19,4 +22,16 @@
     protected GlusterBrickDao getGlusterBrickDao() {
         return DbFacade.getInstance().getGlusterBrickDao();
     }
+
+    protected GlusterGeoreplicationDao getGlusterGeoreplicationDao() {
+        return DbFacade.getInstance().getGlusterGeoreplicationDao();
+    }
+
+    protected GlusterGeorepConfigDao getGlusterGeorepConfigDao() {
+        return DbFacade.getInstance().getGlusterGeorepConfigDao();
+    }
+
+    protected VdsDAO getVdsDao() {
+        return DbFacade.getInstance().getVdsDao();
+    }
 }
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/GetGlusterVolumeGeorepConfigInfoQueryTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/GetGlusterVolumeGeorepConfigInfoQueryTest.java
new file mode 100644
index 0000000..37bfce4
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/GetGlusterVolumeGeorepConfigInfoQueryTest.java
@@ -0,0 +1,158 @@
+package org.ovirt.engine.core.bll.gluster;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.ovirt.engine.core.bll.AbstractQueryTest;
+import org.ovirt.engine.core.common.businessentities.VDS;
+import org.ovirt.engine.core.common.businessentities.VDSStatus;
+import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterGeorepConfigEntity;
+import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterGeorepConfigInfo;
+import org.ovirt.engine.core.common.businessentities.gluster.GlusterStatus;
+import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeEntity;
+import org.ovirt.engine.core.common.interfaces.VDSBrokerFrontend;
+import 
org.ovirt.engine.core.common.queries.gluster.GlusterVolumeGeoreplicationQueryParameters;
+import org.ovirt.engine.core.common.vdscommands.VDSCommandType;
+import org.ovirt.engine.core.common.vdscommands.VDSReturnValue;
+import 
org.ovirt.engine.core.common.vdscommands.gluster.GlusterVolumeGeoreplicationVDSParameters;
+import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.dao.VdsDAO;
+import org.ovirt.engine.core.dao.gluster.GlusterGeorepConfigDao;
+import org.ovirt.engine.core.dao.gluster.GlusterVolumeDao;
+
+public class GetGlusterVolumeGeorepConfigInfoQueryTest extends 
AbstractQueryTest<GlusterVolumeGeoreplicationQueryParameters,
+        
GetGlusterVolumeGeorepConfigInfoQuery<GlusterVolumeGeoreplicationQueryParameters>>
 {
+
+    final static Guid GEOREP_ID = new 
Guid("b2cb2f73-fab3-4a42-93f0-d5e4c069a43e");
+    final static Guid SERVER_ID = new 
Guid("afce7a39-8e8c-4819-ba9c-796d316592e6");
+    final static Guid VOLUME_ID = new 
Guid("0c3f45f6-3fe9-4b35-a30c-be0d1a835ea8");
+    final static Guid CLUSTER_ID = new 
Guid("b399944a-81ab-4ec5-8266-e19ba7c3c9d1");
+    final static String REMOTE_SERVER = "test";
+    final static String REMOTE_SERVER_USER = "user1";
+    final static String REMOTE_DIR = "/tmp";
+
+    List<GlusterGeorepConfigInfo> expectedFromVdsm = new 
ArrayList<GlusterGeorepConfigInfo>();
+    List<GlusterGeorepConfigEntity> expectedFromDb = new 
ArrayList<GlusterGeorepConfigEntity>();
+    VDSBrokerFrontend vdsBrokerFrontend;
+    GlusterGeorepConfigDao glusterGeorepConfigDao;
+    GlusterVolumeDao volumeDao;
+    VdsDAO serverDao;
+
+    @Before
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        mockDaos();
+    }
+
+    private void mockDaos() {
+        volumeDao = mock(GlusterVolumeDao.class);
+        serverDao = mock(VdsDAO.class);
+        glusterGeorepConfigDao = mock(GlusterGeorepConfigDao.class);
+
+        
doReturn(glusterGeorepConfigDao).when(getQuery()).getGlusterGeorepConfigDao();
+        doReturn(volumeDao).when(getQuery()).getGlusterVolumeDao();
+        doReturn(serverDao).when(getQuery()).getVdsDao();
+        doReturn(getGlusterVolume()).when(volumeDao).getById(VOLUME_ID);
+        
doReturn(getGlusterServer(VDSStatus.Up)).when(serverDao).get(SERVER_ID);
+        doReturn(getGlusterVolume()).when(volumeDao).getById(VOLUME_ID);
+        
doReturn(getGlusterServer(VDSStatus.Up)).when(serverDao).get(SERVER_ID);
+    }
+
+    private void mockGeorepConfigList() {
+        prepareExpectedGeorepConfigList();
+
+        doReturn(GEOREP_ID).when(getQueryParameters()).getGeorepId();
+        
doReturn(expectedFromDb).when(glusterGeorepConfigDao).getAllByGeorepId(GEOREP_ID);
+    }
+
+    private void mockGeorepConfigInfo() {
+        prepareExpectedGeorepConfigInfo();
+
+        doReturn(null).when(getQueryParameters()).getGeorepId();
+        doReturn(VOLUME_ID).when(getQueryParameters()).getVolumeId();
+        doReturn(SERVER_ID).when(getQueryParameters()).getServerId();
+        doReturn(REMOTE_SERVER).when(getQueryParameters()).getRemoteServer();
+        
doReturn(REMOTE_SERVER_USER).when(getQueryParameters()).getRemoteServerUser();
+        doReturn(REMOTE_DIR).when(getQueryParameters()).getRemoteVolumeOrDir();
+
+        vdsBrokerFrontend = mock(VDSBrokerFrontend.class);
+        doReturn(vdsBrokerFrontend).when(getQuery()).getBackendInstance();
+
+        
when(vdsBrokerFrontend.RunVdsCommand(eq(VDSCommandType.GetGlusterVolumeGeorepConfigInfo),
+                
any(GlusterVolumeGeoreplicationVDSParameters.class))).thenReturn(getReturnValue());
+    }
+
+    private void prepareExpectedGeorepConfigInfo() {
+        GlusterGeorepConfigInfo info = new 
GlusterGeorepConfigInfo("remote_gsyncd", "/usr/libexec/glusterfs/gsyncd");
+        expectedFromVdsm.add(info);
+        info = new GlusterGeorepConfigInfo("gluster_params", 
"xlator-option=*-dht.assert-no-child-down=true");
+        expectedFromVdsm.add(info);
+    }
+
+    private void prepareExpectedGeorepConfigList() {
+        GlusterGeorepConfigEntity entity =
+                new GlusterGeorepConfigEntity(GEOREP_ID, "remote_gsyncd", 
"/usr/libexec/glusterfs/gsyncd");
+        expectedFromDb.add(entity);
+        entity =
+                new GlusterGeorepConfigEntity(GEOREP_ID,
+                        "gluster_params",
+                        "xlator-option=*-dht.assert-no-child-down=true");
+        expectedFromDb.add(entity);
+    }
+
+    private VDS getGlusterServer(VDSStatus status) {
+        VDS vds = new VDS();
+        vds.setId(SERVER_ID);
+        vds.setvds_name("gfs1");
+        vds.setvds_group_id(CLUSTER_ID);
+        vds.setstatus(status);
+        return vds;
+    }
+
+    private GlusterVolumeEntity getGlusterVolume() {
+        GlusterVolumeEntity entity = new GlusterVolumeEntity();
+        entity.setId(VOLUME_ID);
+        entity.setStatus(GlusterStatus.UP);
+        return entity;
+    }
+
+    private VDSReturnValue getReturnValue() {
+        VDSReturnValue returnValue = new VDSReturnValue();
+        returnValue.setSucceeded(true);
+        returnValue.setReturnValue(expectedFromVdsm);
+        return returnValue;
+    }
+
+    @Test
+    @SuppressWarnings("unchecked")
+    public void testExecuteQueryCommandFromVdsm() {
+        mockGeorepConfigInfo();
+        getQuery().executeQueryCommand();
+        List<GlusterGeorepConfigInfo> actual =
+                (List<GlusterGeorepConfigInfo>) 
getQuery().getQueryReturnValue().getReturnValue();
+
+        assertEquals(expectedFromVdsm, actual);
+    }
+
+    @Test
+    @SuppressWarnings("unchecked")
+    public void testExecuteQueryCommandFromDb() {
+        mockGeorepConfigList();
+        getQuery().executeQueryCommand();
+        List<GlusterGeorepConfigEntity> actual =
+                (List<GlusterGeorepConfigEntity>) 
getQuery().getQueryReturnValue().getReturnValue();
+
+        assertEquals(expectedFromDb, actual);
+    }
+
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterGeorepConfigInfo.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterGeorepConfigInfo.java
new file mode 100644
index 0000000..c0e477e
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterGeorepConfigInfo.java
@@ -0,0 +1,59 @@
+package org.ovirt.engine.core.common.businessentities.gluster;
+
+import java.io.Serializable;
+
+/**
+ * Class representing information of a Gluster Volume Geo-replication Config
+ *
+ * @see GlusterGeorepConfigEntity
+ */
+public class GlusterGeorepConfigInfo implements Serializable {
+
+    private static final long serialVersionUID = -2163747437356328515L;
+
+    private String key;
+    private String value;
+
+    public GlusterGeorepConfigInfo() {
+    }
+
+    public GlusterGeorepConfigInfo(String key, String value) {
+        setKey(key);
+        setValue(value);
+    }
+
+    public String getKey() {
+        return key;
+    }
+
+    public void setKey(String key) {
+        this.key = key;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((key == null) ? 0 : key.hashCode());
+        result = prime * result + ((value == null) ? 0 : value.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (!(obj instanceof GlusterGeorepConfigInfo)) {
+            return false;
+        }
+        GlusterGeorepConfigInfo configInfo = (GlusterGeorepConfigInfo) obj;
+
+        return (configInfo.getKey().equals(key) && 
configInfo.getValue().equals(value));
+    }
+}
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 0324972..8825d30 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
@@ -349,7 +349,7 @@
     SshSetupFailed(4506),
     GlusterVolumeGeoreplicationStartFailed(4160),
     SetGlusterVolumeGeoreplicationConfigFailed(4164),
-
+    GetGlusterVolumeGeorepConfigInfoFailed(4163),
 
     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 5f1bbe8..7d3c42b 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
@@ -280,6 +280,7 @@
     GetGlusterServers,
     GetAddedGlusterServers,
     GetPasswordlessSshStatus,
+    GetGlusterVolumeGeorepConfigInfo,
 
     // Default type instead of having to null check
     Unknown(VdcQueryAuthType.User);
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/gluster/GlusterVolumeGeoreplicationQueryParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/gluster/GlusterVolumeGeoreplicationQueryParameters.java
new file mode 100644
index 0000000..3f0b44f
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/gluster/GlusterVolumeGeoreplicationQueryParameters.java
@@ -0,0 +1,90 @@
+package org.ovirt.engine.core.common.queries.gluster;
+
+import org.ovirt.engine.core.common.queries.VdcQueryParametersBase;
+import org.ovirt.engine.core.compat.Guid;
+
+
+/**
+ * Parameter class for Get Gluster Volume Geo-replication Configs Info query
+ */
+public class GlusterVolumeGeoreplicationQueryParameters extends 
VdcQueryParametersBase {
+
+    private static final long serialVersionUID = -7140610817379238567L;
+
+    private Guid georepId;
+
+    private Guid volumeId;
+
+    private Guid serverId;
+
+    private String remoteServer;
+
+    private String remoteServerUser;
+
+    private String remoteVolumeOrDir;
+
+    public GlusterVolumeGeoreplicationQueryParameters(Guid volumeId,
+            Guid serverId,
+            String remoteServer,
+            String remoteServerUser,
+            String remoteVolumeOrDir) {
+        setVolumeId(volumeId);
+        setServerId(serverId);
+        setRemoteServer(remoteServer);
+        setRemoteServerUser(remoteServerUser);
+        setRemoteVolumeOrDir(remoteVolumeOrDir);
+    }
+
+    public GlusterVolumeGeoreplicationQueryParameters(Guid georepId) {
+        setGeorepId(georepId);
+    }
+
+    public Guid getGeorepId() {
+        return georepId;
+    }
+
+    public void setGeorepId(Guid georepId) {
+        this.georepId = georepId;
+    }
+
+    public void setVolumeId(Guid volumeId) {
+        this.volumeId = volumeId;
+    }
+
+    public Guid getVolumeId() {
+        return this.volumeId;
+    }
+
+    public void setServerId(Guid serverId) {
+        this.serverId = serverId;
+    }
+
+    public Guid getServerId() {
+        return this.serverId;
+    }
+
+    public void setRemoteServer(String remoteServer) {
+        this.remoteServer = remoteServer;
+    }
+
+    public String getRemoteServer() {
+        return this.remoteServer;
+    }
+
+    public String getRemoteServerUser() {
+        return remoteServerUser;
+    }
+
+    public void setRemoteServerUser(String remoteServerUser) {
+        this.remoteServerUser = remoteServerUser;
+    }
+
+    public void setRemoteVolumeOrDir(String remoteVolumeOrDir) {
+        this.remoteVolumeOrDir = remoteVolumeOrDir;
+    }
+
+    public String getRemoteVolumeOrDir() {
+        return this.remoteVolumeOrDir;
+    }
+
+}
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 ae3d006..7e93db5 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
@@ -142,6 +142,7 @@
     ConfigPasswordlessSsh("org.ovirt.engine.core.vdsbroker.gluster"),
     
GlusterVolumeGeoreplicationStart("org.ovirt.engine.core.vdsbroker.gluster"),
     
SetGlusterVolumeGeoreplicationConfig("org.ovirt.engine.core.vdsbroker.gluster"),
+    
GetGlusterVolumeGeorepConfigInfo("org.ovirt.engine.core.vdsbroker.gluster"),
     ;
 
     String packageName;
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 99a91e1..493a826 100644
--- 
a/backend/manager/modules/dal/src/main/resources/bundles/VdsmErrors.properties
+++ 
b/backend/manager/modules/dal/src/main/resources/bundles/VdsmErrors.properties
@@ -323,7 +323,8 @@
 GlusterAddHostFailed=Gluster Server Add Failed
 GlusterPeerListFailed=Gluster Peer List Failed
 GlusterVolumeGeoreplicationStartFailed=Gluster Volume Geo-replication Start 
Failed
-SetGlusterVolumeGeoreplicationConfigFailed=Gluster Volume Geo-replication 
Configuration Failed
+SetGlusterVolumeGeoreplicationConfigFailed=Gluster Volume Geo-replication 
Configuration Failed
+GetGlusterVolumeGeorepConfigInfoFailed=Gluster volume Geo-replication 
Configuration List Failed
 
 CANT_RECONSTRUCT_WHEN_A_DOMAIN_IN_POOL_IS_LOCKED=Can't reconstruct the Master 
Domain when the Data Center contains Domains in Locked state.\nPlease wait 
until the operation for these Domains ends before trying to reconstruct the 
Master Domain again.
 NO_IMPLEMENTATION=Not implemented
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 1afc32f..7c1f3f9 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
@@ -38,6 +38,7 @@
         case SshSetupFailed:
         case GlusterVolumeGeoreplicationStartFailed:
         case SetGlusterVolumeGeoreplicationConfigFailed:
+        case GetGlusterVolumeGeorepConfigInfoFailed:
             // 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/GetGlusterVolumeGeorepConfigInfoVDSCommand.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GetGlusterVolumeGeorepConfigInfoVDSCommand.java
new file mode 100644
index 0000000..236fc56
--- /dev/null
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GetGlusterVolumeGeorepConfigInfoVDSCommand.java
@@ -0,0 +1,33 @@
+package org.ovirt.engine.core.vdsbroker.gluster;
+
+import 
org.ovirt.engine.core.common.vdscommands.gluster.GlusterVolumeGeoreplicationVDSParameters;
+import 
org.ovirt.engine.core.vdsbroker.irsbroker.GlusterVolumeGeorepConfigInfoReturnForXmlRpc;
+import org.ovirt.engine.core.vdsbroker.vdsbroker.StatusForXmlRpc;
+
+public class GetGlusterVolumeGeorepConfigInfoVDSCommand<P extends 
GlusterVolumeGeoreplicationVDSParameters> extends 
AbstractGlusterBrokerCommand<P> {
+
+    private GlusterVolumeGeorepConfigInfoReturnForXmlRpc result;
+
+    public GetGlusterVolumeGeorepConfigInfoVDSCommand(P parameters) {
+        super(parameters);
+    }
+
+    @Override
+    protected StatusForXmlRpc getReturnStatus() {
+        return result.mStatus;
+    }
+
+    @Override
+    protected void ExecuteVdsBrokerCommand() {
+        result =
+                
getBroker().getGlusterVolumeGeoreplicationConfigInfo(getParameters().getVolumeName(),
+                        getParameters().getRemoteUser(),
+                        getParameters().getRemoteServer(),
+                        getParameters().getRemoteDir());
+
+        ProceedProxyReturnValue();
+        setReturnValue(result.getGeorepConfigs());
+    }
+}
+
+
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/GlusterVolumeGeorepConfigInfoReturnForXmlRpc.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/GlusterVolumeGeorepConfigInfoReturnForXmlRpc.java
new file mode 100644
index 0000000..25626d5
--- /dev/null
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/GlusterVolumeGeorepConfigInfoReturnForXmlRpc.java
@@ -0,0 +1,37 @@
+package org.ovirt.engine.core.vdsbroker.irsbroker;
+
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+
+import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterGeorepConfigInfo;
+
+public final class GlusterVolumeGeorepConfigInfoReturnForXmlRpc extends 
StatusReturnForXmlRpc {
+    private static final String GEOREP_CONFIGS = "configs";
+
+    private Set<GlusterGeorepConfigInfo> georepConfigSet = new 
HashSet<GlusterGeorepConfigInfo>();
+
+    @SuppressWarnings("unchecked")
+    public GlusterVolumeGeorepConfigInfoReturnForXmlRpc(Map<String, Object> 
innerMap) {
+        super(innerMap);
+        Object[] mapArr = (Object[]) innerMap.get(GEOREP_CONFIGS);
+        if (mapArr != null) {
+            for (int i = 0; i < mapArr.length; i++) {
+                georepConfigSet.add(prepareGeorepConfigEntity((Entry<String, 
String>) mapArr[i]));
+            }
+        }
+    }
+
+    private GlusterGeorepConfigInfo prepareGeorepConfigEntity(Entry<String, 
String> map) {
+        GlusterGeorepConfigInfo entity = new GlusterGeorepConfigInfo();
+        entity.setKey(map.getKey());
+        entity.setValue(map.getValue());
+        return entity;
+    }
+
+
+    public Set<GlusterGeorepConfigInfo> getGeorepConfigs() {
+        return georepConfigSet;
+    }
+}
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 6b78e0f..0d14398 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
@@ -5,6 +5,7 @@
 import java.util.concurrent.FutureTask;
 
 import 
org.ovirt.engine.core.vdsbroker.irsbroker.GlusterServersListReturnForXmlRpc;
+import 
org.ovirt.engine.core.vdsbroker.irsbroker.GlusterVolumeGeorepConfigInfoReturnForXmlRpc;
 import 
org.ovirt.engine.core.vdsbroker.irsbroker.GlusterVolumeOptionsInfoReturnForXmlRpc;
 import org.ovirt.engine.core.vdsbroker.irsbroker.IsoListReturnForXmlRpc;
 import org.ovirt.engine.core.vdsbroker.irsbroker.OneUuidReturnForXmlRpc;
@@ -257,5 +258,10 @@
             String configKey,
             String configValue);
 
+    GlusterVolumeGeorepConfigInfoReturnForXmlRpc 
getGlusterVolumeGeoreplicationConfigInfo(String volumeName,
+            String userName,
+            String remoteServer,
+            String remoteDir);
+
 }
 
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 c65b24c..0d779ef 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
@@ -252,5 +252,9 @@
             String configKey,
             String configValue);
 
+    public Map<String, Object> getGlusterVolumeGeoreplicationConfigInfo(String 
volumeName,
+            String userName,
+            String remoteServer,
+            String remoteDir);
 }
 
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 749f94d..62e067a 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
@@ -7,6 +7,7 @@
 
 import org.apache.commons.httpclient.HttpClient;
 import 
org.ovirt.engine.core.vdsbroker.irsbroker.GlusterServersListReturnForXmlRpc;
+import 
org.ovirt.engine.core.vdsbroker.irsbroker.GlusterVolumeGeorepConfigInfoReturnForXmlRpc;
 import 
org.ovirt.engine.core.vdsbroker.irsbroker.GlusterVolumeOptionsInfoReturnForXmlRpc;
 import org.ovirt.engine.core.vdsbroker.irsbroker.IsoListReturnForXmlRpc;
 import org.ovirt.engine.core.vdsbroker.irsbroker.OneUuidReturnForXmlRpc;
@@ -1210,5 +1211,21 @@
         }
     }
 
+    @Override
+    public GlusterVolumeGeorepConfigInfoReturnForXmlRpc 
getGlusterVolumeGeoreplicationConfigInfo(String volumeName,
+            String userName,
+            String remoteServer,
+            String remoteDir) {
+        try {
+            return new 
GlusterVolumeGeorepConfigInfoReturnForXmlRpc(vdsServer.getGlusterVolumeGeoreplicationConfigInfo(volumeName,
+                    userName,
+                    remoteServer,
+                    remoteDir));
+        } catch (UndeclaredThrowableException ute) {
+            throw new XmlRpcRunTimeException(ute);
+        }
+
+    }
+
 }
 
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 3146eec..20c4c1f 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
@@ -719,5 +719,8 @@
     @DefaultStringValue("Gluster Volume Geo-replication Config Failed")
     String SetGlusterVolumeGeoreplicationConfigFailed();
 
+    @DefaultStringValue("Gluster volume Geo-replication Configuration List 
Failed")
+    String GetGlusterVolumeGeorepConfigInfoFailed();
+
 }
 


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

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

Reply via email to