anmolbabu has uploaded a new change for review. Change subject: engine : Query to fetch list of volumes eligible for geo-rep ......................................................................
engine : Query to fetch list of volumes eligible for geo-rep Query to fetch list of volumes eligible for geo-rep session. This query fetches a list of volumes satisfying the required conditions for geo-rep session establishment. Change-Id: I0fc3ecb15535181f1ca2a8780461cb89788a3f41 Signed-off-by: Anmol Babu <[email protected]> --- A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetGeoRepSessionCreateEligibleVolumeListQuery.java A backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/GetGeoRepSessionCreateEligibleVolumeListQueryTest.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java 3 files changed, 80 insertions(+), 0 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/45/33845/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetGeoRepSessionCreateEligibleVolumeListQuery.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetGeoRepSessionCreateEligibleVolumeListQuery.java new file mode 100644 index 0000000..aea6ba5 --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetGeoRepSessionCreateEligibleVolumeListQuery.java @@ -0,0 +1,41 @@ +package org.ovirt.engine.core.bll.gluster; + +import java.util.ArrayList; +import java.util.List; + +import org.ovirt.engine.core.common.businessentities.StoragePool; +import org.ovirt.engine.core.common.businessentities.VDSGroup; +import org.ovirt.engine.core.common.businessentities.gluster.GlusterStatus; +import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeEntity; +import org.ovirt.engine.core.common.queries.gluster.GlusterVolumeQueriesParameters; +import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.core.dal.dbbroker.DbFacade; + +public class GetGeoRepSessionCreateEligibleVolumeListQuery<P extends GlusterVolumeQueriesParameters> extends GlusterQueriesCommandBase<P> { + + protected GetGeoRepSessionCreateEligibleVolumeListQuery(P parameters) { + super(parameters); + } + + @Override + protected void executeQueryCommand() { + List<GlusterVolumeEntity> eligibleVolumeList = new ArrayList<GlusterVolumeEntity>(); + Guid masterVolumeId = getParameters().getVolumeId(); + DbFacade dbFacadeInstance = DbFacade.getInstance(); + List<StoragePool> datacenters = dbFacadeInstance.getStoragePoolDao().getDataCentersByClusterService(false, true); + for(StoragePool currentDataCenter : datacenters) { + Guid currentDataCenterId = currentDataCenter.getId(); + List<VDSGroup> vdsGroups = dbFacadeInstance.getVdsGroupDao().getAllForStoragePool(currentDataCenterId); + for(VDSGroup vdsGroup : vdsGroups) { + List<GlusterVolumeEntity> volumes = getGlusterVolumeDao().getByClusterId(vdsGroup.getId()); + for(GlusterVolumeEntity volume : volumes) { + if(volume.getId() != masterVolumeId && volume.getStatus() == GlusterStatus.UP) { + eligibleVolumeList.add(volume); + } + } + } + } + getQueryReturnValue().setReturnValue(eligibleVolumeList); + } + +} diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/GetGeoRepSessionCreateEligibleVolumeListQueryTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/GetGeoRepSessionCreateEligibleVolumeListQueryTest.java new file mode 100644 index 0000000..ef458bb --- /dev/null +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/GetGeoRepSessionCreateEligibleVolumeListQueryTest.java @@ -0,0 +1,38 @@ +package org.ovirt.engine.core.bll.gluster; + +import static org.mockito.Mockito.doReturn; + +import org.mockito.Mock; +import org.ovirt.engine.core.bll.AbstractQueryTest; +import org.ovirt.engine.core.common.queries.gluster.GlusterVolumeQueriesParameters; +import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.core.dao.StoragePoolDAO; +import org.ovirt.engine.core.dao.VdsGroupDAO; +import org.ovirt.engine.core.dao.gluster.GlusterVolumeDao; + +public class GetGeoRepSessionCreateEligibleVolumeListQueryTest extends AbstractQueryTest<GlusterVolumeQueriesParameters, GetGeoRepSessionCreateEligibleVolumeListQuery<GlusterVolumeQueriesParameters>> { + + private static final Guid MASTER_VOLUME_ID = Guid.newGuid(); + + @Mock + GlusterVolumeDao volumeDao; + + @Mock + VdsGroupDAO vdsGroupDao; + + @Mock + StoragePoolDAO storagePoolDao; + + private void setupMock() { + // Mock the query's parameters + doReturn(MASTER_VOLUME_ID).when(getQueryParameters().getVolumeId()); + + // Mock the DAO + doReturn(volumeDao).when(getQuery()).getGlusterVolumeDao(); + doReturn(vdsGroupDao).when(getDbFacadeMockInstance()).getVdsGroupDao(); + doReturn(storagePoolDao).when(getDbFacadeMockInstance()).getStoragePoolDao(); + + + } + +} 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 cac4b0b..c27b0ce 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 @@ -331,6 +331,7 @@ GetGlusterVolumeRebalanceStatus, GetGlusterVolumeRemoveBricksStatus, GetGlusterVolumeByTaskId, + GetGeoRepSessionCreateEligibleVolumeList, GetDefaultConfigurationVersion(VdcQueryAuthType.User), OsRepository(VdcQueryAuthType.User), -- To view, visit http://gerrit.ovirt.org/33845 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I0fc3ecb15535181f1ca2a8780461cb89788a3f41 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: anmolbabu <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
