Kanagaraj M has uploaded a new change for review. Change subject: webadmin: adding activities colume to Bricks tab ......................................................................
webadmin: adding activities colume to Bricks tab Added a new activities column to Bricks table. This is similar to the Actvities colume in the volumes tab. But the cell in this column is visible only if the task is of type REMOVE_BRICK. Added new icons to show the different stages of remove brick operation. All the brick removal related(stop/commit) operations are moved to the row. The same actions will be available in the volume row as well. Change-Id: I820c8b2e2e948d1c2ce0811d2d5a78784eeafc2b Signed-off-by: Kanagaraj M <kmayi...@redhat.com> --- M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/volumes/VolumeListModel.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/ApplicationResources.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVolumeView.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/gluster/SubTabVolumeBrickView.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeActivityColumn.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeActivityCompositeCell.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeActivityStatusCell.java A frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/webadmin/images/glusterRebalance/remove_brick_commit_required.png A frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/webadmin/images/glusterRebalance/remove_brick_failed.png A frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/webadmin/images/glusterRebalance/remove_brick_running.png A frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/webadmin/images/glusterRebalance/remove_brick_stopped.png 12 files changed, 149 insertions(+), 30 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/09/20009/1 diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/volumes/VolumeListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/volumes/VolumeListModel.java index 75be63b..b937612 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/volumes/VolumeListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/volumes/VolumeListModel.java @@ -142,6 +142,16 @@ this.optimizeForVirtStoreCommand = optimizeForVirtStoreCommand; } + private VolumeBrickListModel brickListModel; + + public VolumeBrickListModel getBrickListModel() { + return this.brickListModel; + } + + public void setBrickListModel(VolumeBrickListModel brickListModel) { + this.brickListModel = brickListModel; + } + public VolumeListModel() { setTitle(ConstantsManager.getInstance().getConstants().volumesTitle()); @@ -172,10 +182,13 @@ @Override protected void initDetailModels() { super.initDetailModels(); + + setBrickListModel(new VolumeBrickListModel()); + ObservableCollection<EntityModel> list = new ObservableCollection<EntityModel>(); list.add(new VolumeGeneralModel()); list.add(new VolumeParameterListModel()); - list.add(new VolumeBrickListModel()); + list.add(getBrickListModel()); list.add(new PermissionListModel()); list.add(new VolumeEventListModel()); setDetailModels(list); 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 685b1ae..475aa9c 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 @@ -2642,9 +2642,6 @@ @DefaultStringValue("Remove") String removeBricksBrick(); - @DefaultStringValue("Start") - String removeBricksStart(); - @DefaultStringValue("Stop") String removeBricksStop(); @@ -3273,6 +3270,18 @@ @DefaultStringValue("Cluster :") String rebalanceClusterVolume(); + @DefaultStringValue("Brick removal in progress") + String removeBrickInProgress(); + + @DefaultStringValue("Brick removal stopped") + String removeBrickStopped(); + + @DefaultStringValue("Brick removal failed") + String removeBrickFailed(); + + @DefaultStringValue("Migration completed, pending commit") + String removeBrickCommitRequired(); + //Volume Rebalance Status Table Columns @DefaultStringValue("Host") String rebalanceSessionHost(); diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationResources.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationResources.java index 8cbea0b..22e148e 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationResources.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationResources.java @@ -393,4 +393,17 @@ @Source("images/glusterRebalance/rebalance_stopped.png") ImageResource rebalanceStoppped(); + + @Source("images/glusterRebalance/remove_brick_running.png") + ImageResource removeBrickRunning(); + + @Source("images/glusterRebalance/remove_brick_stopped.png") + ImageResource removeBrickStopped(); + + @Source("images/glusterRebalance/remove_brick_failed.png") + ImageResource removeBrickFailed(); + + @Source("images/glusterRebalance/remove_brick_commit_required.png") + ImageResource removeBrickCommitRequired(); + } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVolumeView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVolumeView.java index c16f1c2..b8f7167 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVolumeView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVolumeView.java @@ -90,6 +90,7 @@ MenuCell<GlusterTaskSupport> rebalanceMenuCell = getRebalanceActivityMenu(constants); + MenuCell<GlusterTaskSupport> removeBricksMenuCell = getRemoveBrickActivityMenu(constants); List<HasCell<GlusterTaskSupport, ?>> list = new ArrayList<HasCell<GlusterTaskSupport, ?>>(); list.add(new VolumeActivityStatusColumn<GlusterTaskSupport>()); list.add(new Column<GlusterTaskSupport, GlusterTaskSupport>(new VolumeActivitySeperatorCell<GlusterTaskSupport>()) { @@ -97,9 +98,14 @@ public GlusterTaskSupport getValue(GlusterTaskSupport object) { return object; } - }); list.add(new Column<GlusterTaskSupport, GlusterTaskSupport>(rebalanceMenuCell) { + @Override + public GlusterTaskSupport getValue(GlusterTaskSupport object) { + return object; + } + }); + list.add(new Column<GlusterTaskSupport, GlusterTaskSupport>(removeBricksMenuCell) { @Override public GlusterTaskSupport getValue(GlusterTaskSupport object) { return object; @@ -160,4 +166,18 @@ menuCell.addMenuItem(constants.stopRebalance(), getMainModel().getStopRebalanceCommand()); return menuCell; } + + private MenuCell<GlusterTaskSupport> getRemoveBrickActivityMenu(ApplicationConstants constants) { + MenuCell<GlusterTaskSupport> menuCell = new MenuCell<GlusterTaskSupport>() { + @Override + protected boolean isVisible(GlusterTaskSupport value) { + return value.getAsyncTask().getType() == GlusterTaskType.REMOVE_BRICK; + } + }; + menuCell.addMenuItem(constants.removeBricksStop(), getMainModel().getBrickListModel() + .getStopRemoveBricksCommand()); + menuCell.addMenuItem(constants.removeBricksCommit(), getMainModel().getBrickListModel() + .getCommitRemoveBricksCommand()); + return menuCell; + } } 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 4ce0af4..9dd8fef 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 @@ -1,14 +1,14 @@ package org.ovirt.engine.ui.webadmin.section.main.view.tab.gluster; -import java.util.LinkedList; +import java.util.ArrayList; import java.util.List; +import org.ovirt.engine.core.common.asynctasks.gluster.GlusterTaskType; import org.ovirt.engine.core.common.businessentities.gluster.GlusterBrickEntity; +import org.ovirt.engine.core.common.businessentities.gluster.GlusterTaskSupport; import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeEntity; import org.ovirt.engine.ui.common.idhandler.ElementIdHandler; import org.ovirt.engine.ui.common.uicommon.model.SearchableDetailModelProvider; -import org.ovirt.engine.ui.common.widget.action.ActionButtonDefinition; -import org.ovirt.engine.ui.common.widget.action.CommandLocation; import org.ovirt.engine.ui.common.widget.table.column.TextColumnWithTooltip; import org.ovirt.engine.ui.uicommonweb.UICommand; import org.ovirt.engine.ui.uicommonweb.models.gluster.VolumeBrickListModel; @@ -17,10 +17,16 @@ import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.gluster.SubTabVolumeBrickPresenter; import org.ovirt.engine.ui.webadmin.section.main.view.AbstractSubTabTableView; import org.ovirt.engine.ui.webadmin.widget.action.WebAdminButtonDefinition; -import org.ovirt.engine.ui.webadmin.widget.action.WebAdminMenuBarButtonDefinition; import org.ovirt.engine.ui.webadmin.widget.table.column.BrickStatusColumn; +import org.ovirt.engine.ui.webadmin.widget.table.column.MenuCell; +import org.ovirt.engine.ui.webadmin.widget.table.column.VolumeActivityColumn; +import org.ovirt.engine.ui.webadmin.widget.table.column.VolumeActivityCompositeCell; +import org.ovirt.engine.ui.webadmin.widget.table.column.VolumeActivitySeperatorCell; +import org.ovirt.engine.ui.webadmin.widget.table.column.VolumeActivityStatusColumn; +import com.google.gwt.cell.client.HasCell; import com.google.gwt.core.client.GWT; +import com.google.gwt.user.cellview.client.Column; import com.google.inject.Inject; public class SubTabVolumeBrickView extends AbstractSubTabTableView<GlusterVolumeEntity, GlusterBrickEntity, VolumeListModel, VolumeBrickListModel> implements SubTabVolumeBrickPresenter.ViewDef { @@ -58,6 +64,9 @@ }; getTable().addColumn(directoryColumn, constants.brickDirectoryVolumeBrick(), "400px"); //$NON-NLS-1$ + getTable().addColumn(new VolumeActivityColumn<GlusterBrickEntity>(getActivityCell(constants)), + constants.activitiesOnVolume(), "100px"); //$NON-NLS-1$ + getTable().addActionButton(new WebAdminButtonDefinition<GlusterBrickEntity>(constants.addBricksBrick()) { @Override protected UICommand resolveCommand() { @@ -65,31 +74,12 @@ } }); - List<ActionButtonDefinition<GlusterBrickEntity>> removeSubActions = new LinkedList<ActionButtonDefinition<GlusterBrickEntity>>(); - removeSubActions.add(new WebAdminButtonDefinition<GlusterBrickEntity>(constants.removeBricksStart()) { + getTable().addActionButton(new WebAdminButtonDefinition<GlusterBrickEntity>(constants.removeBricksBrick()) { @Override protected UICommand resolveCommand() { return getDetailModel().getRemoveBricksCommand(); } }); - - removeSubActions.add(new WebAdminButtonDefinition<GlusterBrickEntity>(constants.removeBricksStop()) { - @Override - protected UICommand resolveCommand() { - return getDetailModel().getStopRemoveBricksCommand(); - } - }); - - removeSubActions.add(new WebAdminButtonDefinition<GlusterBrickEntity>(constants.removeBricksCommit()) { - @Override - protected UICommand resolveCommand() { - return getDetailModel().getCommitRemoveBricksCommand(); - } - }); - - getTable().addActionButton(new WebAdminMenuBarButtonDefinition<GlusterBrickEntity>(constants.removeBricksBrick(), - removeSubActions, - CommandLocation.ContextAndToolBar)); getTable().addActionButton(new WebAdminButtonDefinition<GlusterBrickEntity>(constants.replaceBrickBrick()) { @Override @@ -105,4 +95,43 @@ } }); } + + private VolumeActivityCompositeCell<GlusterTaskSupport> getActivityCell(ApplicationConstants constants) { + MenuCell<GlusterTaskSupport> removeBricksMenuCell = getRemoveBrickActivityMenu(constants); + List<HasCell<GlusterTaskSupport, ?>> list = new ArrayList<HasCell<GlusterTaskSupport, ?>>(); + list.add(new VolumeActivityStatusColumn<GlusterTaskSupport>()); + list.add(new Column<GlusterTaskSupport, GlusterTaskSupport>(new VolumeActivitySeperatorCell<GlusterTaskSupport>()) { + @Override + public GlusterTaskSupport getValue(GlusterTaskSupport object) { + return object; + } + }); + list.add(new Column<GlusterTaskSupport, GlusterTaskSupport>(removeBricksMenuCell) { + @Override + public GlusterTaskSupport getValue(GlusterTaskSupport object) { + return object; + } + }); + + VolumeActivityCompositeCell<GlusterTaskSupport> activityCell = + new VolumeActivityCompositeCell<GlusterTaskSupport>(list) { + @Override + protected boolean isVisible(GlusterTaskSupport value) { + return value.getAsyncTask().getType() == GlusterTaskType.REMOVE_BRICK; + } + }; + return activityCell; + } + + private MenuCell<GlusterTaskSupport> getRemoveBrickActivityMenu(ApplicationConstants constants) { + MenuCell<GlusterTaskSupport> menuCell = new MenuCell<GlusterTaskSupport>() { + @Override + protected boolean isVisible(GlusterTaskSupport value) { + return value.getAsyncTask().getType() == GlusterTaskType.REMOVE_BRICK; + } + }; + menuCell.addMenuItem(constants.removeBricksStop(), getDetailModel().getStopRemoveBricksCommand()); + menuCell.addMenuItem(constants.removeBricksCommit(), getDetailModel().getCommitRemoveBricksCommand()); + return menuCell; + } } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeActivityColumn.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeActivityColumn.java index de707a6..d946530 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeActivityColumn.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeActivityColumn.java @@ -10,7 +10,11 @@ public class VolumeActivityColumn<T extends GlusterTaskSupport> extends Column<T, GlusterTaskSupport> { public VolumeActivityColumn(List<HasCell<GlusterTaskSupport, ?>> list) { - super(new VolumeActivityCompositeCell<GlusterTaskSupport>(list)); + this(new VolumeActivityCompositeCell<GlusterTaskSupport>(list)); + } + + public VolumeActivityColumn(VolumeActivityCompositeCell<GlusterTaskSupport> cell) { + super(cell); } @Override diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeActivityCompositeCell.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeActivityCompositeCell.java index 6232b0d..74a3c93 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeActivityCompositeCell.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeActivityCompositeCell.java @@ -28,6 +28,10 @@ return; } + if (!isVisible(value)) { + return; + } + sb.appendHtmlConstant("<table style=\"margin:0 auto\"><tr>"); //$NON-NLS-1$ Iterator<HasCell<T, ?>> iterator = hasCells.iterator(); while (iterator.hasNext()) { @@ -36,6 +40,10 @@ sb.appendHtmlConstant("</tr></table>"); //$NON-NLS-1$ } + protected boolean isVisible(T value) { + return true; + } + @Override protected <X> void render(Context context, T value, diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeActivityStatusCell.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeActivityStatusCell.java index 579209f..323e40d 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeActivityStatusCell.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeActivityStatusCell.java @@ -57,6 +57,29 @@ tooltip = ""; //$NON-NLS-1$ } } + else if (taskType == GlusterTaskType.REMOVE_BRICK) { + switch (value.getAsyncTask().getStatus()) { + case STARTED: + taskImage = resources.removeBrickRunning(); + tooltip = constants.removeBrickInProgress(); + break; + case ABORTED: + taskImage = resources.removeBrickFailed(); + tooltip = constants.removeBrickStopped(); + break; + case FAILED: + taskImage = resources.removeBrickFailed(); + tooltip = constants.removeBrickFailed(); + break; + case FINISHED: + taskImage = resources.removeBrickCommitRequired(); + tooltip = constants.removeBrickCommitRequired(); + break; + default: + taskImage = null; + tooltip = ""; //$NON-NLS-1$ + } + } if (taskImage != null) { // Generate the HTML for the image: diff --git a/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/webadmin/images/glusterRebalance/remove_brick_commit_required.png b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/webadmin/images/glusterRebalance/remove_brick_commit_required.png new file mode 100644 index 0000000..0a160f3 --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/webadmin/images/glusterRebalance/remove_brick_commit_required.png Binary files differ diff --git a/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/webadmin/images/glusterRebalance/remove_brick_failed.png b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/webadmin/images/glusterRebalance/remove_brick_failed.png new file mode 100644 index 0000000..f7422c9 --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/webadmin/images/glusterRebalance/remove_brick_failed.png Binary files differ diff --git a/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/webadmin/images/glusterRebalance/remove_brick_running.png b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/webadmin/images/glusterRebalance/remove_brick_running.png new file mode 100644 index 0000000..f686ecf --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/webadmin/images/glusterRebalance/remove_brick_running.png Binary files differ diff --git a/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/webadmin/images/glusterRebalance/remove_brick_stopped.png b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/webadmin/images/glusterRebalance/remove_brick_stopped.png new file mode 100644 index 0000000..2b63c44 --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/webadmin/images/glusterRebalance/remove_brick_stopped.png Binary files differ -- To view, visit http://gerrit.ovirt.org/20009 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I820c8b2e2e948d1c2ce0811d2d5a78784eeafc2b 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