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