Shubhendu Tripathi has uploaded a new change for review. Change subject: webadmin: UI for gluster volume snapshot actions ......................................................................
webadmin: UI for gluster volume snapshot actions Added UI changes for gluster volume snapshot actions - Restore - Delete - Delete All - Activate - Deactivate Change-Id: I3d5b6162c6c6931cd0366db5ba600566ab8ac7c9 Signed-off-by: Shubhendu Tripathi <shtri...@redhat.com> --- M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/help/HelpTag.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/GlusterVolumeSnapshotListModel.java M frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java M frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIMessages.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/tab/gluster/SubTabGlusterVolumeSnapshotView.java 6 files changed, 392 insertions(+), 0 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/55/39355/1 diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/help/HelpTag.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/help/HelpTag.java index 13c3d30..f3ebf3c 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/help/HelpTag.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/help/HelpTag.java @@ -476,6 +476,21 @@ volume_snapshots("volume_snapshots", HelpTagType.WEBADMIN), //$NON-NLS-1$ + volume_restore_snapshot_confirmation( + "volume_restore_snapshot_confirmation", HelpTagType.WEBADMIN, "[gluster] Volumes main tab -> Snapshots sub-tab -> 'Restore Snapshot' dialog"), //$NON-NLS-1$//$NON-NLS-2$ + + volume_delete_snapshot_confirmation( + "volume_delete_snapshot_confirmation", HelpTagType.WEBADMIN, "[gluster] Volumes main tab -> Snapshots sub-tab -> 'Remove Snapshot' dialog"), //$NON-NLS-1$//$NON-NLS-2$ + + volume_delete_all_snapshot_confirmation( + "volume_delete_all_snapshot_confirmation", HelpTagType.WEBADMIN, "[gluster] Volumes main tab -> Snapshots sub-tab -> 'Remove All Snapshots' dialog"), //$NON-NLS-1$//$NON-NLS-2$ + + volume_activate_snapshot_confirmation( + "volume_activate_snapshot_confirmation", HelpTagType.WEBADMIN, "[gluster] Volumes main tab -> Snapshots sub-tab -> 'Activate Snapshot' dialog"), //$NON-NLS-1$//$NON-NLS-2$ + + volume_deactivate_snapshot_confirmation( + "volume_deactivate_snapshot_confirmation", HelpTagType.WEBADMIN, "[gluster] Volumes main tab -> Snapshots sub-tab -> 'Deactivate Snapshot' dialog"), //$NON-NLS-1$//$NON-NLS-2$ + new_role("new_role", HelpTagType.WEBADMIN), //$NON-NLS-1$ edit_role("edit_role", HelpTagType.WEBADMIN), //$NON-NLS-1$ diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/GlusterVolumeSnapshotListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/GlusterVolumeSnapshotListModel.java index 48ef3c1..d55c191 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/GlusterVolumeSnapshotListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/GlusterVolumeSnapshotListModel.java @@ -4,16 +4,27 @@ import java.util.Collections; import java.util.List; +import org.ovirt.engine.core.common.action.VdcActionParametersBase; +import org.ovirt.engine.core.common.action.VdcActionType; +import org.ovirt.engine.core.common.action.gluster.GlusterVolumeParameters; +import org.ovirt.engine.core.common.action.gluster.GlusterVolumeSnapshotActionParameters; +import org.ovirt.engine.core.common.businessentities.gluster.GlusterSnapshotStatus; import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeEntity; import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeSnapshotEntity; import org.ovirt.engine.ui.frontend.AsyncQuery; +import org.ovirt.engine.ui.frontend.Frontend; import org.ovirt.engine.ui.frontend.INewAsyncCallback; import org.ovirt.engine.ui.uicommonweb.Linq; import org.ovirt.engine.ui.uicommonweb.UICommand; import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; import org.ovirt.engine.ui.uicommonweb.help.HelpTag; +import org.ovirt.engine.ui.uicommonweb.models.ConfirmationModel; import org.ovirt.engine.ui.uicommonweb.models.SearchableListModel; import org.ovirt.engine.ui.uicompat.ConstantsManager; +import org.ovirt.engine.ui.uicompat.FrontendActionAsyncResult; +import org.ovirt.engine.ui.uicompat.FrontendMultipleActionAsyncResult; +import org.ovirt.engine.ui.uicompat.IFrontendActionAsyncCallback; +import org.ovirt.engine.ui.uicompat.IFrontendMultipleActionAsyncCallback; public class GlusterVolumeSnapshotListModel extends SearchableListModel { @Override @@ -25,6 +36,12 @@ setTitle(ConstantsManager.getInstance().getConstants().snapshotsTitle()); setHelpTag(HelpTag.volume_snapshots); setHashName("volume_snapshots");//$NON-NLS-1$ + + setRestoreSnapshotCommand(new UICommand("restore", this)); //$NON-NLS-1$ + setDeleteSnapshotCommand(new UICommand("delete", this)); //$NON-NLS-1$ + setDeleteAllSnapshotsCommand(new UICommand("deleteAll", this)); //$NON-NLS-1$ + setActivateSnapshotCommand(new UICommand("activate", this)); //$NON-NLS-1$ + setDeactivateSnapshotCommand(new UICommand("deactivate", this)); //$NON-NLS-1$ } @Override @@ -36,12 +53,86 @@ @Override protected void onSelectedItemChanged() { super.onSelectedItemChanged(); + updateActionAvailability(); } @Override protected void selectedItemsChanged() { super.selectedItemsChanged(); + updateActionAvailability(); + } + + private UICommand restoreSnapshotCommand; + private UICommand deleteSnapshotCommand; + private UICommand deleteAllSnapshotsCommand; + private UICommand activateSnapshotCommand; + private UICommand deactivateSnapshotCommand; + + public UICommand getRestoreSnapshotCommand() { + return restoreSnapshotCommand; + } + + public void setRestoreSnapshotCommand(UICommand restoreSnapshotCommand) { + this.restoreSnapshotCommand = restoreSnapshotCommand; + } + + public UICommand getDeleteSnapshotCommand() { + return deleteSnapshotCommand; + } + + public void setDeleteSnapshotCommand(UICommand deleteSnapshotCommand) { + this.deleteSnapshotCommand = deleteSnapshotCommand; + } + + public UICommand getDeleteAllSnapshotsCommand() { + return deleteAllSnapshotsCommand; + } + + public void setDeleteAllSnapshotsCommand(UICommand deleteAllSnapshotsCommand) { + this.deleteAllSnapshotsCommand = deleteAllSnapshotsCommand; + } + + public UICommand getActivateSnapshotCommand() { + return activateSnapshotCommand; + } + + public void setActivateSnapshotCommand(UICommand activateSnapshotCommand) { + this.activateSnapshotCommand = activateSnapshotCommand; + } + + public UICommand getDeactivateSnapshotCommand() { + return deactivateSnapshotCommand; + } + + public void setDeactivateSnapshotCommand(UICommand deactivateSnapshotCommand) { + this.deactivateSnapshotCommand = deactivateSnapshotCommand; + } + + private void updateActionAvailability() { + boolean allowRestore = false; + boolean allowDelete = true; + boolean allowDeleteAll = true; + boolean allowActivate = false; + boolean allowDeactivate = false; + + if (getSelectedItems() == null || getSelectedItems().size() == 0) { + allowDelete = false; + } else { + List<GlusterVolumeSnapshotEntity> snapshots = Linq.<GlusterVolumeSnapshotEntity> cast(getSelectedItems()); + + if (snapshots.size() == 1) { + allowRestore = true; + allowActivate = snapshots.get(0).getStatus() == GlusterSnapshotStatus.DEACTIVATED; + allowDeactivate = snapshots.get(0).getStatus() == GlusterSnapshotStatus.ACTIVATED; + } + } + + getRestoreSnapshotCommand().setIsExecutionAllowed(allowRestore); + getDeleteSnapshotCommand().setIsExecutionAllowed(allowDelete); + getDeleteAllSnapshotsCommand().setIsExecutionAllowed(allowDeleteAll); + getActivateSnapshotCommand().setIsExecutionAllowed(allowActivate); + getDeactivateSnapshotCommand().setIsExecutionAllowed(allowDeactivate); } @Override @@ -66,6 +157,204 @@ @Override public void executeCommand(UICommand command) { super.executeCommand(command); + if (command.equals(getRestoreSnapshotCommand())) { + restoreSnapshot(); + } else if (command.equals(getDeleteSnapshotCommand())) { + deleteSnapshot(); + } else if (command.equals(getDeleteAllSnapshotsCommand())) { + deleteAllSnapshots(); + } else if (command.equals(getActivateSnapshotCommand())) { + activateSnapshot(); + } else if (command.equals(getDeactivateSnapshotCommand())) { + deactivateSnapshot(); + } else if (command.getName().equals("onRestoreSnapshot")) { //$NON-NLS-1$ + onRestoreSnapshot(); + } else if (command.getName().equals("onDeleteSnapshot")) { //$NON-NLS-1$ + onDeleteSnapshot(); + } else if (command.getName().equals("onDeleteAllSnapshots")) { //$NON-NLS-1$ + onDeleteAllSnapshots(); + } else if (command.getName().equals("onActivateSnapshot")) { //$NON-NLS-1$ + onActivateSnapshot(); + } else if (command.getName().equals("onDeactivateSnapshot")) { //$NON-NLS-1$ + onDeactivateSnapshot(); + } else if (command.getName().equals("cancelConfirmation")) { //$NON-NLS-1$ + setConfirmWindow(null); + } + } + + private void restoreSnapshot() { + if (getSelectedItem() == null) { + return; + } + + ConfirmationModel model = new ConfirmationModel(); + GlusterVolumeSnapshotEntity snapshot = (GlusterVolumeSnapshotEntity) getSelectedItem(); + setConfirmWindow(model); + model.setTitle(ConstantsManager.getInstance().getMessages().confirmRestoreSnapshot(getEntity().getName())); + model.setHelpTag(HelpTag.volume_restore_snapshot_confirmation); + model.setHashName("volume_restore_snapshot_confirmation"); //$NON-NLS-1$ + if (snapshot.getStatus() == GlusterSnapshotStatus.ACTIVATED) { + model.setMessage(ConstantsManager.getInstance() + .getConstants() + .confirmVolumeSnapshotRestoreWithStopMessage()); + } else { + model.setMessage(ConstantsManager.getInstance().getConstants().confirmVolumeSnapshotRestoreMesage()); + } + + UICommand okCommand = UICommand.createDefaultOkUiCommand("onRestoreSnapshot", this); //$NON-NLS-1$ + model.getCommands().add(okCommand); + UICommand cancelCommand = UICommand.createCancelUiCommand("cancelConfirmation", this); //$NON-NLS-1$ + model.getCommands().add(cancelCommand); + } + + private void onRestoreSnapshot() { + runAction(VdcActionType.RestoreGlusterVolumeSnapshot, + new GlusterVolumeSnapshotActionParameters(getEntity().getId(), + ((GlusterVolumeSnapshotEntity) getSelectedItem()).getSnapshotName(), + true)); + } + + private void deleteSnapshot() { + if (getSelectedItems() == null) { + return; + } + + ConfirmationModel model = new ConfirmationModel(); + List<GlusterVolumeSnapshotEntity> snapshots = (List<GlusterVolumeSnapshotEntity>) getSelectedItems(); + StringBuilder snapshotNames = new StringBuilder(); + for (GlusterVolumeSnapshotEntity snapshot : snapshots) { + snapshotNames.append(snapshot.getSnapshotName()); + snapshotNames.append("\n"); //$NON-NLS-1$ + } + + setConfirmWindow(model); + model.setTitle(ConstantsManager.getInstance().getMessages().confirmRemoveSnapshot(getEntity().getName())); + model.setHelpTag(HelpTag.volume_delete_snapshot_confirmation); + model.setHashName("volume_delete_snapshot_confirmation"); //$NON-NLS-1$ + model.setMessage(ConstantsManager.getInstance() + .getMessages() + .confirmVolumeSnapshotDeleteMessage(snapshotNames.toString())); + + UICommand okCommand = UICommand.createDefaultOkUiCommand("onDeleteSnapshot", this); //$NON-NLS-1$ + model.getCommands().add(okCommand); + UICommand cancelCommand = UICommand.createCancelUiCommand("cancelConfirmation", this); //$NON-NLS-1$ + model.getCommands().add(cancelCommand); + } + + private void onDeleteSnapshot() { + if (getConfirmWindow() == null) { + return; + } + + ConfirmationModel model = (ConfirmationModel) getConfirmWindow(); + + List<VdcActionParametersBase> paramsList = new ArrayList<>(); + for (GlusterVolumeSnapshotEntity snapshot : (List<GlusterVolumeSnapshotEntity>) getSelectedItems()) { + GlusterVolumeSnapshotActionParameters param = + new GlusterVolumeSnapshotActionParameters(getEntity().getId(), snapshot.getSnapshotName(), true); + paramsList.add(param); + } + + model.startProgress(null); + + Frontend.getInstance().runMultipleAction(VdcActionType.DeleteGlusterVolumeSnapshot, + paramsList, + new IFrontendMultipleActionAsyncCallback() { + + @Override + public void executed(FrontendMultipleActionAsyncResult result) { + ConfirmationModel localModel = (ConfirmationModel) getConfirmWindow(); + localModel.stopProgress(); + setConfirmWindow(null); + } + }, model); + } + + private void deleteAllSnapshots() { + ConfirmationModel model = new ConfirmationModel(); + setConfirmWindow(model); + model.setTitle(ConstantsManager.getInstance().getMessages().confirmRemoveAllSnapshots(getEntity().getName())); + model.setHelpTag(HelpTag.volume_delete_all_snapshot_confirmation); + model.setHashName("volume_delete_all_snapshot_confirmation"); //$NON-NLS-1$ + model.setMessage(ConstantsManager.getInstance().getConstants().confirmVolumeSnapshotDeleteAllMessage()); + + UICommand okCommand = UICommand.createDefaultOkUiCommand("onDeleteAllSnapshots", this); //$NON-NLS-1$ + model.getCommands().add(okCommand); + UICommand cancelCommand = UICommand.createCancelUiCommand("cancelConfirmation", this); //$NON-NLS-1$ + model.getCommands().add(cancelCommand); + } + + private void onDeleteAllSnapshots() { + runAction(VdcActionType.DeleteAllGlusterVolumeSnapshots, new GlusterVolumeParameters(getEntity().getId())); + } + + private void activateSnapshot() { + if (getSelectedItem() == null) { + return; + } + + ConfirmationModel model = new ConfirmationModel(); + setConfirmWindow(model); + model.setTitle(ConstantsManager.getInstance().getMessages().confirmActivateSnapshot(getEntity().getName())); + model.setHelpTag(HelpTag.volume_activate_snapshot_confirmation); + model.setHashName("volume_activate_snapshot_confirmation"); //$NON-NLS-1$ + model.setMessage(ConstantsManager.getInstance().getConstants().confirmVolumeSnapshotActivateMessage()); + + UICommand okCommand = UICommand.createDefaultOkUiCommand("onActivateSnapshot", this); //$NON-NLS-1$ + model.getCommands().add(okCommand); + UICommand cancelCommand = UICommand.createCancelUiCommand("cancelConfirmation", this); //$NON-NLS-1$ + model.getCommands().add(cancelCommand); + } + + private void onActivateSnapshot() { + runAction(VdcActionType.ActivateGlusterVolumeSnapshot, + new GlusterVolumeSnapshotActionParameters(getEntity().getId(), + ((GlusterVolumeSnapshotEntity) getSelectedItem()).getSnapshotName(), + true)); + } + + private void deactivateSnapshot() { + if (getSelectedItem() == null) { + return; + } + + ConfirmationModel model = new ConfirmationModel(); + setConfirmWindow(model); + model.setTitle(ConstantsManager.getInstance().getMessages().confirmDeactivateSnapshot(getEntity().getName())); + model.setHelpTag(HelpTag.volume_deactivate_snapshot_confirmation); + model.setHashName("volume_deactivate_snapshot_confirmation"); //$NON-NLS-1$ + model.setMessage(ConstantsManager.getInstance().getConstants().confirmVolumeSnapshotDeactivateMessage()); + + UICommand okCommand = UICommand.createDefaultOkUiCommand("onDeactivateSnapshot", this); //$NON-NLS-1$ + model.getCommands().add(okCommand); + UICommand cancelCommand = UICommand.createCancelUiCommand("cancelConfirmation", this); //$NON-NLS-1$ + model.getCommands().add(cancelCommand); + } + + private void onDeactivateSnapshot() { + runAction(VdcActionType.DeactivateGlusterVolumeSnapshot, + new GlusterVolumeSnapshotActionParameters(getEntity().getId(), + ((GlusterVolumeSnapshotEntity) getSelectedItem()).getSnapshotName(), + true)); + } + + private void runAction(VdcActionType action, VdcActionParametersBase param) { + if (getConfirmWindow() == null) { + return; + } + + ConfirmationModel model = (ConfirmationModel) getConfirmWindow(); + + model.startProgress(null); + + Frontend.getInstance().runAction(action, param, new IFrontendActionAsyncCallback() { + @Override + public void executed(FrontendActionAsyncResult result) { + ConfirmationModel localModel = (ConfirmationModel) getConfirmWindow(); + localModel.stopProgress(); + setConfirmWindow(null); + } + }); } @Override diff --git a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java index 89db902..b7905cf 100644 --- a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java +++ b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java @@ -2432,6 +2432,7 @@ @DefaultStringValue("Remove the Data Center(s) will move the entities residing on the storage domain(s) to an unregistered state. For further information please consult documentation.") String removeDataCenterWarnningNote(); + // Gluster Volume Snapshots @DefaultStringValue("Volume Snapshot - Cluster Options") String configureClusterSnapshotOptionsTitle(); @@ -2448,5 +2449,20 @@ + "Changing configuration parameters will lead to deletion of snapshots if they exceed the new limit.\n\n" + "Are you sure you want to continue?") String youAreAboutChangeSnapshotConfigurationMsg(); + + @DefaultStringValue("Volume will be restored to the state of selected snapshot.\nDo you want to continue?") + String confirmVolumeSnapshotRestoreMesage(); + + @DefaultStringValue("The volume will be brought down and restored to the state of the selected snapshot.\nDo you want to continue?") + String confirmVolumeSnapshotRestoreWithStopMessage(); + + @DefaultStringValue("All snapshots will be removed. Do you want to continue?") + String confirmVolumeSnapshotDeleteAllMessage(); + + @DefaultStringValue("The selected snapshot will be activated. Do you want to continue?") + String confirmVolumeSnapshotActivateMessage(); + + @DefaultStringValue("The selected snapshot will be deactivated.\n Do you want to continue?") + String confirmVolumeSnapshotDeactivateMessage(); } diff --git a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIMessages.java b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIMessages.java index 6cdb44d..4d95ebc 100644 --- a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIMessages.java +++ b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIMessages.java @@ -413,9 +413,28 @@ @DefaultMessage("Do you approve trusting self signed certificate subject {0}, SHA-1 fingerprint {1}?") String approveRootCertificateTrust(String subject, String sha1Fingerprint); + // Gluster Volume Snapshots @DefaultMessage("Value of cluster configuration parameter {0} is empty") String clusterSnapshotOptionValueEmpty(String option); @DefaultMessage("Value of volume configuration parameter {0} is empty") String volumeSnapshotOptionValueEmpty(String option); + + @DefaultMessage("Restore Snapshot on volume - {0}") + String confirmRestoreSnapshot(String volumeName); + + @DefaultMessage("Remove Snapshot on volume - {0}") + String confirmRemoveSnapshot(String volumeName); + + @DefaultMessage("Remove All Snapshots on volume - {0}") + String confirmRemoveAllSnapshots(String volumeName); + + @DefaultMessage("Activate Snapshot on volume - {0}") + String confirmActivateSnapshot(String volumeName); + + @DefaultMessage("Deactivate Snapshot on volume - {0}") + String confirmDeactivateSnapshot(String volumeName); + + @DefaultMessage("Below snapshots would be removed. Do you want to continue?\n\n {0}") + String confirmVolumeSnapshotDeleteMessage(String snapshotNames); } 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 3751880..b5eeb1f 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 @@ -3907,4 +3907,19 @@ @DefaultStringValue("Snapshot Options") String snapshotConfigHeaderLabel(); + + @DefaultStringValue("Restore") + String restoreVolumeSnapshot(); + + @DefaultStringValue("Delete") + String deleteVolumeSnapshot(); + + @DefaultStringValue("Delete All") + String deleteAllVolumeSnapshots(); + + @DefaultStringValue("Activate") + String activateVolumeSnapshot(); + + @DefaultStringValue("Deactivate") + String deactivateVolumeSnapshot(); } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/gluster/SubTabGlusterVolumeSnapshotView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/gluster/SubTabGlusterVolumeSnapshotView.java index 7358eb7..099c81a 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/gluster/SubTabGlusterVolumeSnapshotView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/gluster/SubTabGlusterVolumeSnapshotView.java @@ -5,11 +5,14 @@ import org.ovirt.engine.ui.common.idhandler.ElementIdHandler; import org.ovirt.engine.ui.common.uicommon.model.SearchableDetailModelProvider; import org.ovirt.engine.ui.common.widget.table.column.TextColumnWithTooltip; +import org.ovirt.engine.ui.common.widget.table.column.AbstractTextColumn; +import org.ovirt.engine.ui.uicommonweb.UICommand; import org.ovirt.engine.ui.uicommonweb.models.gluster.GlusterVolumeSnapshotListModel; import org.ovirt.engine.ui.uicommonweb.models.volumes.VolumeListModel; import org.ovirt.engine.ui.webadmin.ApplicationConstants; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.gluster.SubTabGlusterVolumeSnapshotPresenter; 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.table.column.GlusterVolumeSnapshotStatusColumn; import com.google.gwt.core.client.GWT; @@ -67,5 +70,40 @@ }; creationTimeColumn.makeSortable(); getTable().addColumn(creationTimeColumn, constants.volumeSnapshotCreationTime(), "400px"); //$NON-NLS-1$ + + getTable().addActionButton(new WebAdminButtonDefinition<GlusterVolumeSnapshotEntity>(constants.restoreVolumeSnapshot()) { + @Override + protected UICommand resolveCommand() { + return getDetailModel().getRestoreSnapshotCommand(); + } + }); + + getTable().addActionButton(new WebAdminButtonDefinition<GlusterVolumeSnapshotEntity>(constants.deleteVolumeSnapshot()) { + @Override + protected UICommand resolveCommand() { + return getDetailModel().getDeleteSnapshotCommand(); + } + }); + + getTable().addActionButton(new WebAdminButtonDefinition<GlusterVolumeSnapshotEntity>(constants.deleteAllVolumeSnapshots()) { + @Override + protected UICommand resolveCommand() { + return getDetailModel().getDeleteAllSnapshotsCommand(); + } + }); + + getTable().addActionButton(new WebAdminButtonDefinition<GlusterVolumeSnapshotEntity>(constants.activateVolumeSnapshot()) { + @Override + protected UICommand resolveCommand() { + return getDetailModel().getActivateSnapshotCommand(); + } + }); + + getTable().addActionButton(new WebAdminButtonDefinition<GlusterVolumeSnapshotEntity>(constants.deactivateVolumeSnapshot()) { + @Override + protected UICommand resolveCommand() { + return getDetailModel().getDeactivateSnapshotCommand(); + } + }); } } -- To view, visit https://gerrit.ovirt.org/39355 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I3d5b6162c6c6931cd0366db5ba600566ab8ac7c9 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: ovirt-engine-3.5-gluster Gerrit-Owner: Shubhendu Tripathi <shtri...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches