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