Ramesh N has uploaded a new change for review. Change subject: gluster: don't return used bricks in GetUnusedGlusterBricksQuery ......................................................................
gluster: don't return used bricks in GetUnusedGlusterBricksQuery There is an issue with the filtering logic in query GetUnusedGlusterBricksQuery. Brick directory will not be just brick mount point, it will be a directory inside the brick mount point. Hence changing the logic accordigly Change-Id: I2fb08502a31b02484f9d902172832ccdfa4ef48a Bug-Url: https://bugzilla.redhat.com/1216318 Signed-off-by: Ramesh Nachimuthu <rnach...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetUnusedGlusterBricksQuery.java 1 file changed, 12 insertions(+), 9 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/33/41533/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetUnusedGlusterBricksQuery.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetUnusedGlusterBricksQuery.java index 871ed5b..b97a7a3 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetUnusedGlusterBricksQuery.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetUnusedGlusterBricksQuery.java @@ -1,9 +1,7 @@ package org.ovirt.engine.core.bll.gluster; import java.util.ArrayList; -import java.util.HashSet; import java.util.List; -import java.util.Set; import org.ovirt.engine.core.bll.QueriesCommandBase; import org.ovirt.engine.core.common.businessentities.gluster.GlusterBrickEntity; @@ -23,25 +21,19 @@ List<StorageDevice> storageDevicesInHost = getDbFacade().getStorageDeviceDao().getStorageDevicesInHost(getParameters().getVdsId()); getQueryReturnValue().setReturnValue(getUnUsedBricks(storageDevicesInHost)); - } private List<StorageDevice> getUnUsedBricks(List<StorageDevice> storageDevicesInHost) { List<GlusterBrickEntity> usedBricks = getDbFacade().getGlusterBrickDao().getGlusterVolumeBricksByServerId(getParameters().getVdsId()); List<StorageDevice> freeBricks = new ArrayList<StorageDevice>(); - Set<String> bricksDir = new HashSet<String>(); - for (GlusterBrickEntity brick : usedBricks) { - bricksDir.add(brick.getBrickDirectory()); - } - for (StorageDevice storageDevice : storageDevicesInHost) { if (storageDevice.getMountPoint() != null && !storageDevice.getMountPoint().isEmpty() && (storageDevice.getMountPoint() .startsWith(Config.<String> getValue(ConfigValues.GlusterDefaultBrickMountPoint)) || storageDevice.isGlusterBrick()) - && !bricksDir.contains(storageDevice.getMountPoint())) { + && !isBrickUsed(usedBricks, storageDevice.getMountPoint())) { freeBricks.add(storageDevice); } } @@ -49,4 +41,15 @@ return freeBricks; } + private boolean isBrickUsed(List<GlusterBrickEntity> usedBricks, String mountPoint) { + for (GlusterBrickEntity brick : usedBricks) { + // Checks if the given mount point is already part of any Gluster brick directory. + // Brick directory may be any directory inside the mount points, so we are using brickDir.startsWith() + if (brick.getBrickDirectory().startsWith(mountPoint)) { + return true; + } + } + return false; + } + } -- To view, visit https://gerrit.ovirt.org/41533 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I2fb08502a31b02484f9d902172832ccdfa4ef48a Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: ovirt-engine-3.5-gluster Gerrit-Owner: Ramesh N <rnach...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches