Ramesh N has uploaded a new change for review.

Change subject: gluster: add brick list to add bricks dialog
......................................................................

gluster: add brick list to add bricks dialog

  Change the Add Brick dialog to show all the available
bricks from the host.

Change-Id: I5e5502cf5a1f551521010214b14414c07f43c2c2
Signed-off-by: Ramesh Nachimuthu <rnach...@redhat.com>
---
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/LogicalVolumeModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeBrickModel.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/section/main/view/popup/gluster/AddBrickPopupView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/AddBrickPopupView.ui.xml
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/CreateBrickPopupView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/CreateBrickPopupView.ui.xml
8 files changed, 134 insertions(+), 27 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/40/36040/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 3e3d97e..67859c0 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
@@ -3854,4 +3854,19 @@
                 parameters,
                 aQuery);
     }
+
+    public void getUnusedBricksFromServer(AsyncQuery asyncQuery, Guid hostId) {
+        asyncQuery.converterCallback = new IAsyncConverter() {
+            @Override
+            public Object Convert(Object source, AsyncQuery _asyncQuery)
+            {
+                return source;
+            }
+        };
+        VdsIdParametersBase parameters =
+                new VdsIdParametersBase(hostId); //$NON-NLS-1$ //$NON-NLS-2$
+        Frontend.getInstance().runQuery(VdcQueryType.GetUnusedBricks,
+                parameters,
+                asyncQuery);
+    }
 }
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/LogicalVolumeModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/LogicalVolumeModel.java
index 2041744..f8dedcb 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/LogicalVolumeModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/LogicalVolumeModel.java
@@ -3,22 +3,54 @@
 import java.util.Arrays;
 
 import org.ovirt.engine.core.common.businessentities.gluster.StorageDevice;
+import org.ovirt.engine.core.common.utils.Pair;
+import org.ovirt.engine.core.common.utils.SizeConverter;
+import org.ovirt.engine.core.common.utils.SizeConverter.SizeUnit;
 import org.ovirt.engine.ui.uicommonweb.models.EntityModel;
 import org.ovirt.engine.ui.uicommonweb.models.ListModel;
 import org.ovirt.engine.ui.uicommonweb.models.Model;
