Sahina Bose has uploaded a new change for review.

Change subject: engine: Enhance brick to support storage network
......................................................................

engine: Enhance brick to support storage network

Enhanced the brick entity to capture details of network
used to add the brick. This network will be used for
data communication.
The network id is null, if the host address is used.

Change-Id: I9749febf721172a09ddce756c0eeb745a9502e1a
Bug-Url: https://bugzilla.redhat.com/1049994
Signed-off-by: Sahina Bose <sab...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/AddBricksToGlusterVolumeCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/CreateGlusterVolumeCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterCommandBase.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/ReplaceGlusterVolumeBrickCommand.java
M 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/AddBricksToGlusterVolumeCommandTest.java
M 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/CreateGlusterVolumeCommandTest.java
M 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/ReplaceGlusterVolumeBrickCommandTest.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterBrickEntity.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterBrickDaoDbFacadeImpl.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/gluster/SubTabVolumeBrickView.java
M packaging/dbscripts/create_views.sql
M packaging/dbscripts/gluster_volumes_sp.sql
A packaging/dbscripts/upgrade/03_06_0840_add_network_gluster_bricks.sql
13 files changed, 206 insertions(+), 32 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/58/37558/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/AddBricksToGlusterVolumeCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/AddBricksToGlusterVolumeCommand.java
index 7675712..17b94a3 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/AddBricksToGlusterVolumeCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/AddBricksToGlusterVolumeCommand.java
@@ -73,7 +73,7 @@
             }
         }
 
-        return updateBrickServerNames(getParameters().getBricks(), true)
+        return updateBrickServerAndInterfaceNames(getParameters().getBricks(), 
true)
                 && validateDuplicateBricks(getParameters().getBricks());
     }
 
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/CreateGlusterVolumeCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/CreateGlusterVolumeCommand.java
index c8eaf9e..ce13c3b 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/CreateGlusterVolumeCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/CreateGlusterVolumeCommand.java
@@ -319,7 +319,7 @@
             break;
         }
 
