summaryrefslogtreecommitdiffstats
path: root/src/com.gluster.storage.management.server
diff options
context:
space:
mode:
Diffstat (limited to 'src/com.gluster.storage.management.server')
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/GlusterServersResource.java10
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/InitializeDiskTask.java22
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/GlusterUtil.java34
3 files changed, 50 insertions, 16 deletions
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 619e4f55..1430d24f 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
@@ -19,6 +19,7 @@
package com.gluster.storage.management.server.resources.v1_0;
import static com.gluster.storage.management.core.constants.RESTConstants.FORM_PARAM_SERVER_NAME;
+import static com.gluster.storage.management.core.constants.RESTConstants.FORM_PARAM_FSTYPE;
import static com.gluster.storage.management.core.constants.RESTConstants.PATH_PARAM_CLUSTER_NAME;
import static com.gluster.storage.management.core.constants.RESTConstants.PATH_PARAM_DISK_NAME;
import static com.gluster.storage.management.core.constants.RESTConstants.PATH_PARAM_SERVER_NAME;
@@ -400,7 +401,8 @@ public class GlusterServersResource extends AbstractServersResource {
@Produces(MediaType.APPLICATION_XML)
@Path("{" + PATH_PARAM_SERVER_NAME + "}/" + RESOURCE_DISKS + "/{" + PATH_PARAM_DISK_NAME + "}")
public Response initializeDisk(@PathParam(PATH_PARAM_CLUSTER_NAME) String clusterName,
- @PathParam(PATH_PARAM_SERVER_NAME) String serverName, @PathParam(PATH_PARAM_DISK_NAME) String diskName) {
+ @PathParam(PATH_PARAM_SERVER_NAME) String serverName, @PathParam(PATH_PARAM_DISK_NAME) String diskName,
+ @FormParam(FORM_PARAM_FSTYPE) String fsType) {
if (clusterName == null || clusterName.isEmpty()) {
return badRequestResponse("Cluster name must not be empty!");
@@ -413,8 +415,12 @@ public class GlusterServersResource extends AbstractServersResource {
if (diskName == null || diskName.isEmpty()) {
return badRequestResponse("Disk name must not be empty!");
}
+
+ if (fsType == null || fsType.isEmpty()) {
+ return badRequestResponse("FSType must not be empty!");
+ }
- InitializeDiskTask initializeTask = new InitializeDiskTask(clusterService, clusterName, serverName, diskName);
+ InitializeDiskTask initializeTask = new InitializeDiskTask(clusterService, clusterName, serverName, diskName, fsType);
try {
initializeTask.start();
taskResource.addTask(initializeTask);
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 4592b759..89c8c20f 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
@@ -38,15 +38,17 @@ public class InitializeDiskTask extends Task {
private String serverName;
private String diskName;
+ private String fsType;
private SshUtil sshUtil = new SshUtil();
private GlusterUtil glusterUtil;
- public InitializeDiskTask(ClusterService clusterService, String clusterName, String serverName, String diskName) {
+ public InitializeDiskTask(ClusterService clusterService, String clusterName, String serverName, String diskName, String fsType) {
super(clusterService, clusterName, TASK_TYPE.DISK_FORMAT, diskName, "Initialize disk " + serverName + ":"
+ diskName, false, false, false);
setServerName(serverName);
setDiskName(diskName);
+ setFsType(fsType);
}
public InitializeDiskTask(ClusterService clusterService, String clusterName, TaskInfo info) {
@@ -106,9 +108,17 @@ public class InitializeDiskTask extends Task {
}
private void startInitializeDisk(String serverName) {
- ProcessResult processResult = sshUtil.executeRemote(serverName, INITIALIZE_DISK_SCRIPT + " " + getDiskName());
+ ProcessResult processResult = sshUtil.executeRemote(serverName, INITIALIZE_DISK_SCRIPT + " -t " + getFsType()
+ + " " + getDiskName());
if (processResult.isSuccess()) {
getTaskInfo().setStatus(new TaskStatus(new Status(Status.STATUS_CODE_RUNNING, processResult.getOutput())));
+ TaskStatus taskStatus = null;
+ if (fsType.equals("xfs")) {
+ taskStatus.setPercentageSupported(false);
+ } else {
+ taskStatus.setPercentageSupported(true);
+ }
+
return;
}
@@ -143,4 +153,12 @@ public class InitializeDiskTask extends Task {
public String getServerName() {
return serverName;
}
+
+ public void setFsType(String fsType) {
+ this.fsType = fsType;
+ }
+
+ public String getFsType() {
+ return fsType;
+ }
}
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 a24e147c..ec530365 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
@@ -35,6 +35,8 @@ import com.gluster.storage.management.core.model.Brick;
import com.gluster.storage.management.core.model.Brick.BRICK_STATUS;
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.InitDiskStatusResponse;
+import com.gluster.storage.management.core.model.InitDiskStatusResponse.FORMAT_STATUS;
import com.gluster.storage.management.core.model.Status;
import com.gluster.storage.management.core.model.TaskStatus;
import com.gluster.storage.management.core.model.Volume;
@@ -76,6 +78,9 @@ public class GlusterUtil {
@Autowired
private SshUtil sshUtil;
+ @Autowired
+ private ServerUtil serverUtil;
+
@InjectParam
private TasksResource taskResource;
@@ -574,21 +579,26 @@ public class GlusterUtil {
}
public TaskStatus checkInitializeDiskStatus(String serverName, String diskName) {
- ProcessResult processResult = sshUtil.executeRemote(serverName, INITIALIZE_DISK_STATUS_SCRIPT + " " + diskName);
+ Object response = serverUtil.executeOnServer(true, serverName, INITIALIZE_DISK_STATUS_SCRIPT + " " + diskName,
+ InitDiskStatusResponse.class);
+
TaskStatus taskStatus = new TaskStatus();
- if (processResult.isSuccess()) {
- // TODO: Message needs to change according to the script return
- if (processResult.getOutput().trim().matches(".*Initailize completed$")) {
- taskStatus.setCode(Status.STATUS_CODE_SUCCESS);
- } else {
- // TODO: Percentage completed needs to be set, according to the script output
- taskStatus.setCode(Status.STATUS_CODE_RUNNING);
- // taskStatus.setPercentCompleted(processResult.getOutput());
- }
- } else {
+ if (response instanceof Status) {
taskStatus.setCode(Status.STATUS_CODE_FAILURE);
+ taskStatus.setMessage(((Status) response).getMessage());
+ throw new GlusterRuntimeException(((Status) response).getMessage());
}
- taskStatus.setMessage(processResult.getOutput());
+
+ InitDiskStatusResponse initDiskStatusResponse = (InitDiskStatusResponse) response;
+
+ if (initDiskStatusResponse.getStatus() == FORMAT_STATUS.COMPLETED) {
+ taskStatus.setCode(Status.STATUS_CODE_SUCCESS);
+ } else if (initDiskStatusResponse.getStatus() == FORMAT_STATUS.IN_PROGRESS) {
+ taskStatus.setCode(Status.STATUS_CODE_RUNNING);
+ taskStatus.setPercentCompleted(initDiskStatusResponse.getCompleted() / initDiskStatusResponse.getTotal() * 100);
+ }
+
+ taskStatus.setMessage(initDiskStatusResponse.getMessage());
return taskStatus;
}