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