summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDhandapani <dhandapani@gluster.com>2011-07-19 17:45:18 +0530
committerDhandapani <dhandapani@gluster.com>2011-07-19 18:07:50 +0530
commit829887511fe2f63b22a9e7b92bee80ba8987cffc (patch)
tree0a1d7be19f893db05cfee2a939b93bbf6bfd2343 /src
parent06bf0e698fbd747944c1177d3d6c40c5c50af0c2 (diff)
Initialize Disk enhancement
Diffstat (limited to 'src')
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractDisksPage.java30
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/GlusterServersResource.java4
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/InitializeDiskTask.java2
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/GlusterUtil.java6
4 files changed, 29 insertions, 13 deletions
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractDisksPage.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractDisksPage.java
index 447524a4..e4b0f2a7 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractDisksPage.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractDisksPage.java
@@ -47,6 +47,7 @@ import com.gluster.storage.management.core.model.Device.DEVICE_STATUS;
import com.gluster.storage.management.core.model.Disk;
import com.gluster.storage.management.core.model.Entity;
import com.gluster.storage.management.core.model.Partition;
+import com.gluster.storage.management.core.model.Status;
import com.gluster.storage.management.core.model.TaskInfo;
import com.gluster.storage.management.gui.Application;
import com.gluster.storage.management.gui.IEntityListener;
@@ -70,7 +71,7 @@ public abstract class AbstractDisksPage extends AbstractTableTreeViewerPage<Disk
Application.getApplication().addEntityListener(this);
}
- private void createInitializeLink(final TreeItem item, final int rowNum, final Device device) {
+ private void createInitializeLink(final TreeItem item, final int rowNum, final Device uninitializedDevice) {
final Tree tree = treeViewer.getTree();
final TreeEditor editor = new TreeEditor(tree);
editor.grabHorizontal = true;
@@ -82,7 +83,7 @@ public abstract class AbstractDisksPage extends AbstractTableTreeViewerPage<Disk
private ImageHyperlink myLink = null;
private TreeEditor myEditor = null;
- private void createLinkFor(Device device, TreeItem item1, int rowNum1) {
+ private void createLinkFor(Device uninitializedDevice, TreeItem item1, int rowNum1) {
myItem = item1;
myRowNum = rowNum1;
@@ -93,7 +94,7 @@ public abstract class AbstractDisksPage extends AbstractTableTreeViewerPage<Disk
myLink = toolkit.createImageHyperlink(tree, SWT.NONE);
// link.setImage(guiHelper.getImage(IImageKeys.DISK_UNINITIALIZED));
myLink.setText("Initialize");
- myLink.addHyperlinkListener(new StatusLinkListener(myLink, myEditor, treeViewer, device));
+ myLink.addHyperlinkListener(new StatusLinkListener(myLink, myEditor, treeViewer, uninitializedDevice));
myEditor.setEditor(myLink, item1, getStatusColumnIndex());
@@ -111,14 +112,14 @@ public abstract class AbstractDisksPage extends AbstractTableTreeViewerPage<Disk
int itemCount = tree.getItemCount();
// Find the table item corresponding to our disk
- Disk disk = null;
+ Device device = null;
int rowNum1 = -1;
TreeItem item1 = null;
for (int i = 0; i < itemCount; i++) {
item1 = tree.getItem(i);
- disk = (Disk) item1.getData();
- if (disk != null && disk == device) {
+ device = (Device) item1.getData();
+ if (device != null && device == uninitializedDevice) {
// this is an uninitialized "disk"
rowNum1 = i;
break;
@@ -129,10 +130,11 @@ public abstract class AbstractDisksPage extends AbstractTableTreeViewerPage<Disk
TreeItem partitionItem = item1.getItem(j);
// check each partition
Device partition = (Device)partitionItem.getData();
- if(partition != null && partition == device) {
+ if(partition != null && partition == uninitializedDevice) {
// this is an uninitialized "partition"
rowNum1 = i + j;
item1 = partitionItem;
+ device = (Device) partitionItem.getData();
break;
}
}
@@ -147,14 +149,14 @@ public abstract class AbstractDisksPage extends AbstractTableTreeViewerPage<Disk
// item visible, and
// either editor never created, OR
// old item disposed. create the link for it
- createLinkFor(disk, item1, rowNum1);
+ createLinkFor(device, item1, rowNum1);
}
if (rowNum1 != myRowNum) {
// disk visible, but at a different row num. re-create the link
myLink.dispose();
myEditor.dispose();
- createLinkFor(disk, item1, rowNum1);
+ createLinkFor(device, item1, rowNum1);
}
myEditor.layout(); // IMPORTANT. Without this, the link location goes for a toss on maximize + restore
@@ -219,14 +221,22 @@ public abstract class AbstractDisksPage extends AbstractTableTreeViewerPage<Disk
GlusterServersClient serversClient = new GlusterServersClient();
try {
+
URI uri = serversClient.initializeDisk(device.getServerName(), device.getName(), formatDialog.getFSType());
TasksClient taskClient = new TasksClient();
TaskInfo taskInfo = taskClient.getTaskInfo(uri);
+
if (taskInfo != null && taskInfo instanceof TaskInfo) {
GlusterDataModelManager.getInstance().getModel().getCluster().addTaskInfo(taskInfo);
}
- updateStatus(DEVICE_STATUS.INITIALIZING, true);
+
+ 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);
+ }
+
} catch (Exception e1) {
MessageDialog.openError(getShell(), "Error: Initialize disk", e1.getMessage());
}
diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/GlusterServersResource.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/GlusterServersResource.java
index 17aeef2b..271161b9 100644
--- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/GlusterServersResource.java
+++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/GlusterServersResource.java
@@ -58,6 +58,7 @@ import com.gluster.storage.management.core.exceptions.ConnectionException;
import com.gluster.storage.management.core.exceptions.GlusterRuntimeException;
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.TaskStatus;
import com.gluster.storage.management.core.response.GlusterServerListResponse;
import com.gluster.storage.management.core.response.ServerNameListResponse;
import com.gluster.storage.management.server.data.ClusterInfo;
@@ -454,6 +455,9 @@ public class GlusterServersResource extends AbstractServersResource {
InitializeDiskTask initializeTask = new InitializeDiskTask(clusterService, clusterName, serverName, diskName, fsType);
try {
initializeTask.start();
+ // Check the initialize disk status
+ TaskStatus taskStatus = initializeTask.checkStatus();
+ initializeTask.getTaskInfo().setStatus(taskStatus);
taskResource.addTask(initializeTask);
return acceptedResponse(RESTConstants.RESOURCE_PATH_CLUSTERS + "/" + clusterName + "/" + RESOURCE_TASKS + "/"
diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/InitializeDiskTask.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/InitializeDiskTask.java
index 2fe2373b..6aa63e9e 100644
--- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/InitializeDiskTask.java
+++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/InitializeDiskTask.java
@@ -134,7 +134,7 @@ public class InitializeDiskTask extends Task {
public TaskStatus checkStatus() {
try {
- return glusterUtil.checkInitializeDiskStatus(serverName, getDiskName());
+ return glusterUtil.getInitializingDeviceStatus(serverName, getDiskName());
} catch(ConnectionException e) {
// online server might have gone offline. update the failure status
return new TaskStatus(new Status(Status.STATUS_CODE_FAILURE, e.getMessage()));
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 a32c4f18..9878f223 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
@@ -578,7 +578,7 @@ public class GlusterUtil {
}
}
- public TaskStatus checkInitializeDiskStatus(String serverName, String diskName) {
+ public TaskStatus getInitializingDeviceStatus(String serverName, String diskName) {
Object response = serverUtil.executeOnServer(true, serverName, INITIALIZE_DISK_STATUS_SCRIPT + " " + diskName,
InitDiskStatusResponse.class);
@@ -597,8 +597,10 @@ public class GlusterUtil {
taskStatus.setCode(Status.STATUS_CODE_RUNNING);
taskStatus.setPercentCompleted(Math.round(initDiskStatusResponse.getCompletedBlocks()
/ initDiskStatusResponse.getTotalBlocks() * 100));
+ } else if(initDiskStatusResponse.getFormatStatus() == FORMAT_STATUS.NOT_RUNNING) {
+ taskStatus.setCode(Status.STATUS_CODE_FAILURE);
}
-
+
taskStatus.setMessage(initDiskStatusResponse.getMessage());
return taskStatus;
}