+import org.ovirt.engine.ui.uicompat.Event;
+import org.ovirt.engine.ui.uicompat.EventArgs;
+import org.ovirt.engine.ui.uicompat.IEventListener;
+
+import com.google.gwt.i18n.client.NumberFormat;
 
 public class LogicalVolumeModel extends Model {
     EntityModel<String> lvName;
     EntityModel<String> size;
     ListModel<String> fsTypes;
     ListModel<EntityModel<StorageDevice>> storageDevices;
+    EntityModel<Boolean> thinPool;
 
     public LogicalVolumeModel() {
         setLvName(new EntityModel<String>());
         setStorageDevices(new ListModel<EntityModel<StorageDevice>>());
         setSize(new EntityModel<String>());
         setFsTypes(new ListModel<String>());
+        setThinPool(new EntityModel<Boolean>(Boolean.TRUE));
         getFsTypes().setItems(Arrays.asList("XFS", "ext4", "ext3")); 
//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+
+        getStorageDevices().getSelectedItemsChangedEvent().addListener(new 
IEventListener<EventArgs>() {
+
+            @Override
+            public void eventRaised(Event<? extends EventArgs> ev, Object 
sender, EventArgs args) {
+                updateBrickSize();
+            }
+
+        });
+    }
+
+    private void updateBrickSize() {
+        long totalSize = 0;
+        for (EntityModel<StorageDevice> storageDevice : 
getStorageDevices().getSelectedItems()) {
+            if (storageDevice.getEntity().getSize() != null) {
+                totalSize += storageDevice.getEntity().getSize();
+            }
+        }
+
+        Pair<SizeUnit, Double> convertedSize = 
SizeConverter.autoConvert(totalSize, SizeUnit.MB);
+        String sizeString = formatSize(convertedSize.getSecond()) + " " + 
convertedSize.getFirst().toString(); //$NON-NLS-1$
+        setSize(new EntityModel<String>(sizeString));
     }
 
     public EntityModel<String> getLvName() {
@@ -56,4 +88,16 @@
     public boolean validate() {
         return true;
     }
+
+    public String formatSize(double size) {
+        return NumberFormat.getFormat("#.##").format(size);//$NON-NLS-1$
+    }
+
+    public EntityModel<Boolean> getThinPool() {
+        return thinPool;
+    }
+
+    public void setThinPool(EntityModel<Boolean> thinPool) {
+        this.thinPool = thinPool;
+    }
 }
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeBrickModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeBrickModel.java
index ccaaede..508d885 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeBrickModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeBrickModel.java
@@ -8,7 +8,11 @@
 import org.ovirt.engine.core.common.businessentities.VDS;
 import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterBrickEntity;
 import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeType;
+import org.ovirt.engine.core.common.businessentities.gluster.StorageDevice;
+import org.ovirt.engine.ui.frontend.AsyncQuery;
+import org.ovirt.engine.ui.frontend.INewAsyncCallback;
 import org.ovirt.engine.ui.uicommonweb.UICommand;
+import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider;
 import org.ovirt.engine.ui.uicommonweb.models.EntityModel;
 import org.ovirt.engine.ui.uicommonweb.models.ListModel;
 import org.ovirt.engine.ui.uicommonweb.models.Model;
@@ -29,7 +33,7 @@
     EntityModel<Integer> stripeCount;
 
     ListModel<VDS> servers;
-    EntityModel<String> brickDirectory;
+    ListModel<String> bricksFromServer;
 
     ListModel<EntityModel<GlusterBrickEntity>> bricks;
 
@@ -55,7 +59,7 @@
         getStripeCount().setIsChangable(false);
 
         setServers(new ListModel<VDS>());
-        setBrickDirectory(new EntityModel<String>());
+        setBricksFromServer(new ListModel<String>());
 
         setBricks(new ListModel<EntityModel<GlusterBrickEntity>>());
 
@@ -101,6 +105,36 @@
                 }
             }
         });
+
+        getServers().getSelectedItemChangedEvent().addListener(new 
IEventListener<EventArgs>() {
+            @Override
+            public void eventRaised(Event<? extends EventArgs> ev, Object 
sender, EventArgs args) {
+                updateBricksFromServer();
+            }
+
+        });
+    }
+
+    private void updateBricksFromServer() {
+        VDS selectedServer = getServers().getSelectedItem();
+        AsyncDataProvider.getInstance().getUnusedBricksFromServer(new 
AsyncQuery(this, new INewAsyncCallback() {
+
+            @Override
+            public void onSuccess(Object model, Object returnValue) {
+                List<StorageDevice> bricks = (List<StorageDevice>) returnValue;
+                List<String> lvNames = new ArrayList<String>();
+                for (StorageDevice brick : bricks) {
+                    if (brick.getMountPoint() != null && 
!brick.getMountPoint().isEmpty()) {
+                        lvNames.add(brick.getMountPoint());
+                    } else {
+                        lvNames.add("None - " + brick.getName()); //$NON-NLS-1$
+                    }
+
+                }
+                getBricksFromServer().setItems(lvNames);
+            }
+        }), selectedServer.getId());
+
     }
 
     private void updateSelectedBricksActions()
@@ -235,14 +269,6 @@
         this.servers = servers;
     }
 
-    public EntityModel<String> getBrickDirectory() {
-        return brickDirectory;
-    }
-
-    public void setBrickDirectory(EntityModel<String> brickDirectory) {
-        this.brickDirectory = brickDirectory;
-    }
-
     public ListModel<EntityModel<GlusterBrickEntity>> getBricks() {
         return bricks;
     }