-        return updateBrickServerNames(bricks, true) && 
validateDuplicateBricks(bricks);
+        return updateBrickServerAndInterfaceNames(bricks, true) && 
validateDuplicateBricks(bricks);
     }
 
     private void setBrickOrder(List<GlusterBrickEntity> bricks) {
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterCommandBase.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterCommandBase.java
index e9b5cf4..912218c 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterCommandBase.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterCommandBase.java
@@ -23,11 +23,16 @@
 import org.ovirt.engine.core.common.businessentities.VDSGroup;
 import org.ovirt.engine.core.common.businessentities.VdsStatic;
 import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterBrickEntity;
+import org.ovirt.engine.core.common.businessentities.network.Network;
+import 
org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface;
 import org.ovirt.engine.core.common.constants.gluster.GlusterConstants;
 import org.ovirt.engine.core.common.errors.VdcBllMessages;
 import org.ovirt.engine.core.common.locks.LockingGroup;
 import org.ovirt.engine.core.common.utils.Pair;
+import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.dao.gluster.GlusterBrickDao;
+import org.ovirt.engine.core.dao.network.InterfaceDao;
+import org.ovirt.engine.core.dao.network.NetworkDao;
 
 /**
  * Base class for all Gluster commands
@@ -129,16 +134,16 @@
         getReturnValue().getFault().setError(null);
     }
 
-    protected boolean updateBrickServerNames(List<GlusterBrickEntity> bricks, 
boolean addCanDoActionMessage) {
+    protected boolean 
updateBrickServerAndInterfaceNames(List<GlusterBrickEntity> bricks, boolean 
addCanDoActionMessage) {
         for (GlusterBrickEntity brick : bricks) {
-            if (!updateBrickServerName(brick, addCanDoActionMessage)) {
+            if (!updateBrickServerAndInterfaceName(brick, 
addCanDoActionMessage)) {
                 return false;
             }
         }
         return true;
     }
 
-    protected boolean updateBrickServerName(GlusterBrickEntity brick, boolean 
addCanDoActionMessage) {
+    protected boolean updateBrickServerAndInterfaceName(GlusterBrickEntity 
brick, boolean addCanDoActionMessage) {
         VdsStatic server = getVdsStaticDAO().get(brick.getServerId());
         if ((server == null || 
!server.getVdsGroupId().equals(getVdsGroupId()))) {
             if (addCanDoActionMessage) {
@@ -147,7 +152,53 @@
             return false;
         }
         brick.setServerName(server.getHostName());
+        // No interface has been selected to use for brick-
+        // engine will get the gluster network, if present
+        if (brick.getNetworkId() == null) {
+            VdsNetworkInterface iface = getGlusterNetworkId(server);
+            if (iface != null) {
+                brick.setNetworkId(iface.getId());
+                brick.setNetworkAddress(iface.getAddress());
+            }
+        } else {
+            // network id has been set, update the address
+            VdsNetworkInterface iface = 
getInterfaceDAO().get(brick.getNetworkId());
+            if (iface != null) {
+                brick.setNetworkAddress(iface.getAddress());
+            }
+        }
+
         return true;
+    }
+
+    private VdsNetworkInterface getGlusterNetworkId(VdsStatic server) {
+        Network glusterNetwork = null;
+        List<Network> allNetworksInCluster = 
getNetworkDAO().getAllForCluster(server.getVdsGroupId());
+
+        for (Network tempNetwork : allNetworksInCluster) {
+            if (tempNetwork.getCluster().isGluster()) {
+                glusterNetwork = tempNetwork;
+                break;
+            }
+        }
+
+        if (glusterNetwork != null) {
+            return getGlusterNetworkAddress(server.getId(), 
glusterNetwork.getName());
+        }
+
+        return null;
+    }
+
+    private VdsNetworkInterface getGlusterNetworkAddress(Guid hostId, String 
glusterNetworkName) {
+        final List<VdsNetworkInterface> nics =
+                getInterfaceDAO().getAllInterfacesForVds(hostId);
+
+        for (VdsNetworkInterface nic : nics) {
+            if (glusterNetworkName.equals(nic.getNetworkName())) {
+                return nic;
+            }
+        }
+        return null;
     }
 
     protected boolean validateDuplicateBricks(List<GlusterBrickEntity> 
newBricks) {
@@ -181,4 +232,14 @@
         return getDbFacade().getGlusterBrickDao();
     }
 
+    protected InterfaceDao getInterfaceDAO() {
+        return getDbFacade().getInterfaceDao();
+    }
+
+    @Override
+    protected NetworkDao getNetworkDAO() {
+        // TODO Auto-generated method stub
+        return super.getNetworkDAO();
+    }
+
 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/ReplaceGlusterVolumeBrickCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/ReplaceGlusterVolumeBrickCommand.java
index d75e02f..1e99d70 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/ReplaceGlusterVolumeBrickCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/ReplaceGlusterVolumeBrickCommand.java
@@ -47,11 +47,11 @@
             return false;
         }
 
-        if (!updateBrickServerName(getParameters().getExistingBrick(), true)) {
+        if 
(!updateBrickServerAndInterfaceName(getParameters().getExistingBrick(), true)) {
             return false;
         }
 
-        if (!updateBrickServerName(getParameters().getNewBrick(), true)) {
+        if (!updateBrickServerAndInterfaceName(getParameters().getNewBrick(), 
true)) {
             return false;
         }
 
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/AddBricksToGlusterVolumeCommandTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/AddBricksToGlusterVolumeCommandTest.java
index a723094..f0522dd 100644
--- 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/AddBricksToGlusterVolumeCommandTest.java
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/AddBricksToGlusterVolumeCommandTest.java
@@ -2,6 +2,7 @@
 
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
+import static org.mockito.Matchers.any;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.spy;
 
@@ -26,6 +27,9 @@
 import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeEntity;
 import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeType;
 import org.ovirt.engine.core.common.businessentities.gluster.TransportType;
+import org.ovirt.engine.core.common.businessentities.network.Network;
+import org.ovirt.engine.core.common.businessentities.network.NetworkCluster;
+import 
org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface;
 import org.ovirt.engine.core.common.errors.VdcBllMessages;
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.compat.Version;
@@ -33,6 +37,8 @@
 import org.ovirt.engine.core.dao.VdsStaticDAO;
 import org.ovirt.engine.core.dao.gluster.GlusterBrickDao;
 import org.ovirt.engine.core.dao.gluster.GlusterVolumeDao;
+import org.ovirt.engine.core.dao.network.InterfaceDao;
+import org.ovirt.engine.core.dao.network.NetworkDao;
 
 @RunWith(MockitoJUnitRunner.class)
 public class AddBricksToGlusterVolumeCommandTest {
@@ -52,17 +58,29 @@
     @Mock
     GlusterVolumeValidator validator;
 
-    private String serverName = "myhost";
+    @Mock
+    NetworkDao networkDao;
 
-    private Guid clusterId = new Guid("c0dd8ca3-95dd-44ad-a88a-440a6e3d8106");
+    @Mock
+    InterfaceDao interfaceDao;
 
-    private Guid serverId = new Guid("d7f10a21-bbf2-4ffd-aab6-4da0b3b2ccec");
+    private final String serverName = "myhost";
 
-    private Guid volumeId1 = new Guid("8bc6f108-c0ef-43ab-ba20-ec41107220f5");
+    private final Guid clusterId = new 
Guid("c0dd8ca3-95dd-44ad-a88a-440a6e3d8106");
 
-    private Guid volumeId2 = new Guid("b2cb2f73-fab3-4a42-93f0-d5e4c069a43e");
+    private final Guid serverId = new 
Guid("d7f10a21-bbf2-4ffd-aab6-4da0b3b2ccec");
+
+    private final Guid glusterIfaceId = new 
Guid("bbbb0a21-bbf2-4ffd-aab6-4da0b3b2ccec");
+
+    private final Guid volumeId1 = new 
Guid("8bc6f108-c0ef-43ab-ba20-ec41107220f5");
+
+    private final Guid volumeId2 = new 
Guid("b2cb2f73-fab3-4a42-93f0-d5e4c069a43e");
 
     private static final String BRICK_DIRECTORY = "/tmp/s1";
+
+    private static final String GLUSTER_NW = "gluster-net";
+
+    private static final String SERVER_ADDRESS = "10.70.8.8";
 
     /**
      * The command under test.
@@ -128,6 +146,8 @@
         doReturn(vdsStaticDao).when(command).getVdsStaticDAO();
         doReturn(brickDao).when(command).getGlusterBrickDao();
         doReturn(validator).when(command).createVolumeValidator();
+        doReturn(networkDao).when(command).getNetworkDAO();
+        doReturn(interfaceDao).when(command).getInterfaceDAO();
 
         doReturn(getVds(VDSStatus.Up)).when(command).getUpServer();
         
doReturn(getSingleBrickVolume(volumeId1)).when(volumeDao).getById(volumeId1);
@@ -141,6 +161,32 @@
                 .isForceCreateVolumeAllowed(Version.v3_1, true);
     }
 
+    private void prepareInterfaceMocks(AddBricksToGlusterVolumeCommand 
command) {
+        
doReturn(getNetworks()).when(networkDao).getAllForCluster(any(Guid.class));
+        
doReturn(getNetworkInterfaces()).when(interfaceDao).getAllInterfacesForVds(serverId);
+    }
+
+    private List<Network> getNetworks() {
+        List<Network> networks = new ArrayList<>();
+        Network nw = new Network();
+        nw.setName(GLUSTER_NW);
+        NetworkCluster nc = new NetworkCluster();
+        nc.setGluster(true);
+        nw.setCluster(nc);
+        networks.add(nw);
+        return networks;
+    }
+
+    private List<VdsNetworkInterface> getNetworkInterfaces() {
+        List<VdsNetworkInterface> ifaces = new ArrayList<>();
+        VdsNetworkInterface iface = new VdsNetworkInterface();
+        iface.setNetworkName(GLUSTER_NW);
+        iface.setId(Guid.newGuid());
+        iface.setAddress(SERVER_ADDRESS);
+        ifaces.add(iface);
+        return ifaces;
+    }
+
     private VDSGroup getVDsGroup() {
         VDSGroup vdsGroup = new VDSGroup();
         vdsGroup.setId(clusterId);
@@ -152,6 +198,7 @@
 
     private VdsStatic getVdsStatic() {
         VdsStatic vds = new VdsStatic();
+        vds.setId(serverId);
         vds.setVdsGroupId(clusterId);
         vds.setHostName(serverName);
         return vds;
@@ -214,6 +261,14 @@
     }
 
     @Test
+    public void canDoActionFailsDiffInterface() {
+        cmd = spy(createTestCommand(volumeId1, getBricks(volumeId1, 2), 0, 4, 
false));
+        prepareMocks(cmd);
+        prepareInterfaceMocks(cmd);
+        assertFalse(cmd.canDoAction());
+    }
+
+    @Test
     public void canDoActionFailsOnNull() {
         cmd = spy(createTestCommand(null, null, 0, 0, false));
         prepareMocks(cmd);
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/CreateGlusterVolumeCommandTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/CreateGlusterVolumeCommandTest.java
index 27cacd7..cf4f66f 100644
--- 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/CreateGlusterVolumeCommandTest.java
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/CreateGlusterVolumeCommandTest.java
@@ -31,6 +31,8 @@
 import org.ovirt.engine.core.dao.VdsStaticDAO;
 import org.ovirt.engine.core.dao.gluster.GlusterBrickDao;
 import org.ovirt.engine.core.dao.gluster.GlusterVolumeDao;
+import org.ovirt.engine.core.dao.network.InterfaceDao;
+import org.ovirt.engine.core.dao.network.NetworkDao;
 
 @RunWith(MockitoJUnitRunner.class)
 public class CreateGlusterVolumeCommandTest {
@@ -50,11 +52,17 @@
     @Mock
     GlusterVolumeValidator validator;
 
-    private String serverName = "myhost";
+    @Mock
+    NetworkDao networkDao;
 
-    private Guid clusterId = new Guid("c0dd8ca3-95dd-44ad-a88a-440a6e3d8106");
+    @Mock
+    InterfaceDao interfaceDao;
 
-    private Guid serverId = new Guid("d7f10a21-bbf2-4ffd-aab6-4da0b3b2ccec");
+    private final String serverName = "myhost";
+
+    private final Guid clusterId = new 
Guid("c0dd8ca3-95dd-44ad-a88a-440a6e3d8106");
+
+    private final Guid serverId = new 
Guid("d7f10a21-bbf2-4ffd-aab6-4da0b3b2ccec");
 
     private CreateGlusterVolumeCommand cmd;
 
@@ -93,6 +101,8 @@
         doReturn(vdsStaticDao).when(command).getVdsStaticDAO();
         doReturn(brickDao).when(command).getGlusterBrickDao();
         doReturn(validator).when(command).createVolumeValidator();
+        doReturn(networkDao).when(command).getNetworkDAO();
+        doReturn(interfaceDao).when(command).getInterfaceDAO();
 
         doReturn(getVds(VDSStatus.Up)).when(command).getUpServer();
         doReturn(getVdsStatic()).when(vdsStaticDao).get(serverId);
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/ReplaceGlusterVolumeBrickCommandTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/ReplaceGlusterVolumeBrickCommandTest.java
index 4d660f6..45c1238 100644
--- 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/ReplaceGlusterVolumeBrickCommandTest.java
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/ReplaceGlusterVolumeBrickCommandTest.java
@@ -28,6 +28,8 @@
 import org.ovirt.engine.core.compat.Version;
 import org.ovirt.engine.core.dao.VdsStaticDAO;
 import org.ovirt.engine.core.dao.gluster.GlusterVolumeDao;
+import org.ovirt.engine.core.dao.network.InterfaceDao;
+import org.ovirt.engine.core.dao.network.NetworkDao;
 
 @RunWith(MockitoJUnitRunner.class)
 public class ReplaceGlusterVolumeBrickCommandTest {
@@ -38,13 +40,19 @@
     @Mock
     VdsStaticDAO vdsStaticDao;
 
-    private String serverName = "myhost";
-    private Guid clusterId = new Guid("c0dd8ca3-95dd-44ad-a88a-440a6e3d8106");
-    private Guid serverId = new Guid("d7f10a21-bbf2-4ffd-aab6-4da0b3b2ccec");
-    private Guid volumeId1 = new Guid("8bc6f108-c0ef-43ab-ba20-ec41107220f5");
-    private Guid volumeId2 = new Guid("b2cb2f73-fab3-4a42-93f0-d5e4c069a43e");
-    private Guid volumeId3 = new Guid("000000000000-0000-0000-0000-00000003");
-    private Guid volumeId4 = new Guid("000000000000-0000-0000-0000-00000004");
+    @Mock
+    NetworkDao networkDao;
+
+    @Mock
+    InterfaceDao interfaceDao;
+
+    private final String serverName = "myhost";
+    private final Guid clusterId = new 
Guid("c0dd8ca3-95dd-44ad-a88a-440a6e3d8106");
+    private final Guid serverId = new 
Guid("d7f10a21-bbf2-4ffd-aab6-4da0b3b2ccec");
+    private final Guid volumeId1 = new 
Guid("8bc6f108-c0ef-43ab-ba20-ec41107220f5");
+    private final Guid volumeId2 = new 
Guid("b2cb2f73-fab3-4a42-93f0-d5e4c069a43e");
+    private final Guid volumeId3 = new 
Guid("000000000000-0000-0000-0000-00000003");
+    private final Guid volumeId4 = new 
Guid("000000000000-0000-0000-0000-00000004");
 
     /**
      * The command under test.
@@ -54,6 +62,8 @@
     private void prepareMocks(ReplaceGlusterVolumeBrickCommand command) {
         doReturn(volumeDao).when(command).getGlusterVolumeDao();
         doReturn(vdsStaticDao).when(command).getVdsStaticDAO();
+        doReturn(networkDao).when(command).getNetworkDAO();
+        doReturn(interfaceDao).when(command).getInterfaceDAO();
         doReturn(getVds(VDSStatus.Up)).when(command).getUpServer();
         
doReturn(getDistributedVolume(volumeId1)).when(volumeDao).getById(volumeId1);
         
doReturn(getDistributedVolume(volumeId2)).when(volumeDao).getById(volumeId2);
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterBrickEntity.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterBrickEntity.java
index 4cfad11..c3c037b 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterBrickEntity.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterBrickEntity.java
@@ -34,6 +34,10 @@
     @NotNull(message = "VALIDATION.GLUSTER.VOLUME.BRICK.SERVER_ID.NOT_NULL", 
groups = { CreateEntity.class })
     private Guid serverId;
 
+    private Guid networkId;
+
+    private String networkAddress;
+
     private String serverName;
 
     @NotNull(message = "VALIDATION.GLUSTER.VOLUME.BRICK.BRICK_DIR.NOT_NULL", 
groups = { CreateEntity.class })
@@ -84,6 +88,22 @@
         return brickDirectory;
     }
 
+    public Guid getNetworkId() {
+        return networkId;
+    }
+
+    public void setNetworkId(Guid networkId) {
+        this.networkId = networkId;
+    }
+
+    public String getNetworkAddress() {
+        return networkAddress;
+    }
+
+    public void setNetworkAddress(String networkAddress) {
+        this.networkAddress = networkAddress;
+    }
+
     @Override
     public GlusterStatus getStatus() {
         return status;
@@ -99,12 +119,15 @@
     }
 
     public String getQualifiedName() {
+        if (networkId != null && networkAddress != null && 
!networkAddress.isEmpty()) {
+            return networkAddress + ":" + brickDirectory;
+        }
         return serverName + ":" + brickDirectory;
     }
 
     @Override
     public String toString() {
-        return getQualifiedName();
+        return getQualifiedName() + "(" + serverName + ")";
     }
 
     @Override
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterBrickDaoDbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterBrickDaoDbFacadeImpl.java
index b760805..731868f 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterBrickDaoDbFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterBrickDaoDbFacadeImpl.java
@@ -53,7 +53,8 @@
                         .addValue("new_id", newBrick.getId())
                         .addValue("new_server_id", newBrick.getServerId())
                         .addValue("new_brick_dir", 
newBrick.getBrickDirectory())
-                        .addValue("new_status", 
EnumUtils.nameOrNull(newBrick.getStatus())));
+                        .addValue("new_status", 
EnumUtils.nameOrNull(newBrick.getStatus()))
+                        .addValue("new_interface_id", 
newBrick.getNetworkId()));
     }
 
     @Override
@@ -131,7 +132,8 @@
                 .addValue("server_id", brick.getServerId())
                 .addValue("brick_dir", brick.getBrickDirectory())
                 .addValue("brick_order", (brick.getBrickOrder() == null) ? 
Integer.valueOf(0) : brick.getBrickOrder())
-                .addValue("status", EnumUtils.nameOrNull(brick.getStatus()));
+                .addValue("status", EnumUtils.nameOrNull(brick.getStatus()))
+                .addValue("interface_id", brick.getNetworkId());
     }
 
     private static final class GlusterBrickRowMapper implements 
RowMapper<GlusterBrickEntity> {
@@ -151,6 +153,9 @@
             brick.setBrickOrder(rs.getInt("brick_order"));
             brick.setStatus(GlusterStatus.valueOf(rs.getString("status")));
             brick.getAsyncTask().setTaskId(getGuid(rs, "task_id"));
+
+            brick.setNetworkId(getGuid(rs, "interface_id"));
+            brick.setNetworkAddress(rs.getString("interface_address"));
             return brick;
         }
     }
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/gluster/SubTabVolumeBrickView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/gluster/SubTabVolumeBrickView.java
index b83883e..5d2b914 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/gluster/SubTabVolumeBrickView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/gluster/SubTabVolumeBrickView.java
@@ -68,7 +68,7 @@
         TextColumnWithTooltip<GlusterBrickEntity> directoryColumn = new 
TextColumnWithTooltip<GlusterBrickEntity>() {
             @Override
             public String getValue(GlusterBrickEntity brick) {
-                return brick.getBrickDirectory();
+                return brick.getQualifiedName();
             }
         };
         directoryColumn.makeSortable();
diff --git a/packaging/dbscripts/create_views.sql 
b/packaging/dbscripts/create_views.sql
index 3311f6d..e6714f8 100644
--- a/packaging/dbscripts/create_views.sql
+++ b/packaging/dbscripts/create_views.sql
@@ -1774,10 +1774,12 @@
 AS
 SELECT gluster_volume_bricks.*,
        vds_static.host_name AS vds_name,
-       gluster_volumes.vol_name AS volume_name
+       gluster_volumes.vol_name AS volume_name,
+       vds_interface.addr as interface_address
 FROM gluster_volume_bricks
 INNER JOIN vds_static ON vds_static.vds_id = gluster_volume_bricks.server_id
-INNER JOIN gluster_volumes ON gluster_volumes.id = 
gluster_volume_bricks.volume_id;
+INNER JOIN gluster_volumes ON gluster_volumes.id = 
gluster_volume_bricks.volume_id
+LEFT OUTER JOIN vds_interface ON vds_interface.id = 
gluster_volume_bricks.interface_id ;
 
 CREATE OR REPLACE VIEW gluster_volume_task_steps
 AS
diff --git a/packaging/dbscripts/gluster_volumes_sp.sql 
b/packaging/dbscripts/gluster_volumes_sp.sql
index 03efc8d..ece14f4 100644
--- a/packaging/dbscripts/gluster_volumes_sp.sql
+++ b/packaging/dbscripts/gluster_volumes_sp.sql
@@ -41,12 +41,13 @@
                                                     v_server_id UUID,
                                                     v_brick_dir VARCHAR(4096),
                                                     v_brick_order INTEGER,
-                                                    v_status VARCHAR(32))
+                                                    v_status VARCHAR(32),
+                                                    v_interface_id UUID)
     RETURNS VOID
     AS $procedure$
 BEGIN
-    INSERT INTO gluster_volume_bricks (id, volume_id, server_id, brick_dir, 
brick_order, status)
-    VALUES (v_id, v_volume_id, v_server_id, v_brick_dir, v_brick_order, 
v_status);
+    INSERT INTO gluster_volume_bricks (id, volume_id, server_id, brick_dir, 
brick_order, status, interface_id)
+    VALUES (v_id, v_volume_id, v_server_id, v_brick_dir, v_brick_order, 
v_status, v_interface_id);
 END; $procedure$
 LANGUAGE plpgsql;
 
@@ -460,7 +461,8 @@
                                                     v_new_id UUID,
                                                     v_new_server_id UUID,
                                                     v_new_brick_dir 
VARCHAR(4096),
-                                                    v_new_status VARCHAR(32))
+                                                    v_new_status VARCHAR(32),
+                                                    v_new_interface_id UUID)
     RETURNS VOID
     AS $procedure$
 BEGIN
@@ -469,6 +471,7 @@
            server_id = v_new_server_id,
            brick_dir = v_new_brick_dir,
            status = v_new_status,
+           interface_id = v_new_interface_id,
            _update_date = LOCALTIMESTAMP
     WHERE  id = v_id;
 END; $procedure$
diff --git 
a/packaging/dbscripts/upgrade/03_06_0840_add_network_gluster_bricks.sql 
b/packaging/dbscripts/upgrade/03_06_0840_add_network_gluster_bricks.sql
new file mode 100644
index 0000000..997b936
--- /dev/null
+++ b/packaging/dbscripts/upgrade/03_06_0840_add_network_gluster_bricks.sql
@@ -0,0 +1,5 @@
+ALTER TABLE gluster_volume_bricks add column interface_id uuid null;
+
+ALTER TABLE ONLY gluster_volume_bricks
+    ADD CONSTRAINT fk_gluster_volume_bricks_iface_id FOREIGN KEY 
(interface_id) REFERENCES
+    vds_interface(id);


-- 
To view, visit http://gerrit.ovirt.org/37558
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I9749febf721172a09ddce756c0eeb745a9502e1a
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Sahina Bose <sab...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to