Kanagaraj M has uploaded a new change for review.

Change subject: webadmin: Gluster Volume Brick - Advanced Details
......................................................................

webadmin: Gluster Volume Brick - Advanced Details

A new action 'Advanced Details' is added to the Bricks
sub tab of volume, which will open Brick Advanced Details
dialog when the user clicks.

Brick Details dialog contains 4 sections named General,
Clients, Memory Statistics and Memory Pools. General section
will show the basic information about the selected brick.

Clients section will list all the clients which are exchanged
data with the brick.

Change-Id: I6571020ed3a17df21eef40acf4cda2bbf4fb2374
Signed-off-by: Kanagaraj M <kmayi...@redhat.com>
---
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
A 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/BrickAdvancedDetailsModel.java
A 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/BrickPropertiesModel.java
A 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/MemoryStatisticsModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeBrickListModel.java
M 
frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PresenterModule.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/VolumeModule.java
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/gluster/BrickAdvancedDetailsPopupPresenterWidget.java
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/BrickAdvancedDetailsPopupView.java
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/BrickAdvancedDetailsPopupView.ui.xml
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/gluster/SubTabVolumeBrickView.java
13 files changed, 981 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/98/8898/1

diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
index be396a5..21e0e68 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
@@ -1102,6 +1102,21 @@
                 aQuery);
     }
 