@@ -269,6 +295,7 @@
     private void addBrick()
     {
         VDS server = servers.getSelectedItem();
+        String brickDir = bricksFromServer.getSelectedItem();
 
         if (server == null)
         {
@@ -276,15 +303,15 @@
             return;
         }
 
-        if (brickDirectory.getEntity() == null || 
brickDirectory.getEntity().trim().length() == 0)
+        if (brickDir == null || brickDir.trim().length() == 0)
         {
             
setMessage(ConstantsManager.getInstance().getConstants().emptyBrickDirectoryMsg());
             return;
         }
 
-        brickDirectory.setEntity(brickDirectory.getEntity().trim());
+        // brickDirectory.setEntity(brickDirectory.getEntity().trim());
 
-        if (!validateBrickDirectory(brickDirectory.getEntity()))
+        if (!validateBrickDirectory(brickDir))
         {
             return;
         }
@@ -292,7 +319,7 @@
         GlusterBrickEntity brickEntity = new GlusterBrickEntity();
         brickEntity.setServerId(server.getId());
         brickEntity.setServerName(server.getHostName());
-        brickEntity.setBrickDirectory(brickDirectory.getEntity());
+        brickEntity.setBrickDirectory(brickDir);
 
         EntityModel<GlusterBrickEntity> entityModel = new 
EntityModel<GlusterBrickEntity>(brickEntity);
         List<EntityModel<GlusterBrickEntity>> items = 
(List<EntityModel<GlusterBrickEntity>>) bricks.getItems();
@@ -355,7 +382,7 @@
 
     private void clearBrickDetails()
     {
-        getBrickDirectory().setEntity(null);
+        // getBrickDirectory().setEntity(null);
         setMessage(null);
     }
 
@@ -687,4 +714,12 @@
         }
     }
 
+    public ListModel<String> getBricksFromServer() {
+        return bricksFromServer;
+    }
+
+    public void setBricksFromServer(ListModel<String> bricksFromServer) {
+        this.bricksFromServer = bricksFromServer;
+    }
+
 }
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 43a1f62..405e3ed 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
@@ -3966,10 +3966,10 @@
     @DefaultStringValue("Device is already in use")
     String deviceIsAlreadyUsed();
 
-    @DefaultStringValue("Logical Volume")
+    @DefaultStringValue("Brick Name")
     String logicalVolume();
 
-    @DefaultStringValue("LV Size")
+    @DefaultStringValue("Size")
     String lvSize();
 
     @DefaultStringValue("Create Brick")
@@ -3977,4 +3977,7 @@
 
     @DefaultStringValue("Extend Brick")
     String extendBrick();
+
+    @DefaultStringValue("Snapshot Support")
+    String snapShotSupport();
 }
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/AddBrickPopupView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/AddBrickPopupView.java
index 5a2fc03..44c0517 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/AddBrickPopupView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/AddBrickPopupView.java
@@ -14,7 +14,6 @@
 import 
org.ovirt.engine.ui.common.widget.editor.generic.EntityModelCheckBoxEditor;
 import org.ovirt.engine.ui.common.widget.editor.generic.EntityModelLabelEditor;
 import 
org.ovirt.engine.ui.common.widget.editor.generic.IntegerEntityModelTextBoxEditor;
-import 
org.ovirt.engine.ui.common.widget.editor.generic.StringEntityModelTextBoxEditor;
 import org.ovirt.engine.ui.common.widget.renderer.EnumRenderer;
 import org.ovirt.engine.ui.common.widget.renderer.NullSafeRenderer;
 import org.ovirt.engine.ui.common.widget.table.column.EntityModelTextColumn;
@@ -81,9 +80,9 @@
     ListModelListBoxEditor<VDS> serverEditor;
 
     @UiField
-    @Path(value = "brickDirectory.entity")
+    @Path(value = "bricksFromServer.selectedItem")
     @WithElementId
