diff options
| author | Shireesh Anjal <anjalshireesh@gmail.com> | 2011-07-19 06:40:30 -0700 |
|---|---|---|
| committer | Shireesh Anjal <anjalshireesh@gmail.com> | 2011-07-19 06:40:30 -0700 |
| commit | 629415409ceed7155090d6d7485043c6cf9bee87 (patch) | |
| tree | 4446419ee7d517106c19286272f6585ee920dff2 /src | |
| parent | 06bf0e698fbd747944c1177d3d6c40c5c50af0c2 (diff) | |
| parent | c6ac200224c810071d2737414cdefdaa1c4a4a40 (diff) | |
Merge pull request #123 from Dhandapani/master
Initialize Disk enhancement
Diffstat (limited to 'src')
4 files changed, 30 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..a59a027d 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,15 @@ 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 +131,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 +150,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 +222,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; } |