+    public static void GetGlusterVolumeBrickDetails(AsyncQuery aQuery, Guid 
clusterId, String volume, String brick) {
+        aQuery.converterCallback = new IAsyncConverter() {
+            @Override
+            public Object Convert(Object source, AsyncQuery _asyncQuery)
+            {
+                return source;
+            }
+        };
+        GlusterVolumeAdvancedDetailsParameters parameters =
+                new GlusterVolumeAdvancedDetailsParameters(clusterId, volume, 
brick, true);
+        Frontend.RunQuery(VdcQueryType.GetGlusterVolumeAdvancedDetails,
+                parameters,
+                aQuery);
+    }
+
     public static void GetRpmVersionViaPublic(AsyncQuery aQuery) {
         aQuery.converterCallback = new IAsyncConverter() {
             @Override
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/BrickAdvancedDetailsModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/BrickAdvancedDetailsModel.java
new file mode 100644
index 0000000..8e71ead
--- /dev/null
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/BrickAdvancedDetailsModel.java
@@ -0,0 +1,62 @@
+package org.ovirt.engine.ui.uicommonweb.models.gluster;
+
+import org.ovirt.engine.ui.uicommonweb.models.EntityModel;
+import org.ovirt.engine.ui.uicommonweb.models.ListModel;
+import org.ovirt.engine.ui.uicommonweb.models.Model;
+
+public class BrickAdvancedDetailsModel extends Model {
+
+    private EntityModel brick;
+    private BrickPropertiesModel brickProperties;
+    private ListModel clients;
+    private MemoryStatisticsModel memoryStatistics;
+    private ListModel memoryPools;
+
+    public BrickAdvancedDetailsModel() {
+        setBrick(new EntityModel());
+        setBrickProperties(new BrickPropertiesModel());
+        setClients(new ListModel());
+        setMemoryStatistics(new MemoryStatisticsModel());
+        setMemoryPools(new ListModel());
+    }
+
+    public BrickPropertiesModel getBrickProperties() {
+        return brickProperties;
+    }
+
+    public void setBrickProperties(BrickPropertiesModel brickProperties) {
+        this.brickProperties = brickProperties;
+    }
+
+    public EntityModel getBrick() {
+        return brick;
+    }
+
+    public void setBrick(EntityModel brick) {
+        this.brick = brick;
+    }
+
+    public ListModel getClients() {
+        return clients;
+    }
+
+    public void setClients(ListModel clients) {
+        this.clients = clients;
+    }
+
+    public MemoryStatisticsModel getMemoryStatistics() {
+        return memoryStatistics;
+    }
+
+    public void setMemoryStatistics(MemoryStatisticsModel memoryStatistics) {
+        this.memoryStatistics = memoryStatistics;
+    }
+
+    public ListModel getMemoryPools() {
+        return memoryPools;
+    }
+
+    public void setMemoryPools(ListModel memoryPools) {
+        this.memoryPools = memoryPools;
+    }
+}
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/BrickPropertiesModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/BrickPropertiesModel.java
new file mode 100644
index 0000000..009420b
--- /dev/null
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/BrickPropertiesModel.java
@@ -0,0 +1,114 @@
+package org.ovirt.engine.ui.uicommonweb.models.gluster;
+
+import org.ovirt.engine.core.common.businessentities.gluster.BrickProperties;
+import org.ovirt.engine.ui.uicommonweb.models.EntityModel;
+import org.ovirt.engine.ui.uicommonweb.models.Model;
+
+public class BrickPropertiesModel extends Model {
+
+    private EntityModel status;
+    private EntityModel port;
+    private EntityModel pid;
+    private EntityModel totalSize;
+    private EntityModel freeSize;
+    private EntityModel device;
+    private EntityModel blockSize;
+    private EntityModel mountOptions;
+    private EntityModel fileSystem;
+
+    public BrickPropertiesModel() {
+        setStatus(new EntityModel());
+        setPort(new EntityModel());
+        setPid(new EntityModel());
+        setTotalSize(new EntityModel());
+        setFreeSize(new EntityModel());
+        setDevice(new EntityModel());
+        setBlockSize(new EntityModel());
+        setMountOptions(new EntityModel());
+        setFileSystem(new EntityModel());
+    }
+
+    public void setProperties(BrickProperties brickProperties) {
+        getStatus().setEntity(brickProperties.getStatus());
+        getPort().setEntity(brickProperties.getPort());
+        getPid().setEntity(brickProperties.getPid());
+        getTotalSize().setEntity(brickProperties.getTotalSize());
+        getFreeSize().setEntity(brickProperties.getFreeSize());
+        getDevice().setEntity(brickProperties.getDevice());
+        getBlockSize().setEntity(brickProperties.getBlockSize());
+        getMountOptions().setEntity(brickProperties.getMntOptions());
+        getFileSystem().setEntity(brickProperties.getFsName());
+    }
+
+    public EntityModel getStatus() {
+        return status;
+    }
+
+    public void setStatus(EntityModel status) {
+        this.status = status;
+    }
+
+    public EntityModel getPort() {
+        return port;
+    }
+
+    public void setPort(EntityModel port) {
+        this.port = port;
+    }
+
+    public EntityModel getPid() {
+        return pid;
+    }
+
+    public void setPid(EntityModel pid) {
+        this.pid = pid;
+    }
+
+    public EntityModel getTotalSize() {
+        return totalSize;
+    }
+
+    public void setTotalSize(EntityModel totalSize) {
+        this.totalSize = totalSize;
+    }
+
+    public EntityModel getFreeSize() {
+        return freeSize;
+    }
+
+    public void setFreeSize(EntityModel freeSize) {
+        this.freeSize = freeSize;
+    }
+
+    public EntityModel getDevice() {
+        return device;
+    }
+
+    public void setDevice(EntityModel device) {
+        this.device = device;
+    }
+
+    public EntityModel getBlockSize() {
+        return blockSize;
+    }
+
+    public void setBlockSize(EntityModel blockSize) {
+        this.blockSize = blockSize;
+    }
+
+    public EntityModel getMountOptions() {
+        return mountOptions;
+    }
+
+    public void setMountOptions(EntityModel mountOptions) {
+        this.mountOptions = mountOptions;
+    }
+
+    public EntityModel getFileSystem() {
+        return fileSystem;
+    }
+
+    public void setFileSystem(EntityModel fileSystem) {
+        this.fileSystem = fileSystem;
+    }
+}
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/MemoryStatisticsModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/MemoryStatisticsModel.java
new file mode 100644
index 0000000..ebfccdf
--- /dev/null
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/MemoryStatisticsModel.java
@@ -0,0 +1,126 @@
+package org.ovirt.engine.ui.uicommonweb.models.gluster;
+
+import org.ovirt.engine.core.common.businessentities.gluster.MallInfo;
+import org.ovirt.engine.ui.uicommonweb.models.EntityModel;
+import org.ovirt.engine.ui.uicommonweb.models.Model;
+
+public class MemoryStatisticsModel extends Model {
+
+    private EntityModel totalAllocated;
+    private EntityModel freeBlocks;
+    private EntityModel freeFastbin;
+    private EntityModel mmappedBlocks;
+    private EntityModel spaceAllocatedMmapped;
+    private EntityModel maxTotalAllocated;
+    private EntityModel spaceFreedFastbin;
+    private EntityModel totalAllocatedSpace;
+    private EntityModel totalFreeSpace;
+    private EntityModel releasableFreeSpace;
+
+    public MemoryStatisticsModel() {
+        setTotalAllocated(new EntityModel());
+        setFreeBlocks(new EntityModel());
+        setFreeFastbin(new EntityModel());
+        setMmappedBlocks(new EntityModel());
+        setSpaceAllocatedMmapped(new EntityModel());
+        setMaxTotalAllocated(new EntityModel());
+        setSpaceFreedFastbin(new EntityModel());
+        setTotalAllocatedSpace(new EntityModel());
+        setTotalFreeSpace(new EntityModel());
+        setReleasableFreeSpace(new EntityModel());
+    }
+
+    public void updateMemoryStatistics(MallInfo mallInfo) {
+        getTotalAllocated().setEntity(mallInfo.getArena());
+        getFreeBlocks().setEntity(mallInfo.getOrdblks());
+        getFreeFastbin().setEntity(mallInfo.getSmblks());
+        getMmappedBlocks().setEntity(mallInfo.getHblks());
+        getSpaceAllocatedMmapped().setEntity(mallInfo.getHblkhd());
+        getMaxTotalAllocated().setEntity(mallInfo.getUsmblks());
+        getSpaceFreedFastbin().setEntity(mallInfo.getFsmblks());
+        getTotalAllocatedSpace().setEntity(mallInfo.getUordblks());
+        getTotalFreeSpace().setEntity(mallInfo.getFordblks());
+        getReleasableFreeSpace().setEntity(mallInfo.getKeepcost());
+    }
+
+    public EntityModel getTotalAllocated() {
+        return totalAllocated;
+    }
+
+    public void setTotalAllocated(EntityModel totalAllocated) {
+        this.totalAllocated = totalAllocated;
+    }
+
+    public EntityModel getFreeBlocks() {
+        return freeBlocks;
+    }
+
+    public void setFreeBlocks(EntityModel freeBlocks) {
+        this.freeBlocks = freeBlocks;
+    }
+
+    public EntityModel getFreeFastbin() {
+        return freeFastbin;
+    }
+
+    public void setFreeFastbin(EntityModel freeFastbin) {
+        this.freeFastbin = freeFastbin;
+    }
+
+    public EntityModel getMmappedBlocks() {
+        return mmappedBlocks;
+    }
+
+    public void setMmappedBlocks(EntityModel mmappedBlocks) {
+        this.mmappedBlocks = mmappedBlocks;
+    }
+
+    public EntityModel getSpaceAllocatedMmapped() {
+        return spaceAllocatedMmapped;
+    }
+
+    public void setSpaceAllocatedMmapped(EntityModel spaceAllocatedMmapped) {
+        this.spaceAllocatedMmapped = spaceAllocatedMmapped;
+    }
+
+    public EntityModel getMaxTotalAllocated() {
+        return maxTotalAllocated;
+    }
+
+    public void setMaxTotalAllocated(EntityModel maxTotalAllocated) {
+        this.maxTotalAllocated = maxTotalAllocated;
+    }
+
+    public EntityModel getSpaceFreedFastbin() {
+        return spaceFreedFastbin;
+    }
+
+    public void setSpaceFreedFastbin(EntityModel spaceFreedFastbin) {
+        this.spaceFreedFastbin = spaceFreedFastbin;
+    }
+
+    public EntityModel getTotalAllocatedSpace() {
+        return totalAllocatedSpace;
+    }
+
+    public void setTotalAllocatedSpace(EntityModel totalAllocatedSpace) {
+        this.totalAllocatedSpace = totalAllocatedSpace;
+    }
+
+    public EntityModel getTotalFreeSpace() {
+        return totalFreeSpace;
+    }
+
+    public void setTotalFreeSpace(EntityModel totalFreeSpace) {
+        this.totalFreeSpace = totalFreeSpace;
+    }
+
+    public EntityModel getReleasableFreeSpace() {
+        return releasableFreeSpace;
+    }
+
+    public void setReleasableFreeSpace(EntityModel releasableFreeSpace) {
+        this.releasableFreeSpace = releasableFreeSpace;
+    }
+
+}
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeBrickListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeBrickListModel.java
index 0b95618..b351693 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeBrickListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeBrickListModel.java
@@ -12,10 +12,14 @@
 import org.ovirt.engine.core.common.businessentities.VDS;
 import org.ovirt.engine.core.common.businessentities.VDSGroup;
 import org.ovirt.engine.core.common.businessentities.VDSStatus;
+import org.ovirt.engine.core.common.businessentities.gluster.BrickDetails;
 import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterBrickEntity;
+import org.ovirt.engine.core.common.businessentities.gluster.GlusterClientInfo;
 import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterTaskOperation;
+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.GlusterVolumeType;
+import org.ovirt.engine.core.common.businessentities.gluster.Mempool;
 import org.ovirt.engine.ui.frontend.AsyncQuery;
 import org.ovirt.engine.ui.frontend.Frontend;
 import org.ovirt.engine.ui.frontend.INewAsyncCallback;
@@ -44,6 +48,7 @@
         setAddBricksCommand(new UICommand("Add Bricks", this)); //$NON-NLS-1$
         setRemoveBricksCommand(new UICommand("Remove Bricks", this)); 
//$NON-NLS-1$
         setReplaceBrickCommand(new UICommand("Replace Brick", this)); 
//$NON-NLS-1$
+        setBrickAdvancedDetailsCommand(new UICommand("Brick Advanced Details", 
this)); //$NON-NLS-1$
         getReplaceBrickCommand().setIsAvailable(false);
     }
 
@@ -81,6 +86,18 @@
     private void setReplaceBrickCommand(UICommand value)
     {
         replaceBrickCommand = value;
+    }
+
+    private UICommand brickAdvancedDetailsCommand;
+
+    public UICommand getBrickAdvancedDetailsCommand()
+    {
+        return brickAdvancedDetailsCommand;
+    }
+
+    private void setBrickAdvancedDetailsCommand(UICommand value)
+    {
+        brickAdvancedDetailsCommand = value;
     }
 
     @Override
@@ -122,6 +139,8 @@
         }
 
         getReplaceBrickCommand().setIsExecutionAllowed(getSelectedItems() != 
null && getSelectedItems().size() == 1);
+        
getBrickAdvancedDetailsCommand().setIsExecutionAllowed(getSelectedItems() != 
null
+                && getSelectedItems().size() == 1);
     }
 
     @Override
