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

Reply via email to