diff options
| author | Shireesh Anjal <anjalshireesh@gmail.com> | 2011-07-06 05:27:34 -0700 |
|---|---|---|
| committer | Shireesh Anjal <anjalshireesh@gmail.com> | 2011-07-06 05:27:34 -0700 |
| commit | 550c02e275f8dac0f2ef08eed351db223719fb1b (patch) | |
| tree | 64a9ace14181d0ec2cef970c9aa1c85bc6ccc47b /src | |
| parent | 82d6de881a565b8816fc7db66614d4c8a02838a8 (diff) | |
| parent | 47fda7f13360c635d4d89d8ea2c79cce96c3807b (diff) | |
Merge pull request #99 from Selvasundaram/master
Migrate task client call bug fixes and toolbar updates
Diffstat (limited to 'src')
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 --> |