-    StringEntityModelTextBoxEditor exportDirEditor;
+    ListModelListBoxEditor<String> exportDirEditor;
 
     @UiField
     @WithElementId
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/AddBrickPopupView.ui.xml
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/AddBrickPopupView.ui.xml
index 9b32ec6..1495cd3 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/AddBrickPopupView.ui.xml
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/AddBrickPopupView.ui.xml
@@ -84,7 +84,7 @@
                                <g:HorizontalPanel 
verticalAlignment="ALIGN_BOTTOM">
                                        <g:VerticalPanel>
                                                <e:ListModelListBoxEditor 
ui:field="serverEditor"/>
-                                               
<ge:StringEntityModelTextBoxEditor ui:field="exportDirEditor" />
+                                               <e:ListModelListBoxEditor 
ui:field="exportDirEditor" />
                                        </g:VerticalPanel>
                                        <g:HorizontalPanel spacing="5">
                                                <w:UiCommandButton 
ui:field="addBrickButton" addStyleNames="{style.brickButton}"/>
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/CreateBrickPopupView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/CreateBrickPopupView.java
index 0e96367..d253fe5 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/CreateBrickPopupView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/CreateBrickPopupView.java
@@ -9,7 +9,7 @@
 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.editor.EntityModelCellTable;
-import org.ovirt.engine.ui.common.widget.editor.ListModelListBoxEditor;
+import 
org.ovirt.engine.ui.common.widget.editor.generic.EntityModelCheckBoxEditor;
 import 
org.ovirt.engine.ui.common.widget.editor.generic.StringEntityModelTextBoxEditor;
 import org.ovirt.engine.ui.common.widget.table.column.EntityModelTextColumn;
 import org.ovirt.engine.ui.uicommonweb.models.ListModel;
@@ -58,10 +58,20 @@
     @WithElementId
     EntityModelCellTable<ListModel> deviceTable;
 
+    // @UiField
+    // @Path(value = "fsTypes.selectedItem")
+    // @WithElementId
+    // ListModelListBoxEditor<String> fileSystemTypeEditor;
+
     @UiField
-    @Path(value = "fsTypes.selectedItem")
+    @Path(value = "thinPool.entity")
     @WithElementId
-    ListModelListBoxEditor<String> fileSystemTypeEditor;
+    EntityModelCheckBoxEditor thinPoolEditor;
+
+    // @UiField
+    // @Path(value = "fsTypes.selectedItem")
+    // @WithElementId
+    // ListModelListBoxEditor<String> fileSystemTypeEditor;
 
     @UiField
     @Path(value = "size.entity")
@@ -115,9 +125,10 @@
 
     private void localize(ApplicationConstants constants) {
         lvNameEditor.setLabel(constants.logicalVolume());
-        fileSystemTypeEditor.setLabel(constants.fileSystemType());
+        // fileSystemTypeEditor.setLabel(constants.fileSystemType());
         sizeEditor.setLabel(constants.lvSize());
-        deviceHeader.setText(constants.disksLabel());
+        deviceHeader.setText(constants.storageDevices());
+        thinPoolEditor.setLabel(constants.snapShotSupport());
     }
 
     @Override
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/CreateBrickPopupView.ui.xml
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/CreateBrickPopupView.ui.xml
index 9a3dab1..6ff600d 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/CreateBrickPopupView.ui.xml
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/CreateBrickPopupView.ui.xml
@@ -25,8 +25,8 @@
                <d:content>
                        <g:FlowPanel>
                                <ge:StringEntityModelTextBoxEditor 
ui:field="lvNameEditor" />
-                               <e:ListModelListBoxEditor 
ui:field="fileSystemTypeEditor" />
                                <ge:StringEntityModelTextBoxEditor 
ui:field="sizeEditor" />
+                               <ge:EntityModelCheckBoxEditor 
ui:field="thinPoolEditor"/>
                                <g:Label ui:field="deviceHeader" 
addStyleNames="{style.headerLabel}"/>
                                <g:VerticalPanel 
addStyleNames="{style.tablePanel}" horizontalAlignment="ALIGN_CENTER">
                                <g:ScrollPanel>


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

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

Reply via email to