summaryrefslogtreecommitdiffstats
path: root/src/com.gluster.storage.management.console
diff options
context:
space:
mode:
authorShireesh Anjal <anjalshireesh@gmail.com>2011-08-08 10:04:32 -0700
committerShireesh Anjal <anjalshireesh@gmail.com>2011-08-08 10:04:32 -0700
commit968de364c1b924e77eaf1279c27f3c8784400221 (patch)
treee3b7ad0b75a68ab932ce175a785fa924a2c9733a /src/com.gluster.storage.management.console
parent796c6d32694d537092854756fe7f463d347d6854 (diff)
parent2034897d0085ec7808cb22cad72d8b9e0c90f879 (diff)
Merge pull request #207 from Selvasundaram/46ff3a7d199308498c90e37a7d20fffd6daaa3cf
GlusterFS download URI updated
Diffstat (limited to 'src/com.gluster.storage.management.console')
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/GlusterDataModelManager.java9
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/actions/CommitTaskAction.java2
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/actions/RebalanceVolumeAction.java12
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/dialogs/InitializeDiskTypeSelection.java2
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/dialogs/MigrateBrickWizard.java18
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/AbstractDisksPage.java27
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) {