summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java19
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Cluster.java11
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Event.java1
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/TaskInfo.java16
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AbstractActionDelegate.java6
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddDiskAction.java38
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddServerAction.java27
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/ClearTaskAction.java27
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CommitTaskAction.java44
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CreateVolumeAction.java32
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/DeleteVolumeAction.java97
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/DownloadVolumeLogsAction.java7
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/MigrateDiskAction.java2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/PauseTaskAction.java31
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RebalanceVolumeAction.java24
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveDiskAction.java66
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveServerAction.java4
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/ResumeTaskAction.java30
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StartVolumeAction.java7
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StopTaskAction.java28
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StopVolumeAction.java45
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/TasksPage.java24
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/MigrateDiskTask.java20
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/Task.java6
24 files changed, 263 insertions, 349 deletions
diff --git a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java
index be7a9023..a1c7823a 100644
--- a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java
+++ b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java
@@ -162,8 +162,8 @@ public class GlusterDataModelManager {
}
public void initializeTasks(Cluster cluster) {
- // List<TaskInfo> taskInfoList = new TasksClient(cluster.getName()).getAllTasks();
- List<TaskInfo> taskInfoList = getDummyTasks();
+ List<TaskInfo> taskInfoList = new TasksClient(cluster.getName()).getAllTasks();
+ // List<TaskInfo> taskInfoList = getDummyTasks();
cluster.setTaskInfoList(taskInfoList);
}
@@ -174,8 +174,8 @@ public class GlusterDataModelManager {
TaskInfo taskInfo = new TaskInfo();
taskInfo.setType(TASK_TYPE.BRICK_MIGRATE);
taskInfo.setName("Migrate Brick-music");
- taskInfo.setCanPause(true);
- taskInfo.setCanStop(true);
+ taskInfo.setPauseSupported(true);
+ taskInfo.setStopSupported(true);
taskInfo.setStatus(new TaskStatus(new Status(Status.STATUS_CODE_RUNNING, "")));
taskInfo.getStatus().setMessage("Migrating file xxxxx to yyyy");
@@ -185,8 +185,8 @@ public class GlusterDataModelManager {
taskInfo = new TaskInfo();
taskInfo.setType(TASK_TYPE.DISK_FORMAT);
taskInfo.setName("Format Disk-server1:sdc");
- taskInfo.setCanPause(false);
- taskInfo.setCanStop(false);
+ taskInfo.setPauseSupported(false);
+ taskInfo.setStopSupported(false);
taskInfo.setStatus( new TaskStatus(new Status(Status.STATUS_CODE_FAILURE, "")));
taskInfo.getStatus().setMessage("Format completes 80% ...");
taskInfo.setDescription("Formatting disk server1:sdc.");
@@ -407,6 +407,13 @@ public class GlusterDataModelManager {
listener.volumeCreated(volume);
}
}
+
+ public void updateVolumeBricks(Volume volume, List<Brick> bricks) {
+ model.getCluster().updateVolume( volume.getName(), bricks );
+ for (ClusterListener listener : listeners) {
+ listener.volumeChanged(volume, new Event(EVENT_TYPE.BRICK_REPLACED , bricks));
+ }
+ }
public void addTask(TaskInfo taskInfo) {
Cluster cluster = model.getCluster();
diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Cluster.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Cluster.java
index d6757cba..56b52659 100644
--- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Cluster.java
+++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Cluster.java
@@ -55,7 +55,7 @@ public class Cluster extends Entity {
}
public void deleteVolume(Volume volume) {
- volumes.remove(volume);
+ volumes.remove(volume);
}
public void setServers(List<GlusterServer> servers) {
@@ -93,6 +93,15 @@ public class Cluster extends Entity {
public void addVolume(Volume volume) {
this.volumes.add(volume);
}
+
+ public void updateVolume(String volumeName, List<Brick> bricks) {
+ for (Volume volume : volumes) {
+ if (volume.getName().equals(volumeName)) {
+ volume.setBricks(bricks);
+ return;
+ }
+ }
+ }
public Cluster(String name, Entity parent) {
super(name, parent);
diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Event.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Event.java
index 99594b5d..1e172d1c 100644
--- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Event.java
+++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Event.java
@@ -22,6 +22,7 @@ public class Event {
public enum EVENT_TYPE {
BRICKS_ADDED,
BRICKS_REMOVED,
+ BRICK_REPLACED,
NETWORK_INTERFACE_ADDED,
NETWORK_INTERFACE_REMOVED,
VOLUME_STATUS_CHANGED,
diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/TaskInfo.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/TaskInfo.java
index 1ce2fa04..d3267ec4 100644
--- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/TaskInfo.java
+++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/TaskInfo.java
@@ -78,28 +78,28 @@ public class TaskInfo extends Entity {
public void setStatus(TaskStatus status) {
this.status = status;
}
-
- public Boolean canPause() {
+
+ public Boolean getPauseSupported() {
return pauseSupported;
}
- public void setCanPause(Boolean canPause) {
+ public void setPauseSupported(Boolean canPause) {
this.pauseSupported = canPause;
}
- public Boolean canStop() {
+ public Boolean getStopSupported() {
return stopSupported;
}
-
- public void setCanStop(Boolean canStop) {
+
+ public void setStopSupported(Boolean canStop) {
this.stopSupported = canStop;
}
- public Boolean canCommit() {
+ public Boolean getCommitSupported() {
return this.commitSupported;
}
- public void setCanCommit(Boolean canCommit) {
+ public void setCommitSupported(Boolean canCommit) {
this.commitSupported = canCommit;
}
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AbstractActionDelegate.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AbstractActionDelegate.java
index 859d76db..6498d902 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AbstractActionDelegate.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AbstractActionDelegate.java
@@ -18,8 +18,6 @@
*******************************************************************************/
package com.gluster.storage.management.gui.actions;
-import java.util.Set;
-
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.ISelection;
@@ -31,13 +29,13 @@ import org.eclipse.ui.IWorkbenchWindowActionDelegate;
import org.eclipse.ui.internal.UIPlugin;
import com.gluster.storage.management.core.model.Entity;
-import com.gluster.storage.management.gui.utils.GUIHelper;
/**
* All action delegates in the application should extend from this class. It provides common functionality of grabbing
* the Window object on initialization and extracting the selected entity in case of selection change on the navigation
* tree.
*/
+@SuppressWarnings("restriction")
public abstract class AbstractActionDelegate implements IWorkbenchWindowActionDelegate {
protected IWorkbenchWindow window;
@@ -56,7 +54,7 @@ public abstract class AbstractActionDelegate implements IWorkbenchWindowActionDe
});
}
- abstract protected void performAction(IAction action);
+ abstract protected void performAction(final IAction action);
@Override
public void selectionChanged(IAction action, ISelection selection) {
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddDiskAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddDiskAction.java
index cc57c541..be2cacee 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddDiskAction.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddDiskAction.java
@@ -24,7 +24,6 @@ package com.gluster.storage.management.gui.actions;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.swt.widgets.Display;
import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.core.model.Volume;
@@ -34,43 +33,24 @@ public class AddDiskAction extends AbstractActionDelegate {
private Volume volume;
private GlusterDataModelManager modelManager = GlusterDataModelManager.getInstance();
- /* (non-Javadoc)
- * @see org.eclipse.ui.IWorkbenchWindowActionDelegate#dispose()
- */
@Override
public void dispose() {
window = null;
}
- /* (non-Javadoc)
- * @see com.gluster.storage.management.gui.actions.AbstractActionDelegate#performAction(org.eclipse.jface.action.IAction)
- */
@Override
protected void performAction(IAction action) {
- //TODO: open a dialog box
- // MessageDialog.openInformation(getShell(), "Action captured", action.getDescription() + "\n" + volume.getName());
- Display.getDefault().asyncExec(new Runnable() {
-
- @Override
- public void run() {
- AddDiskWizard wizard = new AddDiskWizard(volume); // Also add single page
-
- WizardDialog dialog = new WizardDialog(getShell(), wizard);
- dialog.create();
- dialog.getShell().setSize(1024, 600);
- dialog.open();
- }
- });
+ // TODO: open a dialog box
+ // MessageDialog.openInformation(getShell(), "Action captured", action.getDescription() + "\n" +
+ // volume.getName());
+ AddDiskWizard wizard = new AddDiskWizard(volume); // Also add single page
+
+ WizardDialog dialog = new WizardDialog(getShell(), wizard);
+ dialog.create();
+ dialog.getShell().setSize(1024, 600);
+ dialog.open();
}
-
- /*
- * (non-Javadoc)
- *
- * @see
- * com.gluster.storage.management.gui.actions.AbstractActionDelegate#selectionChanged(org.eclipse.jface.action.IAction
- * , org.eclipse.jface.viewers.ISelection)
- */
@Override
public void selectionChanged(IAction action, ISelection selection) {
super.selectionChanged(action, selection);
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddServerAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddServerAction.java
index 4d1a87c9..0e6cd6b2 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddServerAction.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddServerAction.java
@@ -30,8 +30,6 @@ import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.client.GlusterServersClient;
import com.gluster.storage.management.core.constants.CoreConstants;
import com.gluster.storage.management.core.model.Server;
-import com.gluster.storage.management.core.model.Status;
-import com.gluster.storage.management.core.response.GlusterServerResponse;
import com.gluster.storage.management.gui.utils.GUIHelper;
public class AddServerAction extends AbstractActionDelegate {
@@ -52,37 +50,24 @@ public class AddServerAction extends AbstractActionDelegate {
String partErrMsg = "";
for (Server server : selectedServers) {
guiHelper.setStatusMessage("Adding server [" + server.getName() + "]...");
-
+
try {
glusterServersClient.addServer(server);
modelManager.removeDiscoveredServer(server);
modelManager.addGlusterServer(glusterServersClient.getGlusterServer(server.getName()));
successServers.add(server);
- } catch(Exception e) {
+ } catch (Exception e) {
// TODO: Handle error conditions
}
-
-// Status status = response.getStatus();
-// if (status.isSuccess()) {
-// modelManager.removeDiscoveredServer(server);
-// modelManager.addGlusterServer(response.getGlusterServer());
-// successServers.add(server);
-// } else if (status.isPartSuccess()) {
-// modelManager.removeDiscoveredServer(server);
-// modelManager.addGlusterServer(response.getGlusterServer());
-// partSuccessServers.add(server);
-// partErrMsg += "[" + server.getName() + "] : " + status;
-// } else {
-// errMsg += "[" + server.getName() + "] : " + status;
-// }
}
guiHelper.clearStatusMessage();
- showStatusMessage(action.getDescription(), selectedServers, successServers, partSuccessServers, errMsg, partErrMsg);
+ showStatusMessage(action.getDescription(), selectedServers, successServers, partSuccessServers, errMsg,
+ partErrMsg);
}
};
-
- BusyIndicator.showWhile(Display.getDefault(), new Runnable() {
+
+ BusyIndicator.showWhile(Display.getDefault(), new Runnable() {
@Override
public void run() {
Display.getDefault().asyncExec(addServerThread);
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/ClearTaskAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/ClearTaskAction.java
index f1eb8a94..6fff4f44 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/ClearTaskAction.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/ClearTaskAction.java
@@ -2,7 +2,6 @@ package com.gluster.storage.management.gui.actions;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.swt.widgets.Display;
import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.client.TasksClient;
@@ -15,23 +14,15 @@ public class ClearTaskAction extends AbstractActionDelegate {
@Override
protected void performAction(final IAction action) {
- Display.getDefault().asyncExec(new Runnable() {
-
- @Override
- public void run() {
- final String actionDesc = action.getDescription();
-
- try {
- new TasksClient().resumeTask(taskInfo.getName());
- // TODO Update taskInfo in the model
- // modelManager.updateVolumeStatus(volume, VOLUME_STATUS.OFFLINE);
- modelManager.removeTask(taskInfo);
- } catch (Exception e) {
- showErrorDialog(actionDesc,
- "Task [" + taskInfo.getName() + "] could not be cleared! Error: [" + e.getMessage() + "]");
- }
- }
- });
+ final String actionDesc = action.getDescription();
+
+ try {
+ new TasksClient().resumeTask(taskInfo.getName());
+ modelManager.removeTask(taskInfo);
+ } catch (Exception e) {
+ showErrorDialog(actionDesc,
+ "Task [" + taskInfo.getName() + "] could not be cleared! Error: [" + e.getMessage() + "]");
+ }
}
@Override
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CommitTaskAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CommitTaskAction.java
index 9655b2b3..d353898c 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CommitTaskAction.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CommitTaskAction.java
@@ -2,13 +2,14 @@ package com.gluster.storage.management.gui.actions;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.swt.widgets.Display;
import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.client.TasksClient;
+import com.gluster.storage.management.client.VolumesClient;
import com.gluster.storage.management.core.model.Status;
import com.gluster.storage.management.core.model.TaskInfo;
import com.gluster.storage.management.core.model.TaskStatus;
+import com.gluster.storage.management.core.model.Volume;
public class CommitTaskAction extends AbstractActionDelegate {
private TaskInfo taskInfo;
@@ -16,23 +17,19 @@ public class CommitTaskAction extends AbstractActionDelegate {
@Override
protected void performAction(final IAction action) {
- Display.getDefault().asyncExec(new Runnable() {
-
- @Override
- public void run() {
- final String actionDesc = action.getDescription();
-
- try {
- new TasksClient().commitTask(taskInfo.getName());
- taskInfo.setStatus(new TaskStatus(new Status(Status.STATUS_CODE_SUCCESS, taskInfo.getName()
- + " is commited")));
- modelManager.updateTask(taskInfo);
- } catch (Exception e) {
- showErrorDialog(actionDesc,
- "Task [" + taskInfo.getName() + "] could not be Stopped! Error: [" + e.getMessage() + "]");
- }
- }
- });
+ final String actionDesc = action.getDescription();
+ try {
+ new TasksClient().commitTask(taskInfo.getName());
+ taskInfo.setStatus(new TaskStatus(new Status(Status.STATUS_CODE_SUCCESS, "Committed")));
+ modelManager.removeTask(taskInfo);
+ Volume volume = (new VolumesClient()).getVolume( taskInfo.getReference());
+ modelManager.updateVolumeBricks(getVolume(taskInfo.getReference()), volume.getBricks());
+
+ showInfoDialog(actionDesc, "Commit successful");
+ } catch (Exception e) {
+ showErrorDialog(actionDesc,
+ "Task [" + taskInfo.getName() + "] could not be Committed! Error: [" + e.getMessage() + "]");
+ }
}
@Override
@@ -41,7 +38,7 @@ public class CommitTaskAction extends AbstractActionDelegate {
action.setEnabled(false);
if (selectedEntity instanceof TaskInfo) {
taskInfo = (TaskInfo) selectedEntity;
- action.setEnabled(taskInfo.canCommit()
+ action.setEnabled(taskInfo.getCommitSupported()
&& taskInfo.getStatus().getCode() == Status.STATUS_CODE_COMMIT_PENDING);
}
}
@@ -50,5 +47,14 @@ public class CommitTaskAction extends AbstractActionDelegate {
public void dispose() {
}
+
+ private Volume getVolume(String volumeName) {
+ for (Volume volume : modelManager.getModel().getCluster().getVolumes() ) {
+ if (volume.getName().equals(volumeName)) {
+ return volume;
+ }
+ }
+ return null;
+ }
}
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CreateVolumeAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CreateVolumeAction.java
index 1b412617..2cfa0916 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CreateVolumeAction.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CreateVolumeAction.java
@@ -33,27 +33,21 @@ import com.gluster.storage.management.gui.dialogs.CreateVolumeWizard;
public class CreateVolumeAction extends AbstractActionDelegate {
@Override
protected void performAction(IAction action) {
- Display.getDefault().asyncExec(new Runnable() {
-
+ CreateVolumeWizard wizard = new CreateVolumeWizard();
+
+ WizardDialog dialog = new WizardDialog(getShell(), wizard) {
@Override
- public void run() {
- CreateVolumeWizard wizard = new CreateVolumeWizard();
-
- WizardDialog dialog = new WizardDialog(getShell(), wizard) {
- @Override
- protected Button createButton(Composite parent, int id, String label, boolean defaultButton) {
- Button button = super.createButton(parent, id, label, defaultButton);
- if(id == IDialogConstants.FINISH_ID) {
- button.setText("&Create");
- }
- return button;
- }
- };
- dialog.create();
- dialog.getShell().setSize(500, 550);
- dialog.open();
+ protected Button createButton(Composite parent, int id, String label, boolean defaultButton) {
+ Button button = super.createButton(parent, id, label, defaultButton);
+ if (id == IDialogConstants.FINISH_ID) {
+ button.setText("&Create");
+ }
+ return button;
}
- });
+ };
+ dialog.create();
+ dialog.getShell().setSize(500, 550);
+ dialog.open();
}
@Override
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/DeleteVolumeAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/DeleteVolumeAction.java
index eca8e789..0d61b21f 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/DeleteVolumeAction.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/DeleteVolumeAction.java
@@ -21,11 +21,9 @@ package com.gluster.storage.management.gui.actions;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.swt.widgets.Display;
import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.client.VolumesClient;
-import com.gluster.storage.management.core.model.Status;
import com.gluster.storage.management.core.model.Volume;
import com.gluster.storage.management.core.model.Volume.VOLUME_STATUS;
import com.gluster.storage.management.gui.IImageKeys;
@@ -37,66 +35,57 @@ public class DeleteVolumeAction extends AbstractActionDelegate {
@Override
protected void performAction(final IAction action) {
+ final String actionDesc = action.getDescription();
- Display.getDefault().asyncExec(new Runnable() {
-
- @Override
- public void run() {
-
- final String actionDesc = action.getDescription();
+ String warningMessage;
+ if (volume.getStatus() == VOLUME_STATUS.OFFLINE) {
+ warningMessage = "Are you sure to delete the Volume[" + volume.getName() + "] ?";
+ } else {
+ warningMessage = "Volume [" + volume.getName() + "] is online, \nAre you sure to continue?";
+ }
- String warningMessage;
- if (volume.getStatus() == VOLUME_STATUS.OFFLINE) {
- warningMessage = "Are you sure to delete the Volume[" + volume.getName() + "] ?";
- } else {
- warningMessage = "Volume [" + volume.getName() + "] is online, \nAre you sure to continue?";
- }
+ Integer deleteOption = new MessageDialog(getShell(), "Delete Volume", GUIHelper.getInstance().getImage(
+ IImageKeys.VOLUME), warningMessage, MessageDialog.QUESTION, new String[] { "Cancel",
+ "Delete volume and data", "Delete volume, keep data" }, -1).open();
+ if (deleteOption <= 0) { // By Cancel button(0) or Escape key(-1)
+ return;
+ }
- Integer deleteOption = new MessageDialog(getShell(), "Delete Volume", GUIHelper.getInstance().getImage(
- IImageKeys.VOLUME), warningMessage, MessageDialog.QUESTION, new String[] { "Cancel",
- "Delete volume and data", "Delete volume, keep data" }, -1).open();
- if (deleteOption <= 0) { // By Cancel button(0) or Escape key(-1)
- return;
- }
+ VolumesClient client = new VolumesClient();
- VolumesClient client = new VolumesClient();
+ if (volume.getStatus() == VOLUME_STATUS.ONLINE) { // To stop the volume service, if running
+ try {
+ client.stopVolume(volume.getName());
+ } catch (Exception e) {
+ showErrorDialog(actionDesc,
+ "Volume [" + volume.getName() + "] could not be stopped! Error: [" + e.getMessage() + "]");
+ return;
+ }
+ }
- Status status;
- if (volume.getStatus() == VOLUME_STATUS.ONLINE) { // To stop the volume service, if running
- try {
- client.stopVolume(volume.getName());
- } catch(Exception e) {
- showErrorDialog(actionDesc, "Volume [" + volume.getName() + "] could not be stopped! Error: ["
- + e.getMessage() + "]");
- return;
- }
- }
+ boolean confirmDelete = false;
+ if (deleteOption == 1) {
+ confirmDelete = true;
+ }
- boolean confirmDelete = false;
- if (deleteOption == 1) {
- confirmDelete = true;
- }
+ try {
+ client.deleteVolume(volume, confirmDelete);
+ showInfoDialog(actionDesc, "Volume [" + volume.getName() + "] deleted successfully!");
+ modelManager.deleteVolume(volume);
+ } catch (Exception e) {
+ showErrorDialog(actionDesc, e.getMessage());
- try {
- client.deleteVolume(volume, confirmDelete);
- showInfoDialog(actionDesc, "Volume [" + volume.getName() + "] deleted successfully!");
- modelManager.deleteVolume(volume);
- } catch(Exception e) {
- showErrorDialog(actionDesc, e.getMessage());
-
- // there is a possibility that the error was in post-delete operation, which means
- // volume was deleted, but some other error happened. check if this is the case,
- // and if so, update the model manager
- if(client.volumeExists(volume.getName())) {
- showErrorDialog(actionDesc, "Volume [" + volume.getName() + "] could not be deleted! Error: ["
- + e.getMessage() + "]");
- } else {
- modelManager.deleteVolume(volume);
- showWarningDialog(actionDesc, "Volume deleted, but following error(s) occured: " + e.getMessage());
- }
- }
+ // there is a possibility that the error was in post-delete operation, which means
+ // volume was deleted, but some other error happened. check if this is the case,
+ // and if so, update the model manager
+ if (client.volumeExists(volume.getName())) {
+ showErrorDialog(actionDesc,
+ "Volume [" + volume.getName() + "] could not be deleted! Error: [" + e.getMessage() + "]");
+ } else {
+ modelManager.deleteVolume(volume);
+ showWarningDialog(actionDesc, "Volume deleted, but following error(s) occured: " + e.getMessage());
}
- });
+ }
}
@Override
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/DownloadVolumeLogsAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/DownloadVolumeLogsAction.java
index d7f68646..226e4d00 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/DownloadVolumeLogsAction.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/DownloadVolumeLogsAction.java
@@ -34,20 +34,13 @@ import com.gluster.storage.management.gui.utils.GUIHelper;
public class DownloadVolumeLogsAction extends AbstractActionDelegate {
private GUIHelper guiHelper = GUIHelper.getInstance();
- /* (non-Javadoc)
- * @see org.eclipse.ui.IWorkbenchWindowActionDelegate#dispose()
- */
@Override
public void dispose() {
}
- /* (non-Javadoc)
- * @see com.gluster.storage.management.gui.actions.AbstractActionDelegate#performAction(org.eclipse.jface.action.IAction)
- */
@Override
protected void performAction(IAction action) {
final VolumesClient client = new VolumesClient();
-
final Runnable downloadLogsThread = new Runnable() {
@Override
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/MigrateDiskAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/MigrateDiskAction.java
index 56ea8179..2512a188 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/MigrateDiskAction.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/MigrateDiskAction.java
@@ -61,7 +61,5 @@ public class MigrateDiskAction extends AbstractActionDelegate {
@Override
public void dispose() {
- // TODO Auto-generated method stub
-
}
}
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/PauseTaskAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/PauseTaskAction.java
index b36b7855..e3a4b835 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/PauseTaskAction.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/PauseTaskAction.java
@@ -22,7 +22,6 @@ package com.gluster.storage.management.gui.actions;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.swt.widgets.Display;
import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.client.TasksClient;
@@ -37,33 +36,25 @@ public class PauseTaskAction extends AbstractActionDelegate {
@Override
protected void performAction(final IAction action) {
- Display.getDefault().asyncExec(new Runnable() {
-
- @Override
- public void run() {
- final String actionDesc = action.getDescription();
+ final String actionDesc = action.getDescription();
- try {
- new TasksClient().pauseTask(taskInfo.getName());
- taskInfo.setStatus(new TaskStatus(new Status(Status.STATUS_CODE_PAUSE, taskInfo.getName()
- + " is Paused")));
- modelManager.updateTask(taskInfo);
- } catch (Exception e) {
- showErrorDialog(actionDesc,
- "Task [" + taskInfo.getName() + "] could not be Paused! Error: [" + e.getMessage() + "]");
- }
- }
- });
+ try {
+ new TasksClient().pauseTask(taskInfo.getName());
+ taskInfo.setStatus(new TaskStatus(new Status(Status.STATUS_CODE_PAUSE, "Paused")));
+ modelManager.updateTask(taskInfo);
+ } catch (Exception e) {
+ showErrorDialog(actionDesc,
+ "Task [" + taskInfo.getDescription() + "] could not be Paused! Error: [" + e.getMessage() + "]");
+ }
}
-
-
+
@Override
public void selectionChanged(IAction action, ISelection selection) {
super.selectionChanged(action, selection);
action.setEnabled(false);
if (selectedEntity instanceof TaskInfo) {
taskInfo = (TaskInfo) selectedEntity;
- action.setEnabled(taskInfo.canPause() && taskInfo.getStatus().getCode() == Status.STATUS_CODE_RUNNING);
+ action.setEnabled(taskInfo.getPauseSupported() && taskInfo.getStatus().getCode() == Status.STATUS_CODE_RUNNING);
}
}
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RebalanceVolumeAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RebalanceVolumeAction.java
index 33ca0e5b..a203dfb4 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RebalanceVolumeAction.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RebalanceVolumeAction.java
@@ -20,7 +20,6 @@ package com.gluster.storage.management.gui.actions;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.swt.widgets.Display;
import com.gluster.storage.management.client.VolumesClient;
import com.gluster.storage.management.core.model.Volume;
@@ -30,22 +29,15 @@ public class RebalanceVolumeAction extends AbstractActionDelegate {
@Override
protected void performAction(final IAction action) {
+ final String actionDesc = action.getDescription();
+ try {
+ new VolumesClient().rebalanceStart(volume.getName(), false, false, false);
+ showInfoDialog(actionDesc, "Volume [" + volume.getName() + "] rebalance started successfully!");
+ } catch (Exception e) {
+ showErrorDialog(actionDesc, "Volume rebalance could not be started on [" + volume.getName() + "]! Error: ["
+ + e.getMessage() + "]");
+ }
- Display.getDefault().asyncExec(new Runnable() {
-
- @Override
- public void run() {
- final String actionDesc = action.getDescription();
- try {
- new VolumesClient().rebalanceStart(volume.getName(), false, false, false);
- showInfoDialog(actionDesc, "Volume [" + volume.getName() + "] rebalance started successfully!");
- } catch (Exception e) {
- showErrorDialog(actionDesc,
- "Volume rebalance could not be started on [" + volume.getName() + "]! Error: [" + e.getMessage() + "]");
- }
-
- }
- });
}
@Override
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveDiskAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveDiskAction.java
index b79a4ee4..d4c5a54a 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveDiskAction.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveDiskAction.java
@@ -1,14 +1,12 @@
package com.gluster.storage.management.gui.actions;
import java.util.ArrayList;
-import java.util.Iterator;
import java.util.List;
import java.util.Set;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.swt.custom.BusyIndicator;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IWorkbenchPart;
@@ -16,8 +14,6 @@ import org.eclipse.ui.IWorkbenchPart;
import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.client.VolumesClient;
import com.gluster.storage.management.core.model.Brick;
-import com.gluster.storage.management.core.model.GlusterServer;
-import com.gluster.storage.management.core.model.Status;
import com.gluster.storage.management.core.model.Volume;
import com.gluster.storage.management.core.utils.StringUtil;
import com.gluster.storage.management.gui.IImageKeys;
@@ -33,48 +29,38 @@ public class RemoveDiskAction extends AbstractActionDelegate {
@Override
protected void performAction(final IAction action) {
- Display.getDefault().asyncExec(new Runnable() {
+ final String actionDesc = action.getDescription();
+ List<String> brickList = getBrickList(bricks);
+ Integer deleteOption = new MessageDialog(getShell(), "Remove Bricks(s)", GUIHelper.getInstance().getImage(
+ IImageKeys.VOLUME), "Are you sure you want to remove following bricks from volume [" + volume.getName()
+ + "] ? \n" + StringUtil.collectionToString(brickList, ", "), MessageDialog.QUESTION, new String[] {
+ "Cancel", "Remove bricks, delete data", "Remove bricks, keep data" }, -1).open();
+ if (deleteOption <= 0) { // By Cancel button(0) or Escape key(-1)
+ return;
+ }
- @Override
+ if (deleteOption == 1) {
+ confirmDelete = true;
+ }
+ BusyIndicator.showWhile(Display.getDefault(), new Runnable() {
public void run() {
+ VolumesClient client = new VolumesClient();
+ try {
+ client.removeBricks(volume.getName(), bricks, confirmDelete);
+ // Remove the bricks from the volume object
+ for (Brick brick : bricks) {
+ volume.removeBrick(brick);
+ }
+ // Update model with removed bricks in the volume
+ modelManager.removeBricks(volume, bricks);
- final String actionDesc = action.getDescription();
- List<String> brickList = getBrickList(bricks);
- Integer deleteOption = new MessageDialog(getShell(), "Remove Bricks(s)", GUIHelper.getInstance()
- .getImage(IImageKeys.VOLUME), "Are you sure you want to remove following bricks from volume ["
- + volume.getName() + "] ? \n" + StringUtil.collectionToString(brickList, ", "),
- MessageDialog.QUESTION, new String[] { "Cancel", "Remove bricks, delete data",
- "Remove bricks, keep data" }, -1).open();
- if (deleteOption <= 0) { // By Cancel button(0) or Escape key(-1)
- return;
- }
-
- if (deleteOption == 1) {
- confirmDelete = true;
+ showInfoDialog(actionDesc, "Volume [" + volume.getName() + "] bricks(s) removed successfully!");
+ } catch (Exception e) {
+ showErrorDialog(actionDesc, "Volume [" + volume.getName()
+ + "] bricks(s) could not be removed! Error: [" + e.getMessage() + "]");
}
- BusyIndicator.showWhile(Display.getDefault(), new Runnable() {
- public void run() {
- VolumesClient client = new VolumesClient();
- try {
- client.removeBricks(volume.getName(), bricks, confirmDelete);
- // Remove the bricks from the volume object
- for (Brick brick : bricks) {
- volume.removeBrick(brick);
- }
- // Update model with removed bricks in the volume
- modelManager.removeBricks(volume, bricks);
-
- showInfoDialog(actionDesc, "Volume [" + volume.getName()
- + "] bricks(s) removed successfully!");
- } catch (Exception e) {
- showErrorDialog(actionDesc, "Volume [" + volume.getName()
- + "] bricks(s) could not be removed! Error: [" + e.getMessage() + "]");
- }
- }
- });
}
});
-
}
@Override
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveServerAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveServerAction.java
index 911c57a8..4862b7b1 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveServerAction.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveServerAction.java
@@ -29,16 +29,12 @@ import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.swt.custom.BusyIndicator;
import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.PlatformUI;
import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.client.GlusterServersClient;
import com.gluster.storage.management.core.constants.CoreConstants;
import com.gluster.storage.management.core.model.GlusterServer;
-import com.gluster.storage.management.core.model.Status;
import com.gluster.storage.management.gui.utils.GUIHelper;
-import com.gluster.storage.management.gui.views.NavigationView;
public class RemoveServerAction extends AbstractActionDelegate {
private GlusterDataModelManager modelManager = GlusterDataModelManager.getInstance();
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/ResumeTaskAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/ResumeTaskAction.java
index fc80b04d..d8f1b955 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/ResumeTaskAction.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/ResumeTaskAction.java
@@ -2,7 +2,6 @@ package com.gluster.storage.management.gui.actions;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.swt.widgets.Display;
import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.client.TasksClient;
@@ -16,23 +15,16 @@ public class ResumeTaskAction extends AbstractActionDelegate {
@Override
protected void performAction(final IAction action) {
- Display.getDefault().asyncExec(new Runnable() {
-
- @Override
- public void run() {
- final String actionDesc = action.getDescription();
-
- try {
- new TasksClient().resumeTask(taskInfo.getName());
- taskInfo.setStatus(new TaskStatus(new Status(Status.STATUS_CODE_RUNNING, taskInfo.getName()
- + " is Resumed")));
- modelManager.updateTask(taskInfo);
- } catch (Exception e) {
- showErrorDialog(actionDesc,
- "Task [" + taskInfo.getName() + "] could not be Resumed! Error: [" + e.getMessage() + "]");
- }
- }
- });
+ final String actionDesc = action.getDescription();
+
+ try {
+ new TasksClient().resumeTask(taskInfo.getName());
+ taskInfo.setStatus(new TaskStatus(new Status(Status.STATUS_CODE_RUNNING, "Resumed")));
+ modelManager.updateTask(taskInfo);
+ } catch (Exception e) {
+ showErrorDialog(actionDesc,
+ "Task [" + taskInfo.getDescription() + "] could not be Resumed! Error: [" + e.getMessage() + "]");
+ }
}
@Override
@@ -47,9 +39,7 @@ public class ResumeTaskAction extends AbstractActionDelegate {
@Override
public void dispose() {
-
}
-
}
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StartVolumeAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StartVolumeAction.java
index c259c661..322a87f9 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StartVolumeAction.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StartVolumeAction.java
@@ -53,13 +53,6 @@ public class StartVolumeAction extends AbstractActionDelegate {
}
- /*
- * (non-Javadoc)
- *
- * @see
- * com.gluster.storage.management.gui.actions.AbstractActionDelegate#selectionChanged(org.eclipse.jface.action.IAction
- * , org.eclipse.jface.viewers.ISelection)
- */
@Override
public void selectionChanged(IAction action, ISelection selection) {
super.selectionChanged(action, selection);
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StopTaskAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StopTaskAction.java
index abde4e57..12d14b43 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StopTaskAction.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StopTaskAction.java
@@ -16,22 +16,16 @@ public class StopTaskAction extends AbstractActionDelegate {
@Override
protected void performAction(final IAction action) {
- Display.getDefault().asyncExec(new Runnable() {
-
- @Override
- public void run() {
- final String actionDesc = action.getDescription();
-
- try {
- new TasksClient().resumeTask(taskInfo.getName());
- taskInfo.setStatus( new TaskStatus( new Status(Status.STATUS_CODE_SUCCESS, taskInfo.getName() + " is Stopped")));
- modelManager.updateTask(taskInfo);
- } catch (Exception e) {
- showErrorDialog(actionDesc,
- "Task [" + taskInfo.getName() + "] could not be Stopped! Error: [" + e.getMessage() + "]");
- }
- }
- });
+ final String actionDesc = action.getDescription();
+
+ try {
+ new TasksClient().resumeTask(taskInfo.getName());
+ taskInfo.setStatus(new TaskStatus(new Status(Status.STATUS_CODE_SUCCESS, "Stopped")));
+ modelManager.updateTask(taskInfo);
+ } catch (Exception e) {
+ showErrorDialog(actionDesc,
+ "Task [" + taskInfo.getDescription() + "] could not be Stopped! Error: [" + e.getMessage() + "]");
+ }
}
@Override
@@ -40,7 +34,7 @@ public class StopTaskAction extends AbstractActionDelegate {
action.setEnabled(false);
if (selectedEntity instanceof TaskInfo) {
taskInfo = (TaskInfo) selectedEntity;
- action.setEnabled(taskInfo.canStop()
+ action.setEnabled(taskInfo.getStopSupported()
&& (taskInfo.getStatus().getCode() == Status.STATUS_CODE_PAUSE
|| taskInfo.getStatus().getCode() == Status.STATUS_CODE_RUNNING));
}
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StopVolumeAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StopVolumeAction.java
index d4e3d363..62c690e2 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StopVolumeAction.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StopVolumeAction.java
@@ -21,7 +21,6 @@ package com.gluster.storage.management.gui.actions;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.swt.widgets.Display;
import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.client.VolumesClient;
@@ -36,34 +35,28 @@ public class StopVolumeAction extends AbstractActionDelegate {
@Override
protected void performAction(final IAction action) {
- Display.getDefault().asyncExec(new Runnable() {
-
- @Override
- public void run() {
- final String actionDesc = action.getDescription();
- if (volume.getStatus() == VOLUME_STATUS.OFFLINE) {
- showWarningDialog(actionDesc, "Volume [" + volume.getName() + "] is already offline!");
- return; // Volume already offline. Don't do anything.
- }
+ final String actionDesc = action.getDescription();
+ if (volume.getStatus() == VOLUME_STATUS.OFFLINE) {
+ showWarningDialog(actionDesc, "Volume [" + volume.getName() + "] is already offline!");
+ return; // Volume already offline. Don't do anything.
+ }
- Integer deleteOption = new MessageDialog(getShell(), "Stop Volume", GUIHelper.getInstance().getImage(
- IImageKeys.VOLUME), "Are you sure you want to stop the volume [" + volume.getName() + "] ?",
- MessageDialog.QUESTION, new String[] { "No", "Yes" }, -1).open();
+ Integer deleteOption = new MessageDialog(getShell(), "Stop Volume", GUIHelper.getInstance().getImage(
+ IImageKeys.VOLUME), "Are you sure you want to stop the volume [" + volume.getName() + "] ?",
+ MessageDialog.QUESTION, new String[] { "No", "Yes" }, -1).open();
- if (deleteOption <= 0) {
- return;
- }
+ if (deleteOption <= 0) {
+ return;
+ }
- try {
- new VolumesClient().stopVolume(volume.getName());
- showInfoDialog(actionDesc, "Volume [" + volume.getName() + "] stopped successfully!");
- modelManager.updateVolumeStatus(volume, VOLUME_STATUS.OFFLINE);
- } catch (Exception e) {
- showErrorDialog(actionDesc,
- "Volume [" + volume.getName() + "] could not be stopped! Error: [" + e.getMessage() + "]");
- }
- }
- });
+ try {
+ new VolumesClient().stopVolume(volume.getName());
+ showInfoDialog(actionDesc, "Volume [" + volume.getName() + "] stopped successfully!");
+ modelManager.updateVolumeStatus(volume, VOLUME_STATUS.OFFLINE);
+ } catch (Exception e) {
+ showErrorDialog(actionDesc,
+ "Volume [" + volume.getName() + "] could not be stopped! Error: [" + e.getMessage() + "]");
+ }
}
@Override
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/TasksPage.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/TasksPage.java
index ce68e22f..8d48af76 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/TasksPage.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/TasksPage.java
@@ -32,7 +32,10 @@ import org.eclipse.ui.IWorkbenchSite;
import com.gluster.storage.management.core.model.ClusterListener;
import com.gluster.storage.management.core.model.DefaultClusterListener;
+import com.gluster.storage.management.core.model.Event;
import com.gluster.storage.management.core.model.TaskInfo;
+import com.gluster.storage.management.core.model.Volume;
+import com.gluster.storage.management.core.model.Event.EVENT_TYPE;
import com.gluster.storage.management.gui.TasksTableLabelProvider;
public class TasksPage extends AbstractTableViewerPage<TaskInfo> {
@@ -45,10 +48,9 @@ public class TasksPage extends AbstractTableViewerPage<TaskInfo> {
private static final String[] TASK_TABLE_COLUMN_NAMES = new String[] { "Task", "Status"};
- @SuppressWarnings("unchecked")
- public TasksPage(IWorkbenchSite site, Composite parent, int style, Object taskInfo) {
+ public TasksPage(IWorkbenchSite site, Composite parent, int style, List<TaskInfo> taskInfo) {
super(site, parent, style, false, false, taskInfo);
- this.taskInfoList = (List<TaskInfo>) taskInfo;
+ this.taskInfoList = taskInfo;
}
/* (non-Javadoc)
@@ -67,10 +69,26 @@ public class TasksPage extends AbstractTableViewerPage<TaskInfo> {
refreshViewer();
}
+ @Override
+ public void taskUpdated(TaskInfo taskInfo) {
+ refreshViewer();
+ }
+
private void refreshViewer() {
tableViewer.refresh();
parent.update();
}
+
+ @Override
+ public void volumeChanged(Volume volume, Event event) {
+ super.volumeChanged(volume, event);
+ if (event.getEventType() == EVENT_TYPE.BRICK_REPLACED) {
+ if (!tableViewer.getControl().isDisposed()) {
+ tableViewer.refresh();
+ }
+ }
+ }
+
};
}
diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/MigrateDiskTask.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/MigrateDiskTask.java
index 9bdc9c94..88de96da 100644
--- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/MigrateDiskTask.java
+++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/MigrateDiskTask.java
@@ -122,7 +122,7 @@ public class MigrateDiskTask extends Task {
ProcessResult processResult = sshUtil.executeRemote(onlineServer, command);
TaskStatus taskStatus = new TaskStatus();
if (processResult.isSuccess()) {
- if (processResult.getOutput().matches("*pause")) { //TODO replace correct pattern to identify the pause status
+ if (processResult.getOutput().trim().matches(".*paused successfully$")) { //TODO replace correct pattern to identify the pause status
taskStatus.setCode(Status.STATUS_CODE_PAUSE);
taskStatus.setMessage(processResult.getOutput());
getTaskInfo().setStatus(taskStatus);
@@ -172,8 +172,8 @@ public class MigrateDiskTask extends Task {
taskStatus.setMessage(processResult.getOutput());
getTaskInfo().setStatus(taskStatus);
return;
- }
- }
+ }
+ }
// if we reach here, it means rebalance start failed.
throw new GlusterRuntimeException(processResult.toString());
@@ -212,8 +212,14 @@ public class MigrateDiskTask extends Task {
private TaskStatus checkMigrationStatus(String serverName) {
+ // TODO: If the task is already paused return the same status till FS gives correct status
+ if (getTaskInfo().getStatus().getCode() == Status.STATUS_CODE_PAUSE ) {
+ return getTaskInfo().getStatus();
+ }
+
String command = "gluster volume replace-brick " + getTaskInfo().getReference() + " " + getFromBrick() + " "
+ getToBrick() + " status";
+
ProcessResult processResult = sshUtil.executeRemote(serverName, command);
TaskStatus taskStatus = new TaskStatus();
if (processResult.isSuccess()) {
@@ -221,8 +227,13 @@ public class MigrateDiskTask extends Task {
taskStatus.setCode(Status.STATUS_CODE_COMMIT_PENDING);
if (autoCommit) {
commitMigration(serverName);
+ return getTaskInfo().getStatus(); // return the committed status
+ } else {
+ taskStatus.setMessage(processResult.getOutput().trim()
+ .replaceAll("Migration complete", "Commit pending"));
}
- } else if ( processResult.getOutput().trim().matches("^Number of files migrated.*Current file=.*")) {
+ return taskStatus;
+ } else if (processResult.getOutput().trim().matches("^Number of files migrated.*Current file=.*")) {
taskStatus.setCode(Status.STATUS_CODE_RUNNING);
} else {
taskStatus.setCode(Status.STATUS_CODE_FAILURE);
@@ -230,7 +241,6 @@ public class MigrateDiskTask extends Task {
} else {
taskStatus.setCode(Status.STATUS_CODE_FAILURE);
}
-
taskStatus.setMessage(processResult.getOutput()); // common
taskInfo.setStatus(taskStatus); // Update the task status
return taskStatus;
diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/Task.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/Task.java
index 49cd0b8b..4fa6e08c 100644
--- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/Task.java
+++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/Task.java
@@ -38,9 +38,9 @@ public abstract class Task {
taskInfo.setType(type);
taskInfo.setReference(reference);
taskInfo.setDescription(desc);
- taskInfo.setCanPause(canPause);
- taskInfo.setCanStop(canStop);
- taskInfo.setCanCommit(canCommit);
+ taskInfo.setPauseSupported(canPause);
+ taskInfo.setStopSupported(canStop);
+ taskInfo.setCommitSupported(canCommit);
init(clusterService, clusterName, taskInfo);