summaryrefslogtreecommitdiffstats
path: root/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/tasks/InitializeDiskTask.java
diff options
context:
space:
mode:
authorShireesh Anjal <shireesh@gluster.com>2011-09-23 10:54:34 +0530
committerShireesh Anjal <shireesh@gluster.com>2011-10-10 15:25:08 +0530
commit2babe9c17733e9c05d24b10c549469f56748df5f (patch)
tree9eae8dda4d9d9572ee01533050410114d318c1e0 /src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/tasks/InitializeDiskTask.java
parenta0327dce2fd70eac192f27ab296dfd319db049ca (diff)
Introducing mechanism for version specific interface to GlusterFS
Diffstat (limited to 'src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/tasks/InitializeDiskTask.java')
-rw-r--r--src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/tasks/InitializeDiskTask.java38
1 files changed, 34 insertions, 4 deletions
diff --git a/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/tasks/InitializeDiskTask.java b/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/tasks/InitializeDiskTask.java
index 7586795a..1fba4158 100644
--- a/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/tasks/InitializeDiskTask.java
+++ b/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/tasks/InitializeDiskTask.java
@@ -25,24 +25,27 @@ import org.springframework.web.context.ContextLoader;
import com.gluster.storage.management.core.constants.GlusterConstants;
import com.gluster.storage.management.core.exceptions.ConnectionException;
+import com.gluster.storage.management.core.model.InitDiskStatusResponse;
import com.gluster.storage.management.core.model.Status;
import com.gluster.storage.management.core.model.TaskInfo;
+import com.gluster.storage.management.core.model.InitDiskStatusResponse.FORMAT_STATUS;
import com.gluster.storage.management.core.model.TaskInfo.TASK_TYPE;
import com.gluster.storage.management.core.model.TaskStatus;
import com.gluster.storage.management.gateway.services.ClusterService;
-import com.gluster.storage.management.gateway.utils.GlusterUtil;
+import com.gluster.storage.management.gateway.services.GlusterInterfaceService;
import com.gluster.storage.management.gateway.utils.ServerUtil;
import com.sun.jersey.core.util.Base64;
public class InitializeDiskTask extends Task {
private static final String INITIALIZE_DISK_SCRIPT = "format_device.py";
+ private static final String INITIALIZE_DISK_STATUS_SCRIPT = "get_format_device_status.py";
private String serverName;
private String diskName;
private String fsType;
private ServerUtil serverUtil;
- private GlusterUtil glusterUtil;
+ private GlusterInterfaceService glusterUtil;
public InitializeDiskTask(ClusterService clusterService, String clusterName, String serverName, String diskName,
String fsType) {
@@ -64,7 +67,7 @@ public class InitializeDiskTask extends Task {
private void init() {
ApplicationContext ctx = ContextLoader.getCurrentWebApplicationContext();
- glusterUtil = ctx.getBean(GlusterUtil.class);
+ glusterUtil = ctx.getBean(GlusterInterfaceService.class);
serverUtil = ctx.getBean(ServerUtil.class);
}
@@ -130,13 +133,40 @@ public class InitializeDiskTask extends Task {
public TaskStatus checkStatus() {
try {
- return glusterUtil.getInitializingDeviceStatus(serverName, getDiskName());
+ return 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()));
}
}
+ private TaskStatus getInitializingDeviceStatus(String serverName, String diskName) {
+ InitDiskStatusResponse initDiskStatusResponse;
+ TaskStatus taskStatus = new TaskStatus();
+
+ try {
+ initDiskStatusResponse = serverUtil.executeScriptOnServer(serverName, INITIALIZE_DISK_STATUS_SCRIPT + " "
+ + diskName, InitDiskStatusResponse.class);
+ } catch(RuntimeException e) {
+ taskStatus.setCode(Status.STATUS_CODE_FAILURE);
+ taskStatus.setMessage(e.getMessage());
+ throw e;
+ }
+
+ if (initDiskStatusResponse.getFormatStatus() == FORMAT_STATUS.COMPLETED) {
+ taskStatus.setCode(Status.STATUS_CODE_SUCCESS);
+ } else if (initDiskStatusResponse.getFormatStatus() == FORMAT_STATUS.IN_PROGRESS) {
+ 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;
+ }
+
public void setDiskName(String diskName) {
this.diskName = diskName;
}