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 <[email protected]>
---
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 <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches