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/AbstractClient.java1
-rw-r--r--src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java3
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/ClearTaskAction.java4
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CommitTaskAction.java8
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/PauseTaskAction.java1
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StopTaskAction.java10
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractTableViewerPage.java2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/TasksPage.java12
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/TasksResource.java2
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/BrickMigrationStatusTask.java (renamed from src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/DiskMigrationStatusTask.java)3
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/MigrateBrickTask.java44
-rw-r--r--src/com.gluster.storage.management.server/src/spring/gluster-server-base.xml2
12 files changed, 45 insertions, 47 deletions
diff --git a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/AbstractClient.java b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/AbstractClient.java
index 6f4ba050..3c6a2d40 100644
--- a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/AbstractClient.java
+++ b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/AbstractClient.java
@@ -22,7 +22,6 @@ import javax.ws.rs.core.MultivaluedMap;
import com.gluster.storage.management.client.utils.ClientUtil;
import com.gluster.storage.management.core.exceptions.GlusterRuntimeException;
-import com.gluster.storage.management.core.model.TaskInfo;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.UniformInterfaceException;
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 221651a3..dbb1f46f 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
@@ -600,8 +600,7 @@ public class GlusterDataModelManager {
}
public void removeTask(TaskInfo taskInfo) {
- Cluster cluster = model.getCluster();
- cluster.removeTaskInfo(taskInfo);
+ model.getCluster().removeTaskInfo(taskInfo);
for (ClusterListener listener : listeners) {
listener.taskAdded(taskInfo);
}
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 6fff4f44..4a580d05 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
@@ -17,7 +17,7 @@ public class ClearTaskAction extends AbstractActionDelegate {
final String actionDesc = action.getDescription();
try {
- new TasksClient().resumeTask(taskInfo.getName());
+ new TasksClient().deleteTask(taskInfo.getName()); // taskId
modelManager.removeTask(taskInfo);
} catch (Exception e) {
showErrorDialog(actionDesc,
@@ -33,6 +33,8 @@ public class ClearTaskAction extends AbstractActionDelegate {
taskInfo = (TaskInfo) selectedEntity;
action.setEnabled(taskInfo.getStatus().getCode() == Status.STATUS_CODE_SUCCESS
|| taskInfo.getStatus().getCode() == Status.STATUS_CODE_FAILURE);
+ } else {
+ action.setEnabled(false);
}
}
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 86e3032e..86a71882 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
@@ -5,11 +5,9 @@ import org.eclipse.jface.viewers.ISelection;
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;
@@ -21,12 +19,8 @@ public class CommitTaskAction extends AbstractActionDelegate {
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");
+ modelManager.removeTask(taskInfo);
} catch (Exception e) {
showErrorDialog(actionDesc,
"Task [" + taskInfo.getName() + "] could not be Committed! Error: [" + e.getMessage() + "]");
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 e3a4b835..872df738 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
@@ -28,6 +28,7 @@ import com.gluster.storage.management.client.TasksClient;
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.gui.toolbar.GlusterToolbarManager;
public class PauseTaskAction extends AbstractActionDelegate {
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 12d14b43..306edbf3 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
@@ -2,13 +2,11 @@ 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.core.model.Status;
import com.gluster.storage.management.core.model.TaskInfo;
-import com.gluster.storage.management.core.model.TaskStatus;
public class StopTaskAction extends AbstractActionDelegate {
private TaskInfo taskInfo;
@@ -19,9 +17,10 @@ public class StopTaskAction extends AbstractActionDelegate {
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);
+ new TasksClient().stopTask(taskInfo.getName());
+ // On successful stop clear from the task list
+ modelManager.removeTask(taskInfo);
+ action.setEnabled(false); // TODO disable other task buttons
} catch (Exception e) {
showErrorDialog(actionDesc,
"Task [" + taskInfo.getDescription() + "] could not be Stopped! Error: [" + e.getMessage() + "]");
@@ -42,7 +41,6 @@ public class StopTaskAction extends AbstractActionDelegate {
@Override
public void dispose() {
-
}
}
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractTableViewerPage.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractTableViewerPage.java
index 80aceb8b..5aaf7094 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractTableViewerPage.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractTableViewerPage.java
@@ -61,12 +61,14 @@ public abstract class AbstractTableViewerPage<T> extends Composite implements IS
protected TableViewer tableViewer;
protected GUIHelper guiHelper = GUIHelper.getInstance();
protected Composite parent;
+ protected IWorkbenchSite site;
private Hyperlink linkAll, linkNone;
public AbstractTableViewerPage(IWorkbenchSite site, final Composite parent, int style, boolean useChechboxes, boolean multiSelection, Object model) {
super(parent, style);
this.parent = parent;
+ this.site = site;
this.useCheckboxes = useChechboxes;
this.multiSelection = multiSelection;
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 b3821c6b..8fbeb891 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
@@ -28,8 +28,6 @@ import org.eclipse.jface.viewers.IContentProvider;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.FocusAdapter;
-import org.eclipse.swt.events.FocusEvent;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Table;
import org.eclipse.ui.IWorkbenchPart;
@@ -39,13 +37,11 @@ import com.gluster.storage.management.core.model.ClusterListener;
import com.gluster.storage.management.core.model.DefaultClusterListener;
import com.gluster.storage.management.core.model.Entity;
import com.gluster.storage.management.core.model.Event;
+import com.gluster.storage.management.core.model.Event.EVENT_TYPE;
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;
-import com.gluster.storage.management.gui.actions.IActionConstants;
import com.gluster.storage.management.gui.toolbar.GlusterToolbarManager;
-import com.gluster.storage.management.gui.utils.GUIHelper;
public class TasksPage extends AbstractTableViewerPage<TaskInfo> {
private List<TaskInfo> taskInfoList;
@@ -77,11 +73,17 @@ public class TasksPage extends AbstractTableViewerPage<TaskInfo> {
@Override
public void taskRemoved(TaskInfo taskInfo) {
refreshViewer();
+ // hide the task related actionset as no task is selected
+ // site.getPage().hideActionSet(IActionConstants.ACTION_SET_TASK);
+ tableViewer.setSelection(new StructuredSelection(taskInfo));
}
@Override
public void taskUpdated(TaskInfo taskInfo) {
refreshViewer();
+ // fire selection event so that toolbar gets updated
+ // (the action class listens to selection and enables/disables automatically)
+ tableViewer.setSelection(new StructuredSelection(taskInfo));
}
private void refreshViewer() {
diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/TasksResource.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/TasksResource.java
index 1acba6b7..38b68040 100644
--- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/TasksResource.java
+++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/TasksResource.java
@@ -153,7 +153,7 @@ public class TasksResource extends AbstractResource {
@DELETE
@Path("/{" + PATH_PARAM_TASK_ID + "}")
@Produces(MediaType.APPLICATION_XML)
- public Response deleteTask(@PathParam(PATH_PARAM_TASK_ID) String taskId,
+ public Response clearTask(@PathParam(PATH_PARAM_TASK_ID) String taskId,
@QueryParam(FORM_PARAM_OPERATION) String taskOperation) {
Task task = getTask(taskId);
if (task == null) {
diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/DiskMigrationStatusTask.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/BrickMigrationStatusTask.java
index ccfd58be..0f00ad3a 100644
--- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/DiskMigrationStatusTask.java
+++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/BrickMigrationStatusTask.java
@@ -27,7 +27,7 @@ import com.gluster.storage.management.core.model.TaskInfo.TASK_TYPE;
import com.gluster.storage.management.server.resources.v1_0.TasksResource;
@Component
-public class DiskMigrationStatusTask {
+public class BrickMigrationStatusTask {
@Autowired
private TasksResource tasksResource;
@@ -39,5 +39,4 @@ public class DiskMigrationStatusTask {
}
}
}
-
}
diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/MigrateBrickTask.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/MigrateBrickTask.java
index af5e657a..9236a6d3 100644
--- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/MigrateBrickTask.java
+++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/MigrateBrickTask.java
@@ -20,22 +20,16 @@
*/
package com.gluster.storage.management.server.tasks;
-import java.util.concurrent.ExecutionException;
-
-import org.apache.derby.iapi.sql.execute.ExecPreparedStatement;
import org.springframework.context.ApplicationContext;
import org.springframework.web.context.ContextLoader;
import com.gluster.storage.management.core.exceptions.ConnectionException;
-import com.gluster.storage.management.core.exceptions.GlusterRuntimeException;
import com.gluster.storage.management.core.model.Status;
-import com.gluster.storage.management.core.model.TaskInfo;
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 MigrateBrickTask extends Task {
@@ -142,6 +136,19 @@ public class MigrateBrickTask extends Task {
commitMigration(getNewOnlineServer().getName());
}
}
+
+ private void commitMigration(String serverName) {
+ 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());
+ getTaskInfo().setStatus(taskStatus);
+ }
+ }
+ }
@Override
public void stop() {
@@ -173,30 +180,25 @@ public class MigrateBrickTask extends Task {
return checkMigrationStatus(getNewOnlineServer().getName());
}
}
-
- public void commitMigration(String serverName) {
- 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);
- }
- }
- }
-
+
private TaskStatus checkMigrationStatus(String serverName) {
if (getTaskInfo().getStatus().getCode() == Status.STATUS_CODE_PAUSE) {
return getTaskInfo().getStatus();
}
+ // For committed task, status command (CLI) is invalid, just return current status
+ if (getTaskInfo().getStatus().getCode() == Status.STATUS_CODE_SUCCESS) {
+ return getTaskInfo().getStatus();
+ }
+
TaskStatus taskStatus = new TaskStatus();
try {
ProcessResult processResult = glusterUtil.executeBrickMigration(serverName, getTaskInfo().getReference(),
getFromBrick(), getToBrick(), "status");
- if (processResult.getOutput().trim().matches("^Number of files migrated.*Migration complete$")) {
+ if (processResult.getOutput().trim().matches("^Number of files migrated.*Migration complete$")
+ || processResult.getOutput().trim().matches("^Number of files migrated = 0 .*Current file=")) {
+ // Note: Workaround - if no file in the volume brick to migrate, Gluster CLI is not giving proper
+ // (complete) status
taskStatus.setCode(Status.STATUS_CODE_COMMIT_PENDING);
if (autoCommit) {
commitMigration(serverName);
diff --git a/src/com.gluster.storage.management.server/src/spring/gluster-server-base.xml b/src/com.gluster.storage.management.server/src/spring/gluster-server-base.xml
index 0a000732..b9fb2126 100644
--- a/src/com.gluster.storage.management.server/src/spring/gluster-server-base.xml
+++ b/src/com.gluster.storage.management.server/src/spring/gluster-server-base.xml
@@ -19,7 +19,7 @@
<!-- This task keeps checking status of disk migration tasks (wherever auto-commit is set to true)
so that auto-commit can be performed as soon as the migration is complete -->
<task:scheduled-tasks>
- <task:scheduled ref="diskMigrationStatusTask" method="checkMigrationStatus" fixed-delay="60000" />
+ <task:scheduled ref="brickMigrationStatusTask" method="checkMigrationStatus" fixed-delay="60000" />
</task:scheduled-tasks>
<!-- Cluster environment. Valid values: vmware, aws, baremetal -->