summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSelvasundaram <selvam@gluster.com>2011-07-01 19:01:12 +0530
committerSelvasundaram <selvam@gluster.com>2011-07-04 19:04:45 +0530
commit45ca89a241e826d80802d9e3e93d28f8cd026316 (patch)
tree18c55746975a6369f404a07d1c1045643bfa0b4b /src
parent2c4ea3418784160bdf4f186b2488e974465161e7 (diff)
Task updates in UI
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.java16
-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.core/src/com/gluster/storage/management/core/response/TaskInfoListResponse.java3
-rw-r--r--src/com.gluster.storage.management.gui/plugin.xml10
-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/AddBrickAction.java (renamed from src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddDiskAction.java)44
-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.java37
-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/MigrateBrickAction.java (renamed from src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/MigrateDiskAction.java)8
-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/RemoveBrickAction.java (renamed from src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveDiskAction.java)68
-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/dialogs/AddBrickPage.java (renamed from src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/AddDiskPage.java)4
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/AddBrickWizard.java (renamed from src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/AddDiskWizard.java)8
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateBrickPage1.java (renamed from src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateDiskPage1.java)19
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateBrickWizard.java (renamed from src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateDiskWizard.java)8
-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/resources/VolumesResource.java4
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/MigrateBrickTask.java (renamed from src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/MigrateDiskTask.java)132
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/Task.java6
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/GlusterUtil.java33
32 files changed, 352 insertions, 473 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..33343726 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,11 @@ public class Cluster extends Entity {
public void addVolume(Volume volume) {
this.volumes.add(volume);
}
+
+ public void updateVolume(String volumeName, List<Brick> bricks) {
+ Volume volume = getVolume(volumeName);
+ volume.setBricks(bricks);
+ }
public Cluster(String name, Entity parent) {
super(name, parent);
@@ -156,4 +161,13 @@ public class Cluster extends Entity {
}
return null;
}
+
+ public Volume getVolume(String volumeName) {
+ for (Volume volume : getVolumes() ) {
+ if (volume.getName().equals(volumeName)) {
+ return volume;
+ }
+ }
+ return null;
+ }
} \ No newline at end of file
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.core/src/com/gluster/storage/management/core/response/TaskInfoListResponse.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/TaskInfoListResponse.java
index 0ab27c35..ba1c4f9f 100644
--- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/TaskInfoListResponse.java
+++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/TaskInfoListResponse.java
@@ -20,6 +20,7 @@
*/
package com.gluster.storage.management.core.response;
+import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlElement;
@@ -29,7 +30,7 @@ import com.gluster.storage.management.core.model.TaskInfo;
@XmlRootElement(name = "tasks")
public class TaskInfoListResponse {
- private List<TaskInfo> taskInfoList;
+ private List<TaskInfo> taskInfoList = new ArrayList<TaskInfo>();
public TaskInfoListResponse() {
diff --git a/src/com.gluster.storage.management.gui/plugin.xml b/src/com.gluster.storage.management.gui/plugin.xml
index 5b18421f..b0dfa9a9 100644
--- a/src/com.gluster.storage.management.gui/plugin.xml
+++ b/src/com.gluster.storage.management.gui/plugin.xml
@@ -476,7 +476,7 @@
visible="false">
<action
allowLabelUpdate="false"
- class="com.gluster.storage.management.gui.actions.MigrateDiskAction"
+ class="com.gluster.storage.management.gui.actions.MigrateBrickAction"
definitionId="com.gluster.storage.management.gui.commands.MigrateDisk"
icon="icons/disk-migrate.png"
id="com.gluster.storage.management.gui.actions.MigrateDiskAction"
@@ -593,7 +593,7 @@
</action>
<action
allowLabelUpdate="false"
- class="com.gluster.storage.management.gui.actions.RemoveDiskAction"
+ class="com.gluster.storage.management.gui.actions.RemoveBrickAction"
definitionId="com.gluster.storage.management.gui.commands.RemoveDisk"
icon="icons/disk.png"
id="com.gluster.storage.management.gui.actions.RemoveDiskAction"
@@ -609,7 +609,7 @@
</action>
<action
allowLabelUpdate="false"
- class="com.gluster.storage.management.gui.actions.AddDiskAction"
+ class="com.gluster.storage.management.gui.actions.AddBrickAction"
definitionId="com.gluster.storage.management.gui.commands.AddDisk"
icon="icons/disk.png"
id="com.gluster.storage.management.gui.actions.AddDiskAction"
@@ -659,7 +659,7 @@
definitionId="com.gluster.storage.management.gui.commands.Commit"
icon="icons/stop.png"
id="com.gluster.storage.management.gui.actions.Commit"
- label="&amp;Commit TaskTask"
+ label="&amp;Commit Task"
menubarPath="com.gluster.storage.management.gui.menu.cluster/cluster"
mode="FORCE_TEXT"
pulldown="false"
@@ -1206,7 +1206,7 @@
objectClass="com.gluster.storage.management.core.model.Volume">
<action
allowLabelUpdate="false"
- class="com.gluster.storage.management.gui.actions.MigrateDiskAction"
+ class="com.gluster.storage.management.gui.actions.MigrateBrickAction"
definitionId="com.gluster.storage.management.gui.commands.MigrateDisk"
enablesFor="1"
icon="icons/disk-migrate.png"
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/AddBrickAction.java
index cc57c541..e86164ec 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/AddBrickAction.java
@@ -1,5 +1,5 @@
/**
- * AddDiskAction.java
+ * AddBrickAction.java
*
* Copyright (c) 2011 Gluster, Inc. <http://www.gluster.com>
* This file is part of Gluster Management Console.
@@ -24,53 +24,33 @@ 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;
-import com.gluster.storage.management.gui.dialogs.AddDiskWizard;
+import com.gluster.storage.management.gui.dialogs.AddBrickWizard;
-public class AddDiskAction extends AbstractActionDelegate {
+public class AddBrickAction 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());
+ AddBrickWizard wizard = new AddBrickWizard(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..86e3032e 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,20 @@ 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(modelManager.getModel().getCluster().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 +39,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 +48,4 @@ public class CommitTaskAction extends AbstractActionDelegate {
public void dispose() {
}
-
}
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/MigrateBrickAction.java
index 56ea8179..41770d98 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/MigrateBrickAction.java
@@ -26,16 +26,16 @@ import org.eclipse.jface.wizard.WizardDialog;
import com.gluster.storage.management.core.model.Brick;
import com.gluster.storage.management.core.model.Volume;
-import com.gluster.storage.management.gui.dialogs.MigrateDiskWizard;
+import com.gluster.storage.management.gui.dialogs.MigrateBrickWizard;
import com.gluster.storage.management.gui.utils.GUIHelper;
-public class MigrateDiskAction extends AbstractActionDelegate {
+public class MigrateBrickAction extends AbstractActionDelegate {
private Volume volume;
private Brick brick;
@Override
protected void performAction(IAction action) {
- MigrateDiskWizard wizard = new MigrateDiskWizard(volume, brick);
+ MigrateBrickWizard wizard = new MigrateBrickWizard(volume, brick);
WizardDialog dialog = new WizardDialog(window.getShell(), wizard);
dialog.create();
@@ -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/RemoveBrickAction.java
index b79a4ee4..0f411a59 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/RemoveBrickAction.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,15 +14,13 @@ 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;
import com.gluster.storage.management.gui.utils.GUIHelper;
import com.gluster.storage.management.gui.views.VolumeBricksView;
-public class RemoveDiskAction extends AbstractActionDelegate {
+public class RemoveBrickAction extends AbstractActionDelegate {
private GlusterDataModelManager modelManager = GlusterDataModelManager.getInstance();
private GUIHelper guiHelper = GUIHelper.getInstance();
private Set<Brick> bricks;
@@ -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/dialogs/AddDiskPage.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/AddBrickPage.java
index 48a46c84..961dca88 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/AddDiskPage.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/AddBrickPage.java
@@ -39,7 +39,7 @@ import com.richclientgui.toolbox.duallists.IRemovableContentProvider;
* @author root
*
*/
-public class AddDiskPage extends WizardPage {
+public class AddBrickPage extends WizardPage {
private List<Disk> availableDisks = new ArrayList<Disk>();
private List<Disk> selectedDisks = new ArrayList<Disk>();
private Volume volume = null;
@@ -51,7 +51,7 @@ public class AddDiskPage extends WizardPage {
/**
* @param pageName
*/
- protected AddDiskPage(Volume volume) {
+ protected AddBrickPage(Volume volume) {
super(PAGE_NAME);
this.volume = volume;
setTitle("Add Brick");
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/AddDiskWizard.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/AddBrickWizard.java
index bb55ece1..bcb3ce3d 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/AddDiskWizard.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/AddBrickWizard.java
@@ -38,18 +38,18 @@ import com.gluster.storage.management.core.utils.StringUtil;
/**
*
*/
-public class AddDiskWizard extends Wizard {
- private AddDiskPage page;
+public class AddBrickWizard extends Wizard {
+ private AddBrickPage page;
private Volume volume;
- public AddDiskWizard(Volume volume) {
+ public AddBrickWizard(Volume volume) {
setWindowTitle("Gluster Management Console - Add Brick");
setHelpAvailable(false); // TODO: Introduce wizard help
this.volume = volume;
}
public void addPages() {
- page = new AddDiskPage(volume);
+ page = new AddBrickPage(volume);
addPage(page);
}
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateDiskPage1.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateBrickPage1.java
index 4533ca23..f7ce744f 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateDiskPage1.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateBrickPage1.java
@@ -1,21 +1,24 @@
-/*******************************************************************************
+/**
+ * MigrateBrickPage1.java
+ *
* Copyright (c) 2011 Gluster, Inc. <http://www.gluster.com>
* This file is part of Gluster Management Console.
*
- * Gluster Management Console is free software; you can redistribute it and/or
+ * Gluster Management Console is free software; you can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
- *
- * Gluster Management Console is distributed in the hope that it will be useful,
+ *
+ * Gluster Management Console is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License
* for more details.
- *
+ *
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see
* <http://www.gnu.org/licenses/>.
- *******************************************************************************/
+ */
+
package com.gluster.storage.management.gui.dialogs;
import java.util.List;
@@ -48,7 +51,7 @@ import com.gluster.storage.management.core.utils.NumberUtil;
import com.gluster.storage.management.gui.TableLabelProviderAdapter;
import com.gluster.storage.management.gui.utils.GUIHelper;
-public class MigrateDiskPage1 extends WizardPage {
+public class MigrateBrickPage1 extends WizardPage {
private static final String PAGE_NAME = "migrate.disk.page.1";
private enum DISK_TABLE_COLUMN_INDICES {
@@ -118,7 +121,7 @@ public class MigrateDiskPage1 extends WizardPage {
/**
* Create the wizard.
*/
- public MigrateDiskPage1(Volume volume, Brick brick) {
+ public MigrateBrickPage1(Volume volume, Brick brick) {
super(PAGE_NAME);
this.volume = volume;
this.fromBrick = brick;
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateDiskWizard.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateBrickWizard.java
index 2d65a869..4693726b 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateDiskWizard.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateBrickWizard.java
@@ -30,12 +30,12 @@ import com.gluster.storage.management.core.model.Brick;
import com.gluster.storage.management.core.model.TaskInfo;
import com.gluster.storage.management.core.model.Volume;
-public class MigrateDiskWizard extends Wizard {
+public class MigrateBrickWizard extends Wizard {
private Volume volume;
private Brick brick;
- private MigrateDiskPage1 page;
+ private MigrateBrickPage1 page;
- public MigrateDiskWizard(Volume volume, Brick brick) {
+ public MigrateBrickWizard(Volume volume, Brick brick) {
setWindowTitle("Gluster Management Console - Migrate Brick [" + volume.getName() + "]");
this.volume = volume;
this.brick = brick;
@@ -44,7 +44,7 @@ public class MigrateDiskWizard extends Wizard {
@Override
public void addPages() {
- page = new MigrateDiskPage1(volume, brick);
+ page = new MigrateBrickPage1(volume, brick);
addPage(page);
}
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/resources/VolumesResource.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/VolumesResource.java
index d568d519..6a22f806 100644
--- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/VolumesResource.java
+++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/VolumesResource.java
@@ -102,7 +102,7 @@ import com.gluster.storage.management.core.utils.ProcessUtil;
import com.gluster.storage.management.server.constants.VolumeOptionsDefaults;
import com.gluster.storage.management.server.data.ClusterInfo;
import com.gluster.storage.management.server.services.ClusterService;
-import com.gluster.storage.management.server.tasks.MigrateDiskTask;
+import com.gluster.storage.management.server.tasks.MigrateBrickTask;
import com.gluster.storage.management.server.tasks.RebalanceVolumeTask;
import com.gluster.storage.management.server.utils.GlusterUtil;
import com.gluster.storage.management.server.utils.ServerUtil;
@@ -956,7 +956,7 @@ public class VolumesResource extends AbstractResource {
private String migrateBrickStart(String clusterName, String volumeName, String fromBrick, String toBrick,
Boolean autoCommit) {
- MigrateDiskTask migrateDiskTask = new MigrateDiskTask(clusterService, clusterName, volumeName, fromBrick,
+ MigrateBrickTask migrateDiskTask = new MigrateBrickTask(clusterService, clusterName, volumeName, fromBrick,
toBrick);
migrateDiskTask.setAutoCommit(autoCommit);
migrateDiskTask.start();
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/MigrateBrickTask.java
index 9bdc9c94..bd612ace 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/MigrateBrickTask.java
@@ -20,6 +20,10 @@
*/
package com.gluster.storage.management.server.tasks;
+import java.util.concurrent.ExecutionException;
+
+import org.apache.derby.iapi.sql.execute.ExecPreparedStatement;
+
import com.gluster.storage.management.core.exceptions.ConnectionException;
import com.gluster.storage.management.core.exceptions.GlusterRuntimeException;
import com.gluster.storage.management.core.model.Status;
@@ -28,14 +32,16 @@ import com.gluster.storage.management.core.model.TaskInfo.TASK_TYPE;
import com.gluster.storage.management.core.model.TaskStatus;
import com.gluster.storage.management.core.utils.ProcessResult;
import com.gluster.storage.management.server.services.ClusterService;
+import com.gluster.storage.management.server.utils.GlusterUtil;
import com.gluster.storage.management.server.utils.SshUtil;
import com.sun.jersey.core.util.Base64;
-public class MigrateDiskTask extends Task {
+public class MigrateBrickTask extends Task {
private String fromBrick;
private String toBrick;
private Boolean autoCommit;
+ private GlusterUtil glusterUtil = new GlusterUtil();
private SshUtil sshUtil = new SshUtil();
@@ -63,7 +69,8 @@ public class MigrateDiskTask extends Task {
this.autoCommit = autoCommit;
}
- public MigrateDiskTask(ClusterService clusterService, String clusterName, String volumeName, String fromBrick, String toBrick) {
+ public MigrateBrickTask(ClusterService clusterService, String clusterName, String volumeName, String fromBrick,
+ String toBrick) {
super(clusterService, clusterName, TASK_TYPE.BRICK_MIGRATE, volumeName, "Brick Migration on volume ["
+ volumeName + "] from [" + fromBrick + "] to [" + toBrick + "]", true, true, true);
setFromBrick(fromBrick);
@@ -71,80 +78,68 @@ public class MigrateDiskTask extends Task {
taskInfo.setName(getId());
}
- public MigrateDiskTask(ClusterService clusterService, String clusterName, TaskInfo info) {
+ public MigrateBrickTask(ClusterService clusterService, String clusterName, TaskInfo info) {
super(clusterService, clusterName, info);
}
@Override
public String getId() {
- return new String( Base64.encode( taskInfo.getType() + "-" + taskInfo.getReference() + "-" + fromBrick + "-" + toBrick ));
+ return new String(Base64.encode(clusterName + "-" + taskInfo.getType() + "-" + taskInfo.getReference() + "-" + fromBrick + "-"
+ + toBrick));
}
@Override
public void start() {
try {
startMigration(getOnlineServer().getName());
- } catch(ConnectionException e) {
+ } catch (ConnectionException e) {
// online server might have gone offline. try with a new one.
startMigration(getNewOnlineServer().getName());
}
}
private void startMigration(String onlineServerName) {
- String command = "gluster volume replace-brick " + getTaskInfo().getReference() + " " + getFromBrick() + " "
- + getToBrick() + " start";
- ProcessResult processResult = sshUtil.executeRemote(onlineServerName, command);
- if (processResult.isSuccess()) {
- if (processResult.getOutput().trim().matches(".*started successfully$")) {
- getTaskInfo().setStatus(new TaskStatus(new Status(Status.STATUS_CODE_RUNNING, processResult.getOutput().trim())));
- return;
- }
+ ProcessResult processResult = glusterUtil.executeBrickMigration(onlineServerName, getTaskInfo().getReference(),
+ getFromBrick(), getToBrick(), "start");
+ if (processResult.getOutput().trim().matches(".*started successfully$")) {
+ getTaskInfo().setStatus(
+ new TaskStatus(new Status(Status.STATUS_CODE_RUNNING, processResult.getOutput().trim())));
+ return;
}
-
- // if we come here, it means task couldn't be started successfully.
- throw new GlusterRuntimeException(processResult.toString());
}
@Override
public void pause() {
try {
pauseMigration(getOnlineServer().getName());
- } catch(ConnectionException e) {
+ } catch (ConnectionException e) {
// online server might have gone offline. try with a new one.
pauseMigration(getNewOnlineServer().getName());
}
}
private void pauseMigration(String onlineServer) {
- String command = "gluster volume replace-brick " + getTaskInfo().getReference() + " " + getFromBrick() + " " + getToBrick()
- + " pause";
-
- ProcessResult processResult = sshUtil.executeRemote(onlineServer, command);
+ ProcessResult processResult = glusterUtil.executeBrickMigration(onlineServer, taskInfo.getReference(),
+ getFromBrick(), getToBrick(), "pause");
TaskStatus taskStatus = new TaskStatus();
- if (processResult.isSuccess()) {
- if (processResult.getOutput().matches("*pause")) { //TODO replace correct pattern to identify the pause status
- taskStatus.setCode(Status.STATUS_CODE_PAUSE);
- taskStatus.setMessage(processResult.getOutput());
- getTaskInfo().setStatus(taskStatus);
- return;
- }
- }
-
- // if we reach here, it means rebalance start failed.
- throw new GlusterRuntimeException(processResult.toString());
+ if (processResult.getOutput().trim().matches(".*paused successfully$")) {
+ taskStatus.setCode(Status.STATUS_CODE_PAUSE);
+ taskStatus.setMessage(processResult.getOutput());
+ getTaskInfo().setStatus(taskStatus);
+ return;
+ }
}
-
-
+
@Override
public void resume() {
start();
}
-
+
@Override
public void commit() {
try {
commitMigration(getOnlineServer().getName());
- } catch(ConnectionException e) {
+ } catch (ConnectionException e) {
// online server might have gone offline. try with a new one.
commitMigration(getNewOnlineServer().getName());
}
@@ -154,84 +149,75 @@ public class MigrateDiskTask extends Task {
public void stop() {
try {
stopMigration(getOnlineServer().getName());
- } catch(ConnectionException e) {
+ } catch (ConnectionException e) {
// online server might have gone offline. try with a new one.
stopMigration(getNewOnlineServer().getName());
}
}
private void stopMigration(String serverName) {
- String command = "gluster volume replace-brick " + getTaskInfo().getReference() + " " + getFromBrick() + " " + getToBrick()
- + " abort";
-
- ProcessResult processResult = sshUtil.executeRemote(serverName, command);
+ ProcessResult processResult = glusterUtil.executeBrickMigration(serverName, taskInfo.getReference(), getFromBrick(),
+ getToBrick(), "abort");
TaskStatus taskStatus = new TaskStatus();
- if (processResult.isSuccess()) {
- if (processResult.getOutput().trim().matches(".*aborted successfully$")) {
- taskStatus.setCode(Status.STATUS_CODE_SUCCESS);
- taskStatus.setMessage(processResult.getOutput());
- getTaskInfo().setStatus(taskStatus);
- return;
- }
- }
-
- // if we reach here, it means rebalance start failed.
- throw new GlusterRuntimeException(processResult.toString());
+ if (processResult.getOutput().trim().matches(".*aborted successfully$")) {
+ taskStatus.setCode(Status.STATUS_CODE_SUCCESS);
+ taskStatus.setMessage(processResult.getOutput());
+ getTaskInfo().setStatus(taskStatus);
+ }
}
-
@Override
public TaskStatus checkStatus() {
try {
return checkMigrationStatus(getOnlineServer().getName());
- } catch(ConnectionException e) {
+ } catch (ConnectionException e) {
// online server might have gone offline. try with a new one.
return checkMigrationStatus(getNewOnlineServer().getName());
}
}
-
-
+
public void commitMigration(String serverName) {
- String command = "gluster volume replace-brick " + getTaskInfo().getReference() + " " + getFromBrick() + " "
- + getToBrick() + " commit";
-
- ProcessResult processResult = sshUtil.executeRemote(serverName, command);
+ ProcessResult processResult = glusterUtil.executeBrickMigration(serverName, getTaskInfo().getReference(),
+ getFromBrick(), getToBrick(), "commit");
TaskStatus taskStatus = new TaskStatus();
if (processResult.isSuccess()) {
if (processResult.getOutput().trim().matches(".*commit successful$")) {
taskStatus.setCode(Status.STATUS_CODE_SUCCESS);
taskStatus.setMessage(processResult.getOutput()); // Common
getTaskInfo().setStatus(taskStatus);
- return;
}
}
-
- // if we reach here, it means rebalance start failed.
- throw new GlusterRuntimeException(processResult.toString());
}
-
private TaskStatus checkMigrationStatus(String serverName) {
- String command = "gluster volume replace-brick " + getTaskInfo().getReference() + " " + getFromBrick() + " "
- + getToBrick() + " status";
- ProcessResult processResult = sshUtil.executeRemote(serverName, command);
+ if (getTaskInfo().getStatus().getCode() == Status.STATUS_CODE_PAUSE) {
+ return getTaskInfo().getStatus();
+ }
+
TaskStatus taskStatus = new TaskStatus();
- if (processResult.isSuccess()) {
+ try {
+ ProcessResult processResult = glusterUtil.executeBrickMigration(serverName, getTaskInfo().getReference(),
+ getFromBrick(), getToBrick(), "status");
if (processResult.getOutput().trim().matches("^Number of files migrated.*Migration complete$")) {
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=.*")) {
+ } 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);
}
- } else {
+ taskStatus.setMessage(processResult.getOutput());
+ } catch (Exception e) {
taskStatus.setCode(Status.STATUS_CODE_FAILURE);
+ taskStatus.setMessage(e.getMessage());
}
-
- 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);
diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/GlusterUtil.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/GlusterUtil.java
index 788e3eab..d670027b 100644
--- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/GlusterUtil.java
+++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/GlusterUtil.java
@@ -36,7 +36,6 @@ import com.gluster.storage.management.core.model.Brick.BRICK_STATUS;
import com.gluster.storage.management.core.model.GlusterServer;
import com.gluster.storage.management.core.model.GlusterServer.SERVER_STATUS;
import com.gluster.storage.management.core.model.Status;
-import com.gluster.storage.management.core.model.TaskInfo;
import com.gluster.storage.management.core.model.Volume;
import com.gluster.storage.management.core.model.Volume.TRANSPORT_TYPE;
import com.gluster.storage.management.core.model.Volume.VOLUME_STATUS;
@@ -45,8 +44,6 @@ import com.gluster.storage.management.core.utils.GlusterCoreUtil;
import com.gluster.storage.management.core.utils.ProcessResult;
import com.gluster.storage.management.core.utils.StringUtil;
import com.gluster.storage.management.server.resources.TasksResource;
-import com.gluster.storage.management.server.tasks.MigrateDiskTask;
-import com.gluster.storage.management.server.tasks.RebalanceVolumeTask;
import com.sun.jersey.api.core.InjectParam;
@Component
@@ -388,26 +385,7 @@ public class GlusterUtil {
}
private void addBrickToVolume(Volume volume, String serverName, String brickDir) {
- // TODO: Brick status should be same as the server status (online/offline)
- System.out.println(brickDir);
volume.addBrick(new Brick(serverName, BRICK_STATUS.ONLINE, brickDir.split("/")[2].trim(), brickDir));
-
- // volume.getBricks().get(0).getName();
- //
- // try {
- // volume.addDisk(serverName + ":" + brickDir.split("/")[2].trim());
- // } catch (ArrayIndexOutOfBoundsException e) {
- // // brick directory of a different form, most probably created manually
- // // connect to the server and get disk for the brick directory
- // Status status = new ServerUtil().getDiskForDir(serverName, brickDir);
- // if (status.isSuccess()) {
- // volume.addDisk(serverName + ":" + status.getMessage());
- // } else {
- // // Couldn't fetch disk for the brick directory. Log error and add "unknown" as disk name.
- // System.out.println("Couldn't fetch disk name for brick [" + serverName + ":" + brickDir + "]");
- // volume.addDisk(serverName + ":unknown");
- // }
- // }
}
private boolean readBrickGroup(String line) {
@@ -550,6 +528,17 @@ public class GlusterUtil {
throw new GlusterRuntimeException("Couldn't remove server [" + serverName + "]! Error: " + result);
}
}
+
+
+ public ProcessResult executeBrickMigration(String onlineServerName, String volumeName, String fromBrick,
+ String toBrick, String operation) {
+ String command = "gluster volume replace-brick " + volumeName + " " + fromBrick + " " + toBrick + " " + operation;
+ ProcessResult processResult = sshUtil.executeRemote(onlineServerName, command);
+ if (!processResult.isSuccess()) {
+ throw new GlusterRuntimeException(processResult.toString());
+ }
+ return processResult;
+ }
public static void main(String args[]) {
// List<String> names = new GlusterUtil().getGlusterServerNames();