@@ -678,6 +697,56 @@
 
     }
 
+    private void showBrickAdvancedDetails() {
+        GlusterVolumeEntity volumeEntity = (GlusterVolumeEntity) getEntity();
+        final GlusterBrickEntity brickEntity = (GlusterBrickEntity) 
getSelectedItem();
+
+        final BrickAdvancedDetailsModel brickModel = new 
BrickAdvancedDetailsModel();
+        setWindow(brickModel);
+        
brickModel.setTitle(ConstantsManager.getInstance().getConstants().advancedDetailsBrickTitle());
+        brickModel.setHashName("brick_advanced"); //$NON-NLS-1$
+        brickModel.StartProgress(null);
+
+        AsyncQuery aQuery = new AsyncQuery();
+        aQuery.setModel(this);
+        aQuery.asyncCallback = new INewAsyncCallback() {
+            @Override
+            public void OnSuccess(Object model, Object result)
+            {
+                brickModel.StopProgress();
+                GlusterVolumeAdvancedDetails advDetails = 
(GlusterVolumeAdvancedDetails) result;
+                
brickModel.getBrick().setEntity(brickEntity.getQualifiedName());
+                if (advDetails != null && advDetails.getBrickDetails() != null
+                        && advDetails.getBrickDetails().size() == 1)
+                {
+                    BrickDetails brickDetails = 
advDetails.getBrickDetails().get(0);
+                    
brickModel.getBrickProperties().setProperties(brickDetails.getBrickProperties());
+
+                    ArrayList<EntityModel> clients = new 
ArrayList<EntityModel>();
+                    for (GlusterClientInfo client : brickDetails.getClients()) 
{
+                        clients.add(new EntityModel(client));
+                    }
+                    brickModel.getClients().setItems(clients);
+
+                    
brickModel.getMemoryStatistics().updateMemoryStatistics(brickDetails.getMemoryStatus().getMallInfo());
+
+                    ArrayList<EntityModel> memoryPools = new 
ArrayList<EntityModel>();
+                    for (Mempool mempool : 
brickDetails.getMemoryStatus().getMemPools()) {
+                        memoryPools.add(new EntityModel(mempool));
+                    }
+                    brickModel.getMemoryPools().setItems(memoryPools);
+                }
+            }
+        };
+        AsyncDataProvider.GetGlusterVolumeBrickDetails(aQuery, 
volumeEntity.getClusterId(), volumeEntity.getName(),
+                brickEntity.getQualifiedName());
+
+        UICommand command = new UICommand("Cancel", this); //$NON-NLS-1$
+        
command.setTitle(ConstantsManager.getInstance().getConstants().close());
+        command.setIsDefault(true);
+        brickModel.getCommands().add(command);
+    }
+
     @Override
     public void ExecuteCommand(UICommand command) {
         super.ExecuteCommand(command);
@@ -693,6 +762,8 @@
             replaceBrick();
         } else if (command.getName().equals("OnReplace")) { //$NON-NLS-1$
             onReplaceBrick();
+        } else if (command.equals(getBrickAdvancedDetailsCommand())) {
+            showBrickAdvancedDetails();
         }
         else if (command.getName().equals("Cancel")) { //$NON-NLS-1$
             setWindow(null);
diff --git 
a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.java
 
b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.java
index 7be5613..ea45f77 100644
--- 
a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.java
+++ 
b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.java
@@ -1341,6 +1341,9 @@
     @DefaultStringValue("Replace Brick")
     String replaceBrickTitle();
 
+    @DefaultStringValue("Brick Details")
+    String advancedDetailsBrickTitle();
+
     @DefaultStringValue("Are you sure want to remove the following Brick(s)?")
     String removeBricksMessage();
 
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java
index 4f048a6..401fdfb 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java
@@ -2145,6 +2145,9 @@
     @DefaultStringValue("Replace Brick")
     String replaceBrickBrick();
 
+    @DefaultStringValue("Advanced Details")
+    String advancedDetailsBrick();
+
     @DefaultStringValue("Server")
     String serverBricks();
 
@@ -2172,6 +2175,112 @@
     @DefaultStringValue("Move Down")
     String moveBricksDownButtonLabel();
 
+    // Volume Brick Details
+    @DefaultStringValue("General")
+    String generalBrickAdvancedPopupLabel();
+
+    @DefaultStringValue("Brick")
+    String brickAdvancedLabel();
+
+    @DefaultStringValue("Status")
+    String statusBrickAdvancedLabel();
+
+    @DefaultStringValue("Port")
+    String portBrickAdvancedLabel();
+
+    @DefaultStringValue("Process ID")
+    String pidBrickAdvancedLabel();
+
+    @DefaultStringValue("Total Size (MB)")
+    String totalSizeBrickAdvancedLabel();
+
+    @DefaultStringValue("Free Size (MB)")
+    String freeSizeBrickAdvancedLabel();
+
+    @DefaultStringValue("Device")
+    String deviceBrickAdvancedLabel();
+
+    @DefaultStringValue("Block Size (Bytes)")
+    String blockSizeBrickAdvancedLabel();
+
+    @DefaultStringValue("Mount Options")
+    String mountOptionsBrickAdvancedLabel();
+
+    @DefaultStringValue("File System")
+    String fileSystemBrickAdvancedLabel();
+
+    @DefaultStringValue("Clients")
+    String clientsBrickAdvancedPopupLabel();
+
+    @DefaultStringValue("Client")
+    String clientBrickAdvancedLabel();
+
+    @DefaultStringValue("Bytes Read")
+    String bytesReadBrickAdvancedLabel();
+
+    @DefaultStringValue("Bytes Written")
+    String bytesWrittenBrickAdvancedLabel();
+
+    @DefaultStringValue("Memory Statistics")
+    String memoryStatsBrickAdvancedPopupLabel();
+
+    @DefaultStringValue("Total allocated - Non-mmapped (bytes)")
+    String totalAllocatedBrickAdvancedLabel();
+
+    @DefaultStringValue("No. of ordinary free blocks")
+    String freeBlocksBrickAdvancedLabel();
+
+    @DefaultStringValue("No. of free fastbin blocks")
+    String freeFastbinBlocksBrickAdvancedLabel();
+
+    @DefaultStringValue("No. of mmapped blocks allocated")
+    String mmappedBlocksBrickAdvancedLabel();
+
+    @DefaultStringValue("Space allocated in mmapped block (bytes)")
+    String allocatedInMmappedBlocksBrickAdvancedLabel();
+
+    @DefaultStringValue("Maximum total allocated space (bytes)")
+    String maxTotalAllocatedSpaceBrickAdvancedLabel();
+
+    @DefaultStringValue("Space in free fastbin blocks (bytes)")
+    String spaceInFreedFasbinBlocksBrickAdvancedLabel();
+
+    @DefaultStringValue("Total allocated space (bytes)")
+    String totalAllocatedSpaceBrickAdvancedLabel();
+
+    @DefaultStringValue("Total free space (bytes)")
+    String totalFreeSpaceBrickAdvancedLabel();
+
+    @DefaultStringValue("Releasable free space (bytes)")
+    String releasableFreeSpaceBrickAdvancedLabel();
+
+    @DefaultStringValue("Memory Pools")
+    String memoryPoolsBrickAdvancedPopupLabel();
+
+    @DefaultStringValue("Name")
+    String nameBrickAdvancedLabel();
+
+    @DefaultStringValue("Hot Count")
+    String hotCountBrickAdvancedLabel();
+
+    @DefaultStringValue("Cold Count")
+    String coldCountBrickAdvancedLabel();
+
+    @DefaultStringValue("Padded Size")
+    String paddedSizeBrickAdvancedLabel();
+
+    @DefaultStringValue("Allocated Count")
+    String allocatedCountBrickAdvancedLabel();
+
+    @DefaultStringValue("Max Allocated")
+    String maxAllocatedBrickAdvancedLabel();
+
+    @DefaultStringValue("Pool Misses")
+    String poolMissesBrickAdvancedLabel();
+
+    @DefaultStringValue("Max Std Allocated")
+    String maxStdAllocatedBrickAdvancedLabel();
+
     @DefaultStringValue("Cluster Threshold")
     String quotaClusterThreshold();
 
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PresenterModule.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PresenterModule.java
index 4948f98..f7e06d6 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PresenterModule.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PresenterModule.java
@@ -30,6 +30,7 @@
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.datacenter.NewDataCenterNetworkPopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.datacenter.RecoveryStoragePopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.gluster.AddBrickPopupPresenterWidget;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.gluster.BrickAdvancedDetailsPopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.gluster.ReplaceBrickPopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.gluster.VolumeParameterPopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.gluster.VolumePopupPresenterWidget;
@@ -196,6 +197,7 @@
 import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.datacenter.NewDataCenterNetworkPopupView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.datacenter.RecoveryStorageConfirmationPopupView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.gluster.AddBrickPopupView;
+import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.gluster.BrickAdvancedDetailsPopupView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.gluster.ReplaceBrickPopupView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.gluster.VolumeParameterPopupView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.gluster.VolumePopupView;
@@ -1044,6 +1046,10 @@
                 ReplaceBrickPopupPresenterWidget.ViewDef.class,
                 ReplaceBrickPopupView.class);
 
