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

Reply via email to