diff options
| author | Shireesh Anjal <anjalshireesh@gmail.com> | 2011-08-08 10:04:32 -0700 |
|---|---|---|
| committer | Shireesh Anjal <anjalshireesh@gmail.com> | 2011-08-08 10:04:32 -0700 |
| commit | 968de364c1b924e77eaf1279c27f3c8784400221 (patch) | |
| tree | e3b7ad0b75a68ab932ce175a785fa924a2c9733a /src/com.gluster.storage.management.console | |
| parent | 796c6d32694d537092854756fe7f463d347d6854 (diff) | |
| parent | 2034897d0085ec7808cb22cad72d8b9e0c90f879 (diff) | |
Merge pull request #207 from Selvasundaram/46ff3a7d199308498c90e37a7d20fffd6daaa3cf
GlusterFS download URI updated
Diffstat (limited to 'src/com.gluster.storage.management.console')
6 files changed, 59 insertions, 11 deletions
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/GlusterDataModelManager.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/GlusterDataModelManager.java index 5e8e5325..46f4393b 100644 --- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/GlusterDataModelManager.java +++ b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/GlusterDataModelManager.java @@ -830,6 +830,15 @@ public class GlusterDataModelManager { return null; } + public TaskInfo getTaskByReference(String reference) { + for (TaskInfo taskInfo: model.getCluster().getTaskInfoList()) { + if (taskInfo.getReference().equals(reference)) { + return taskInfo; + } + } + return null; + } + // Updating the Task public void updateTask(TaskInfo taskInfo) { for (ClusterListener listener : listeners) { diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/actions/CommitTaskAction.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/actions/CommitTaskAction.java index ff47ff41..ea47bd8f 100644 --- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/actions/CommitTaskAction.java +++ b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/actions/CommitTaskAction.java @@ -36,7 +36,7 @@ public class CommitTaskAction extends AbstractActionDelegate { @Override public void run() { try { - String volumeName = taskInfo.getReference(); + String volumeName = taskInfo.getReference().split("-")[0]; //Extract volume name from reference Volume oldVolume = modelManager.getModel().getCluster().getVolume(volumeName); Volume newVolume = (new VolumesClient()).getVolume(volumeName); diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/actions/RebalanceVolumeAction.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/actions/RebalanceVolumeAction.java index 14c001aa..aeed223f 100644 --- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/actions/RebalanceVolumeAction.java +++ b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/actions/RebalanceVolumeAction.java @@ -21,12 +21,14 @@ package com.gluster.storage.management.console.actions; import java.net.URI; import org.eclipse.jface.action.IAction; +import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.ISelection; import com.gluster.storage.management.client.TasksClient; import com.gluster.storage.management.client.VolumesClient; import com.gluster.storage.management.console.GlusterDataModelManager; import com.gluster.storage.management.console.utils.GUIHelper; +import com.gluster.storage.management.core.model.Status; import com.gluster.storage.management.core.model.TaskInfo; import com.gluster.storage.management.core.model.Volume; @@ -38,12 +40,20 @@ public class RebalanceVolumeAction extends AbstractActionDelegate { protected void performAction(final IAction action) { final String actionDesc = action.getDescription(); try { + TaskInfo existingTaskInfo = GlusterDataModelManager.getInstance().getTaskByReference(volume.getName()); + if (existingTaskInfo != null && existingTaskInfo.getStatus().getCode() != Status.STATUS_CODE_SUCCESS + && existingTaskInfo.getStatus().getCode() != Status.STATUS_CODE_FAILURE) { + showInfoDialog(actionDesc, "Volume [" + volume.getName() + + "] rebalance is already in progress! Try later."); + return; + } + URI uri = new VolumesClient().rebalanceStart(volume.getName(), false, false, false); // Add the task to model TasksClient taskClient = new TasksClient(); TaskInfo taskInfo = taskClient.getTaskInfo(uri); if (taskInfo != null && taskInfo instanceof TaskInfo) { - GlusterDataModelManager.getInstance().getModel().getCluster().addTaskInfo(taskInfo); + GlusterDataModelManager.getInstance().addTask(taskInfo); } showInfoDialog(actionDesc, "Volume [" + volume.getName() + "] rebalance started successfully!"); guiHelper.showTaskView(); diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/dialogs/InitializeDiskTypeSelection.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/dialogs/InitializeDiskTypeSelection.java index 060e68ac..2467735f 100644 --- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/dialogs/InitializeDiskTypeSelection.java +++ b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/dialogs/InitializeDiskTypeSelection.java @@ -45,7 +45,7 @@ public class InitializeDiskTypeSelection extends Dialog { private final GUIHelper guiHelper = GUIHelper.getInstance(); private Composite initializeDiskTypeComposite; private Composite composite; - private String fsType; + private String fsType; public InitializeDiskTypeSelection(Shell parentShell) { super(parentShell); diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/dialogs/MigrateBrickWizard.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/dialogs/MigrateBrickWizard.java index eef810fe..2f7c2fb9 100644 --- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/dialogs/MigrateBrickWizard.java +++ b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/dialogs/MigrateBrickWizard.java @@ -29,6 +29,7 @@ import com.gluster.storage.management.console.GlusterDataModelManager; import com.gluster.storage.management.console.utils.GUIHelper; import com.gluster.storage.management.core.model.Brick; import com.gluster.storage.management.core.model.Cluster; +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; @@ -63,19 +64,28 @@ public class MigrateBrickWizard extends Wizard { String dialogTitle = "Brick migration"; try { + String reference = volume.getName() + "-" + sourceDir + "-" + targetDir; + TaskInfo existingTaskInfo = GlusterDataModelManager.getInstance().getTaskByReference(reference); + if (existingTaskInfo != null && existingTaskInfo.getStatus().getCode() != Status.STATUS_CODE_SUCCESS + && existingTaskInfo.getStatus().getCode() != Status.STATUS_CODE_FAILURE) { + MessageDialog.openInformation(getShell(), dialogTitle, "Volume brick [" + reference + + "] migration is already in progress! Try later."); + return true; + } + URI uri = volumesClient.startMigration(volume.getName(), sourceDir, targetDir, autoCommit); // To get the object TasksClient taskClient = new TasksClient(); TaskInfo taskInfo = taskClient.getTaskInfo(uri); if (taskInfo != null && taskInfo instanceof TaskInfo) { - cluster.addTaskInfo(taskInfo); - modelManager.refreshVolumeData(cluster.getVolume(taskInfo.getReference())); + // cluster.addTaskInfo(taskInfo); + String volumeName = taskInfo.getReference().split("-")[0]; + modelManager.addTask(taskInfo); + modelManager.refreshVolumeData(cluster.getVolume(volumeName)); // If auto commit selected and migration operation complete immediately, if (taskInfo.getStatus().getCode() == TaskStatus.STATUS_CODE_SUCCESS) { - - String volumeName = taskInfo.getReference(); Volume oldVolume = cluster.getVolume(volumeName); Volume newVolume = (new VolumesClient()).getVolume(volumeName); diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/AbstractDisksPage.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/AbstractDisksPage.java index cf702ef5..58712e93 100644 --- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/AbstractDisksPage.java +++ b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/AbstractDisksPage.java @@ -53,6 +53,7 @@ import com.gluster.storage.management.core.model.Disk; 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.GlusterDataModel; import com.gluster.storage.management.core.model.GlusterServer; import com.gluster.storage.management.core.model.Status; import com.gluster.storage.management.core.model.TaskInfo; @@ -242,6 +243,18 @@ public abstract class AbstractDisksPage extends AbstractTableTreeViewerPage<Disk @Override public void linkActivated(HyperlinkEvent e) { + GlusterDataModelManager modelManager = GlusterDataModelManager.getInstance(); + + // If the same task is already running return + String reference = device.getServerName() + ":" + device.getName(); + TaskInfo existingTaskInfo = modelManager.getTaskByReference(reference); + if (existingTaskInfo != null && existingTaskInfo.getStatus().getCode() != Status.STATUS_CODE_SUCCESS + && existingTaskInfo.getStatus().getCode() != Status.STATUS_CODE_FAILURE) { + MessageDialog.openInformation(getShell(), "Error: Initialize disk", "Initializing disk [" + reference + + "] is already in progress! Try later."); + return; + } + InitializeDiskTypeSelection formatDialog = new InitializeDiskTypeSelection(getShell()); int userAction = formatDialog.open(); if (userAction == Window.CANCEL) { @@ -258,15 +271,21 @@ public abstract class AbstractDisksPage extends AbstractTableTreeViewerPage<Disk TaskInfo taskInfo = taskClient.getTaskInfo(uri); if (taskInfo != null && taskInfo instanceof TaskInfo) { - GlusterDataModelManager.getInstance().getModel().getCluster().addTaskInfo(taskInfo); + modelManager.addTask(taskInfo); } if (taskInfo.getStatus().getCode() == Status.STATUS_CODE_RUNNING) { updateStatus(DEVICE_STATUS.INITIALIZING, true); } else if (taskInfo.getStatus().getCode() == Status.STATUS_CODE_SUCCESS) { - updateStatus(DEVICE_STATUS.INITIALIZED, true); - GlusterDataModelManager.getInstance().updateDeviceStatus(device.getServerName(), device.getName(), - DEVICE_STATUS.INITIALIZED); + // If format completed (instantly), get the server details and update the server in the model + GlusterServer oldServer = modelManager.getModel().getCluster().getServer(device.getServerName()); + GlusterServer newServer = serversClient.getGlusterServer(device.getServerName()); + modelManager.glusterServerChanged(oldServer, newServer); + // updateStatus(DEVICE_STATUS.INITIALIZED, true); + // GlusterDataModelManager.getInstance().updateDeviceStatus(device.getServerName(), device.getName(), + // DEVICE_STATUS.INITIALIZED); + } else { + MessageDialog.openError(getShell(), "Error: Initialize disk", taskInfo.getStatus().getMessage()); } guiHelper.showTaskView(); } catch (Exception e1) { |