+        bindPresenterWidget(BrickAdvancedDetailsPopupPresenterWidget.class,
+                BrickAdvancedDetailsPopupPresenterWidget.ViewDef.class,
+                BrickAdvancedDetailsPopupView.class);
+
         bindPresenterWidget(VolumeParameterPopupPresenterWidget.class,
                 VolumeParameterPopupPresenterWidget.ViewDef.class,
                 VolumeParameterPopupView.class);
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/VolumeModule.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/VolumeModule.java
index 46dc936..90295a1 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/VolumeModule.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/VolumeModule.java
@@ -25,6 +25,7 @@
 import org.ovirt.engine.ui.webadmin.gin.ClientGinjector;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.PermissionsPopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.gluster.AddBrickPopupPresenterWidget;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.gluster.BrickAdvancedDetailsPopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.gluster.ReplaceBrickPopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.gluster.VolumeParameterPopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.gluster.VolumePopupPresenterWidget;
@@ -79,7 +80,8 @@
     @Singleton
     public SearchableDetailModelProvider<GlusterBrickEntity, VolumeListModel, 
VolumeBrickListModel> getVolumeBrickListProvider(ClientGinjector ginjector,
             final Provider<AddBrickPopupPresenterWidget> addBrickPopupProvider,
-            final Provider<ReplaceBrickPopupPresenterWidget> 
replaceBrickPopupProvider) {
+            final Provider<ReplaceBrickPopupPresenterWidget> 
replaceBrickPopupProvider,
+            final Provider<BrickAdvancedDetailsPopupPresenterWidget> 
brickDetailsPopupProvider) {
         return new SearchableDetailTabModelProvider<GlusterBrickEntity, 
VolumeListModel, VolumeBrickListModel>(ginjector,
                 VolumeListModel.class,
                 VolumeBrickListModel.class) {
@@ -91,6 +93,8 @@
                     return addBrickPopupProvider.get();
                 } else if (lastExecutedCommand == 
getModel().getReplaceBrickCommand()) {
                     return replaceBrickPopupProvider.get();
+                } else if (lastExecutedCommand == 
getModel().getBrickAdvancedDetailsCommand()) {
+                    return brickDetailsPopupProvider.get();
                 } else {
                     return super.getModelPopup(source, lastExecutedCommand, 
windowModel);
                 }
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/gluster/BrickAdvancedDetailsPopupPresenterWidget.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/gluster/BrickAdvancedDetailsPopupPresenterWidget.java
new file mode 100644
index 0000000..fce771f
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/gluster/BrickAdvancedDetailsPopupPresenterWidget.java
@@ -0,0 +1,19 @@
+package org.ovirt.engine.ui.webadmin.section.main.presenter.popup.gluster;
+
+import 
org.ovirt.engine.ui.common.presenter.AbstractModelBoundPopupPresenterWidget;
+import 
org.ovirt.engine.ui.uicommonweb.models.gluster.BrickAdvancedDetailsModel;
+
+import com.google.gwt.event.shared.EventBus;
+import com.google.inject.Inject;
+
+public class BrickAdvancedDetailsPopupPresenterWidget extends 
AbstractModelBoundPopupPresenterWidget<BrickAdvancedDetailsModel, 
BrickAdvancedDetailsPopupPresenterWidget.ViewDef> {
+
+    public interface ViewDef extends 
AbstractModelBoundPopupPresenterWidget.ViewDef<BrickAdvancedDetailsModel> {
+    }
+
+    @Inject
+    public BrickAdvancedDetailsPopupPresenterWidget(EventBus eventBus, ViewDef 
view) {
+        super(eventBus, view);
+    }
+
+}
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/BrickAdvancedDetailsPopupView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/BrickAdvancedDetailsPopupView.java
new file mode 100644
index 0000000..bc1ad66
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/BrickAdvancedDetailsPopupView.java
@@ -0,0 +1,354 @@
+package org.ovirt.engine.ui.webadmin.section.main.view.popup.gluster;
+
+import org.ovirt.engine.core.common.businessentities.gluster.GlusterClientInfo;
+import org.ovirt.engine.core.common.businessentities.gluster.Mempool;
+import org.ovirt.engine.ui.common.idhandler.ElementIdHandler;
+import org.ovirt.engine.ui.common.idhandler.WithElementId;
+import org.ovirt.engine.ui.common.view.popup.AbstractModelBoundPopupView;
+import org.ovirt.engine.ui.common.widget.dialog.SimpleDialogPanel;
+import org.ovirt.engine.ui.common.widget.dialog.tab.DialogTab;
+import org.ovirt.engine.ui.common.widget.editor.EntityModelCellTable;
+import org.ovirt.engine.ui.common.widget.editor.EntityModelLabelEditor;
+import org.ovirt.engine.ui.common.widget.editor.EntityModelTextAreaLabelEditor;
+import org.ovirt.engine.ui.common.widget.parser.EntityModelParser;
+import org.ovirt.engine.ui.common.widget.renderer.EnumRenderer;
+import org.ovirt.engine.ui.common.widget.table.column.EntityModelTextColumn;
+import org.ovirt.engine.ui.uicommonweb.models.ListModel;
+import 
org.ovirt.engine.ui.uicommonweb.models.gluster.BrickAdvancedDetailsModel;
+import org.ovirt.engine.ui.webadmin.ApplicationConstants;
+import org.ovirt.engine.ui.webadmin.ApplicationResources;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.gluster.BrickAdvancedDetailsPopupPresenterWidget;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.editor.client.SimpleBeanEditorDriver;
+import com.google.gwt.event.shared.EventBus;
+import com.google.gwt.resources.client.CssResource;
+import com.google.gwt.uibinder.client.UiBinder;
+import com.google.gwt.uibinder.client.UiField;
+import com.google.inject.Inject;
+
+public class BrickAdvancedDetailsPopupView extends 
AbstractModelBoundPopupView<BrickAdvancedDetailsModel> implements 
BrickAdvancedDetailsPopupPresenterWidget.ViewDef {
+
+    interface Driver extends SimpleBeanEditorDriver<BrickAdvancedDetailsModel, 
BrickAdvancedDetailsPopupView> {
+        Driver driver = GWT.create(Driver.class);
+    }
+
+    interface ViewUiBinder extends UiBinder<SimpleDialogPanel, 
BrickAdvancedDetailsPopupView> {
+        ViewUiBinder uiBinder = GWT.create(ViewUiBinder.class);
+    }
+
+    interface ViewIdHandler extends 
ElementIdHandler<BrickAdvancedDetailsPopupView> {
+        ViewIdHandler idHandler = GWT.create(ViewIdHandler.class);
+    }
+
+    @UiField
+    WidgetStyle style;
+
+    @UiField
+    @WithElementId
+    DialogTab generalTab;
+
+    @UiField
+    @Path(value = "brick.entity")
+    @WithElementId
+    EntityModelLabelEditor brickEditor;
+
+    @UiField(provided = true)
+    @Path(value = "brickProperties.status.entity")
+    @WithElementId
+    EntityModelLabelEditor statusEditor;
+
+    @UiField
+    @Path(value = "brickProperties.port.entity")
+    @WithElementId
+    EntityModelLabelEditor portEditor;
+
+    @UiField
+    @Path(value = "brickProperties.pid.entity")
+    @WithElementId
+    EntityModelLabelEditor pidEditor;
+
+    @UiField
+    @Path(value = "brickProperties.totalSize.entity")
+    @WithElementId
+    EntityModelLabelEditor totalSizeEditor;
+
+    @UiField
+    @Path(value = "brickProperties.freeSize.entity")
+    @WithElementId
+    EntityModelLabelEditor freeSizeEditor;
+
+    @UiField
+    @Path(value = "brickProperties.device.entity")
+    @WithElementId
+    EntityModelLabelEditor deviceEditor;
+
+    @UiField
+    @Path(value = "brickProperties.blockSize.entity")
+    @WithElementId
+    EntityModelLabelEditor blockSizeEditor;
+
+    @UiField
+    @Path(value = "brickProperties.mountOptions.entity")
+    @WithElementId
+    EntityModelTextAreaLabelEditor mountOptionsEditor;
+
+    @UiField
+    @Path(value = "brickProperties.fileSystem.entity")
+    @WithElementId
+    EntityModelLabelEditor fileSystemEditor;
+
+    @UiField
+    @WithElementId
+    DialogTab clientsTab;
+
+    @UiField(provided = true)
+    @Ignore
+    @WithElementId
+    EntityModelCellTable<ListModel> clientsTable;
+
+    @UiField
+    @WithElementId
+    DialogTab memoryStatsTab;
+
+    @UiField
+    @Path(value = "memoryStatistics.totalAllocated.entity")
+    @WithElementId
+    EntityModelLabelEditor totalAllocatedEditor;
+
+    @UiField
+    @Path(value = "memoryStatistics.freeBlocks.entity")
+    @WithElementId
+    EntityModelLabelEditor freeBlocksEditor;
+
+    @UiField
+    @Path(value = "memoryStatistics.freeFastbin.entity")
+    @WithElementId
+    EntityModelLabelEditor freeFastbinBlocksEditor;
+
+    @UiField
+    @Path(value = "memoryStatistics.mmappedBlocks.entity")
+    @WithElementId
+    EntityModelLabelEditor mmappedBlocksEditor;
+
+    @UiField
+    @Path(value = "memoryStatistics.spaceAllocatedMmapped.entity")
+    @WithElementId
+    EntityModelLabelEditor spaceAllocatedMmappedEditor;
+
+    @UiField
+    @Path(value = "memoryStatistics.maxTotalAllocated.entity")
+    @WithElementId
+    EntityModelLabelEditor maxTotalAllocatedEditor;
+
+    @UiField
+    @Path(value = "memoryStatistics.spaceFreedFastbin.entity")
+    @WithElementId
+    EntityModelLabelEditor spaceFreedFastbinEditor;
+
+    @UiField
+    @Path(value = "memoryStatistics.totalAllocatedSpace.entity")
+    @WithElementId
+    EntityModelLabelEditor totalAllocatedSpaceEditor;
+
+    @UiField
+    @Path(value = "memoryStatistics.totalFreeSpace.entity")
+    @WithElementId
+    EntityModelLabelEditor totalFreeSpaceEditor;
+
+    @UiField
+    @Path(value = "memoryStatistics.releasableFreeSpace.entity")
+    @WithElementId
+    EntityModelLabelEditor releasableFreeSpaceEditor;
+
+    @UiField
+    @WithElementId
+    DialogTab memoryPoolsTab;
+
+    @UiField(provided = true)
+    @Ignore
+    @WithElementId
+    EntityModelCellTable<ListModel> memoryPoolsTable;
+
+    @Inject
+    public BrickAdvancedDetailsPopupView(EventBus eventBus, 
ApplicationResources resources, ApplicationConstants constants) {
+        super(eventBus, resources);
+        initEditors();
+        initWidget(ViewUiBinder.uiBinder.createAndBindUi(this));
+        ViewIdHandler.idHandler.generateAndSetIds(this);
+        addStyles();
+        initTableColumns(constants);
+        localize(constants);
+        Driver.driver.initialize(this);
+    }
+
+    private void initEditors() {
+        statusEditor = new EntityModelLabelEditor(new EnumRenderer(), new 
EntityModelParser());
+        clientsTable = new EntityModelCellTable<ListModel>(false, true);
+        memoryPoolsTable = new EntityModelCellTable<ListModel>(false, true);
+    }
+
+    private void addStyles() {
+        brickEditor.addContentWidgetStyleName(style.generalValue());
+        statusEditor.addContentWidgetStyleName(style.generalValue());
+        portEditor.addContentWidgetStyleName(style.generalValue());
+        pidEditor.addContentWidgetStyleName(style.generalValue());
+        totalSizeEditor.addContentWidgetStyleName(style.generalValue());
+        freeSizeEditor.addContentWidgetStyleName(style.generalValue());
+        deviceEditor.addContentWidgetStyleName(style.generalValue());
+        blockSizeEditor.addContentWidgetStyleName(style.generalValue());
+        mountOptionsEditor.addContentWidgetStyleName(style.generalValue());
+        fileSystemEditor.addContentWidgetStyleName(style.generalValue());
+
+        totalAllocatedEditor.addLabelStyleName(style.memStatLabel());
+        freeBlocksEditor.addLabelStyleName(style.memStatLabel());
+        freeFastbinBlocksEditor.addLabelStyleName(style.memStatLabel());
+        mmappedBlocksEditor.addLabelStyleName(style.memStatLabel());
+        spaceAllocatedMmappedEditor.addLabelStyleName(style.memStatLabel());
+        maxTotalAllocatedEditor.addLabelStyleName(style.memStatLabel());
+        spaceFreedFastbinEditor.addLabelStyleName(style.memStatLabel());
+        totalAllocatedSpaceEditor.addLabelStyleName(style.memStatLabel());
+        totalFreeSpaceEditor.addLabelStyleName(style.memStatLabel());
+        releasableFreeSpaceEditor.addLabelStyleName(style.memStatLabel());
+
+        totalAllocatedEditor.addContentWidgetStyleName(style.memStatValue());
+        freeBlocksEditor.addContentWidgetStyleName(style.memStatValue());
+        
freeFastbinBlocksEditor.addContentWidgetStyleName(style.memStatValue());
+        mmappedBlocksEditor.addContentWidgetStyleName(style.memStatValue());
+        
spaceAllocatedMmappedEditor.addContentWidgetStyleName(style.memStatValue());
+        
maxTotalAllocatedEditor.addContentWidgetStyleName(style.memStatValue());
+        
spaceFreedFastbinEditor.addContentWidgetStyleName(style.memStatValue());
+        
totalAllocatedSpaceEditor.addContentWidgetStyleName(style.memStatValue());
+        totalFreeSpaceEditor.addContentWidgetStyleName(style.memStatValue());
+        
releasableFreeSpaceEditor.addContentWidgetStyleName(style.memStatValue());
+    }
+
+    private void initTableColumns(ApplicationConstants constants) {
+        clientsTable.addEntityModelColumn(new 
EntityModelTextColumn<GlusterClientInfo>() {
+            @Override
+            public String getText(GlusterClientInfo entity) {
+                return entity.getHostname();
+            }
+        }, constants.clientBrickAdvancedLabel());
+
+        clientsTable.addEntityModelColumn(new 
EntityModelTextColumn<GlusterClientInfo>() {
+            @Override
+            public String getText(GlusterClientInfo entity) {
+                return String.valueOf(entity.getBytesRead());
+            }
+        }, constants.bytesReadBrickAdvancedLabel());
+
+        clientsTable.addEntityModelColumn(new 
EntityModelTextColumn<GlusterClientInfo>() {
+            @Override
+            public String getText(GlusterClientInfo entity) {
+                return String.valueOf(entity.getBytesWritten());
+            }
+        }, constants.bytesWrittenBrickAdvancedLabel());
+
+        memoryPoolsTable.addEntityModelColumn(new 
EntityModelTextColumn<Mempool>() {
+            @Override
+            public String getText(Mempool entity) {
+                return entity.getName();
+            }
+        }, constants.nameBrickAdvancedLabel());
+
+        memoryPoolsTable.addEntityModelColumn(new 
EntityModelTextColumn<Mempool>() {
+            @Override
+            public String getText(Mempool entity) {
+                return String.valueOf(entity.getHotCount());
+            }
+        }, constants.hotCountBrickAdvancedLabel());
+
+        memoryPoolsTable.addEntityModelColumn(new 
EntityModelTextColumn<Mempool>() {
+            @Override
+            public String getText(Mempool entity) {
+                return String.valueOf(entity.getColdCount());
+            }
+        }, constants.coldCountBrickAdvancedLabel());
+
+        memoryPoolsTable.addEntityModelColumn(new 
EntityModelTextColumn<Mempool>() {
+            @Override
+            public String getText(Mempool entity) {
+                return String.valueOf(entity.getPadddedSize());
+            }
+        }, constants.paddedSizeBrickAdvancedLabel());
+
+        memoryPoolsTable.addEntityModelColumn(new 
EntityModelTextColumn<Mempool>() {
+            @Override
+            public String getText(Mempool entity) {
+                return String.valueOf(entity.getAllocCount());
+            }
+        }, constants.allocatedCountBrickAdvancedLabel());
+
+        memoryPoolsTable.addEntityModelColumn(new 
EntityModelTextColumn<Mempool>() {
+            @Override
+            public String getText(Mempool entity) {
+                return String.valueOf(entity.getMaxAlloc());
+            }
+        }, constants.maxAllocatedBrickAdvancedLabel());
+
+        memoryPoolsTable.addEntityModelColumn(new 
EntityModelTextColumn<Mempool>() {
+            @Override
+            public String getText(Mempool entity) {
+                return String.valueOf(entity.getPoolMisses());
+            }
+        }, constants.poolMissesBrickAdvancedLabel());
+
+        memoryPoolsTable.addEntityModelColumn(new 
EntityModelTextColumn<Mempool>() {
+            @Override
+            public String getText(Mempool entity) {
+                return String.valueOf(entity.getMaxStdAlloc());
+            }
+        }, constants.maxStdAllocatedBrickAdvancedLabel());
+    }
+
+    private void localize(ApplicationConstants constants) {
+        generalTab.setLabel(constants.generalBrickAdvancedPopupLabel());
+        brickEditor.setLabel(constants.brickAdvancedLabel());
+        statusEditor.setLabel(constants.statusBrickAdvancedLabel());
+        portEditor.setLabel(constants.portBrickAdvancedLabel());
+        pidEditor.setLabel(constants.pidBrickAdvancedLabel());
+        totalSizeEditor.setLabel(constants.totalSizeBrickAdvancedLabel());
+        freeSizeEditor.setLabel(constants.freeSizeBrickAdvancedLabel());
+        deviceEditor.setLabel(constants.deviceBrickAdvancedLabel());
+        blockSizeEditor.setLabel(constants.blockSizeBrickAdvancedLabel());
+        
mountOptionsEditor.setLabel(constants.mountOptionsBrickAdvancedLabel());
+        fileSystemEditor.setLabel(constants.fileSystemBrickAdvancedLabel());
+
+        clientsTab.setLabel(constants.clientsBrickAdvancedPopupLabel());
+
+        
memoryStatsTab.setLabel(constants.memoryStatsBrickAdvancedPopupLabel());
+        
totalAllocatedEditor.setLabel(constants.totalAllocatedBrickAdvancedLabel());
+        freeBlocksEditor.setLabel(constants.freeBlocksBrickAdvancedLabel());
+        
freeFastbinBlocksEditor.setLabel(constants.freeFastbinBlocksBrickAdvancedLabel());
+        
mmappedBlocksEditor.setLabel(constants.mmappedBlocksBrickAdvancedLabel());
+        
spaceAllocatedMmappedEditor.setLabel(constants.allocatedInMmappedBlocksBrickAdvancedLabel());
+        
maxTotalAllocatedEditor.setLabel(constants.maxTotalAllocatedSpaceBrickAdvancedLabel());
+        
spaceFreedFastbinEditor.setLabel(constants.spaceInFreedFasbinBlocksBrickAdvancedLabel());
+        
totalAllocatedSpaceEditor.setLabel(constants.totalAllocatedSpaceBrickAdvancedLabel());
+        
totalFreeSpaceEditor.setLabel(constants.totalFreeSpaceBrickAdvancedLabel());
+        
releasableFreeSpaceEditor.setLabel(constants.releasableFreeSpaceBrickAdvancedLabel());
+
+        
memoryPoolsTab.setLabel(constants.memoryPoolsBrickAdvancedPopupLabel());
+    }
+
+    @Override
+    public void edit(BrickAdvancedDetailsModel object) {
+        Driver.driver.edit(object);
+        clientsTable.edit(object.getClients());
+        memoryPoolsTable.edit(object.getMemoryPools());
+    }
+
+    @Override
+    public BrickAdvancedDetailsModel flush() {
+        return Driver.driver.flush();
+    }
+
+    interface WidgetStyle extends CssResource {
+        String memStatLabel();
+
+        String memStatValue();
+
+        String generalValue();
+    }
+}
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/BrickAdvancedDetailsPopupView.ui.xml
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/BrickAdvancedDetailsPopupView.ui.xml
new file mode 100644
index 0000000..863e126
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/BrickAdvancedDetailsPopupView.ui.xml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent";>
+<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
+       xmlns:g="urn:import:com.google.gwt.user.client.ui" 
xmlns:d="urn:import:org.ovirt.engine.ui.common.widget.dialog"
+       xmlns:e="urn:import:org.ovirt.engine.ui.common.widget.editor" 
xmlns:w="urn:import:org.ovirt.engine.ui.common.widget"
+       xmlns:t="urn:import:org.ovirt.engine.ui.common.widget.dialog.tab">
+
+       <ui:style 
type="org.ovirt.engine.ui.webadmin.section.main.view.popup.gluster.BrickAdvancedDetailsPopupView.WidgetStyle">
+               .tablePanel {
+                       height: 450px;
+                       width: 615px;
+                       border: 1px solid #CED8DF;
+               }
+               .memStatLabel{
+                       width: 150px;
+               }
+               .memStatValue{
+                       width: 150px;
+               }
+               .generalValue{
+                       width: 300px;
+               }
+       </ui:style>
+
+       <d:SimpleDialogPanel width="800px" height="530px">
+               <d:content>
+                       <t:DialogTabPanel height="100%">
+                               <t:tab>
+                                       <t:DialogTab ui:field="generalTab">
+                                               <t:content>
+                                                       <g:FlowPanel>
+                                                               
<e:EntityModelLabelEditor ui:field="brickEditor" />
+                                                               
<e:EntityModelLabelEditor ui:field="statusEditor" />
+                                                               
<e:EntityModelLabelEditor ui:field="portEditor" />
+                                                               
<e:EntityModelLabelEditor ui:field="pidEditor" />
+                                                               
<e:EntityModelLabelEditor ui:field="totalSizeEditor" />
+                                                               
<e:EntityModelLabelEditor ui:field="freeSizeEditor" />
+                                                               
<e:EntityModelLabelEditor ui:field="deviceEditor" />
+                                                               
<e:EntityModelLabelEditor ui:field="blockSizeEditor" />
+                                                               
<e:EntityModelTextAreaLabelEditor ui:field="mountOptionsEditor" />
+                                                               
<e:EntityModelLabelEditor ui:field="fileSystemEditor" />
+                                                       </g:FlowPanel>
+                                               </t:content>
+                                       </t:DialogTab>
+                               </t:tab>
+                               <t:tab>
+                                       <t:DialogTab ui:field="clientsTab">
+                                               <t:content>
+                                                       <g:FlowPanel >
+                                                               <g:ScrollPanel 
addStyleNames="{style.tablePanel}">
+                                                                       
<e:EntityModelCellTable ui:field="clientsTable"/>
+                                                               </g:ScrollPanel>
+                                                       </g:FlowPanel>
+                                               </t:content>
+                                       </t:DialogTab>
+                               </t:tab>
+                               <t:tab>
+                                       <t:DialogTab ui:field="memoryStatsTab">
+                                               <t:content>
+                                                       <g:FlowPanel>
+                                                               
<e:EntityModelLabelEditor ui:field="totalAllocatedEditor" />
+                                                               
<e:EntityModelLabelEditor ui:field="freeBlocksEditor" />
+                                                               
<e:EntityModelLabelEditor ui:field="freeFastbinBlocksEditor" />
+                                                               
<e:EntityModelLabelEditor ui:field="mmappedBlocksEditor" />
+                                                               
<e:EntityModelLabelEditor ui:field="spaceAllocatedMmappedEditor" />
+                                                               
<e:EntityModelLabelEditor ui:field="maxTotalAllocatedEditor" />
+                                                               
<e:EntityModelLabelEditor ui:field="spaceFreedFastbinEditor" />
+                                                               
<e:EntityModelLabelEditor ui:field="totalAllocatedSpaceEditor" />
+                                                               
<e:EntityModelLabelEditor ui:field="totalFreeSpaceEditor" />
+                                                               
<e:EntityModelLabelEditor ui:field="releasableFreeSpaceEditor" />
+                                                       </g:FlowPanel>
+                                               </t:content>
+                                       </t:DialogTab>
+                               </t:tab>
+                               <t:tab>
+                                       <t:DialogTab ui:field="memoryPoolsTab">
+                                               <t:content>
+                                                       <g:FlowPanel>
+                                                               <g:ScrollPanel 
addStyleNames="{style.tablePanel}">
+                                                                       
<e:EntityModelCellTable ui:field="memoryPoolsTable"/>
+                                                               </g:ScrollPanel>
+                                                       </g:FlowPanel>
+                                               </t:content>
+                                       </t:DialogTab>
+                               </t:tab>
+                       </t:DialogTabPanel>
+               </d:content>
+       </d:SimpleDialogPanel>
+
+</ui:UiBinder>
\ No newline at end of file
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 39d4b5f..5541f86 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
@@ -72,5 +72,12 @@
                 return getDetailModel().getReplaceBrickCommand();
             }
         });
+
+        getTable().addActionButton(new 
WebAdminButtonDefinition<GlusterBrickEntity>(constants.advancedDetailsBrick()) {
+            @Override
+            protected UICommand resolveCommand() {
+                return getDetailModel().getBrickAdvancedDetailsCommand();
+            }
+        });
     }
 }


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

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

Reply via email to