Ramesh N has uploaded a new change for review. Change subject: gluster: update volume capacity info in sync job ......................................................................
gluster: update volume capacity info in sync job Update the volume capacity information as part of GlusterSyncJob. Change-Id: Ifd187eb59ab83c426db7e9ba48a04ae7e0bef0b9 Signed-off-by: Ramesh Nachimuthu <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterSyncJob.java M backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/GlusterSyncJobTest.java 2 files changed, 47 insertions(+), 0 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/11/23011/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterSyncJob.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterSyncJob.java index fc14cc5..d2bac5d 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterSyncJob.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterSyncJob.java @@ -27,16 +27,19 @@ import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeAdvancedDetails; import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeEntity; import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeOptionEntity; +import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeSizeInfo; import org.ovirt.engine.core.common.businessentities.gluster.TransportType; import org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface; import org.ovirt.engine.core.common.constants.gluster.GlusterConstants; import org.ovirt.engine.core.common.gluster.GlusterFeatureSupported; import org.ovirt.engine.core.common.utils.ListUtils; +import org.ovirt.engine.core.common.utils.ObjectUtils; import org.ovirt.engine.core.common.utils.gluster.GlusterCoreUtil; import org.ovirt.engine.core.common.vdscommands.RemoveVdsVDSCommandParameters; import org.ovirt.engine.core.common.vdscommands.VDSCommandType; import org.ovirt.engine.core.common.vdscommands.VDSReturnValue; import org.ovirt.engine.core.common.vdscommands.gluster.GlusterVolumeAdvancedDetailsVDSParameters; +import org.ovirt.engine.core.common.vdscommands.gluster.GlusterVolumeVDSParameters; import org.ovirt.engine.core.common.vdscommands.gluster.GlusterVolumesListVDSParameters; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.TransactionScopeOption; @@ -384,7 +387,20 @@ upServer = getNewUpServer(existingServers, upServer); } } + fetchVolumeCapacityInfo(fetchedVolumes, upServer); return fetchedVolumes; + } + + private void fetchVolumeCapacityInfo(Map<Guid, GlusterVolumeEntity> fetchedVolumes, VDS upServer) { + for (GlusterVolumeEntity volume : fetchedVolumes.values()) { + VDSReturnValue returnValue = + runVdsCommand(VDSCommandType.GetGlusterVolumeSizeInfo, + new GlusterVolumeVDSParameters(upServer.getId(), volume.getName())); + GlusterVolumeSizeInfo capacityInfo = (GlusterVolumeSizeInfo) returnValue.getReturnValue(); + capacityInfo.setVolumeId(volume.getId()); + capacityInfo.setVolumeName(volume.getName()); + volume.setCapacityDetails(capacityInfo); + } } @SuppressWarnings("unchecked") @@ -474,11 +490,20 @@ private void updateVolume(GlusterVolumeEntity existingVolume, GlusterVolumeEntity fetchedVolume) { updateVolumeProperties(existingVolume, fetchedVolume); + updateVolumeCapacityInfo(existingVolume, fetchedVolume); updateBricks(existingVolume, fetchedVolume); updateOptions(existingVolume, fetchedVolume); updateTransportTypes(existingVolume, fetchedVolume); } + private void updateVolumeCapacityInfo(GlusterVolumeEntity existingVolume, GlusterVolumeEntity fetchedVolume) { + + if (!ObjectUtils.objectsEqual(existingVolume.getCapacityDetails(), fetchedVolume.getCapacityDetails())) { + log.infoFormat("Updating capacity info for volume {0} with fetched properties.", existingVolume.getName()); + getVolumeDao().updateVolumeCapacityInfo(fetchedVolume.getCapacityDetails()); + } + } + private void updateTransportTypes(GlusterVolumeEntity existingVolume, GlusterVolumeEntity fetchedVolume) { Set<TransportType> existingTransportTypes = existingVolume.getTransportTypes(); Set<TransportType> fetchedTransportTypes = fetchedVolume.getTransportTypes(); diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/GlusterSyncJobTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/GlusterSyncJobTest.java index 4baad45..e35e27e 100644 --- a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/GlusterSyncJobTest.java +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/GlusterSyncJobTest.java @@ -42,6 +42,7 @@ import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeAdvancedDetails; import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeEntity; import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeOptionEntity; +import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeSizeInfo; import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeType; import org.ovirt.engine.core.common.businessentities.gluster.PeerStatus; import org.ovirt.engine.core.common.businessentities.gluster.TransportType; @@ -51,6 +52,7 @@ import org.ovirt.engine.core.common.vdscommands.VDSCommandType; import org.ovirt.engine.core.common.vdscommands.VDSParametersBase; import org.ovirt.engine.core.common.vdscommands.VDSReturnValue; +import org.ovirt.engine.core.common.vdscommands.gluster.GlusterVolumeVDSParameters; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.Version; import org.ovirt.engine.core.dal.dbbroker.auditloghandling.gluster.GlusterAuditLogUtil; @@ -256,9 +258,23 @@ .getVolumeAdvancedDetails(existingServer1, CLUSTER_ID, existingReplVol.getName()); doReturn(new VDSReturnValue()).when(glusterManager).runVdsCommand(eq(VDSCommandType.RemoveVds), argThat(isRemovedServer())); + doReturn(getVolumeCapacityInfo()).when(glusterManager) + .runVdsCommand(eq(VDSCommandType.GetGlusterVolumeSizeInfo), + any(GlusterVolumeVDSParameters.class)); doNothing().when(glusterManager).acquireLock(CLUSTER_ID); doNothing().when(glusterManager).releaseLock(CLUSTER_ID); doReturn(glusterUtil).when(glusterManager).getGlusterUtil(); + } + + private VDSReturnValue getVolumeCapacityInfo() { + VDSReturnValue vdsReturnValune = new VDSReturnValue(); + GlusterVolumeSizeInfo capacityInfo = new GlusterVolumeSizeInfo(); + capacityInfo.setTotalSize((long) 100000); + capacityInfo.setUsedSize((long) 50000); + capacityInfo.setFreeSize((long) 50000); + vdsReturnValune.setReturnValue(capacityInfo); + vdsReturnValune.setSucceeded(true); + return vdsReturnValune; } private ArgumentMatcher<VDSParametersBase> isRemovedServer() { @@ -329,6 +345,10 @@ // create new volume inOrder.verify(volumeDao, times(1)).save(newVolume); + // // update volume capacity info + // inOrder.verify(volumeDao, times(1)) + // .updateVolumeCapacityInfo((GlusterVolumeSizeInfo) getVolumeCapacityInfo().getReturnValue()); + // remove detached bricks inOrder.verify(brickDao, times(1)).removeAll(argThat(containsRemovedBricks())); // add new bricks @@ -374,6 +394,8 @@ doReturn(existingReplVol).when(volumeDao).getById(EXISTING_VOL_REPL_ID); doReturn(null).when(volumeDao).getById(NEW_VOL_ID); doNothing().when(volumeDao).save(newVolume); + doNothing().when(volumeDao) + .updateVolumeCapacityInfo((GlusterVolumeSizeInfo) getVolumeCapacityInfo().getReturnValue()); doNothing().when(brickDao).removeAll(argThat(containsRemovedBricks())); doNothing().when(brickDao).save(argThat(isAddedBrick())); doNothing().when(optionDao).updateVolumeOption(argThat(isUpdatedOptionId()), eq(OPTION_VALUE_ON)); -- To view, visit http://gerrit.ovirt.org/23011 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ifd187eb59ab83c426db7e9ba48a04ae7e0bef0b9 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Ramesh N <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
