summaryrefslogtreecommitdiffstats
path: root/src/com.gluster.storage.management.gateway/src
diff options
context:
space:
mode:
Diffstat (limited to 'src/com.gluster.storage.management.gateway/src')
-rw-r--r--src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/resources/v1_0/GlusterServersResource.java14
-rw-r--r--src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/services/GlusterServerService.java23
-rw-r--r--src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/tasks/InitializeDiskTask.java18
-rw-r--r--src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/utils/ServerUtil.java8
4 files changed, 56 insertions, 7 deletions
diff --git a/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/resources/v1_0/GlusterServersResource.java b/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/resources/v1_0/GlusterServersResource.java
index 8d3784e9..ccb11726 100644
--- a/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/resources/v1_0/GlusterServersResource.java
+++ b/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/resources/v1_0/GlusterServersResource.java
@@ -20,6 +20,7 @@ package com.gluster.storage.management.gateway.resources.v1_0;
import static com.gluster.storage.management.core.constants.RESTConstants.FORM_PARAM_FSTYPE;
import static com.gluster.storage.management.core.constants.RESTConstants.FORM_PARAM_SERVER_NAME;
+import static com.gluster.storage.management.core.constants.RESTConstants.FORM_PARAM_MOUNTPOINT;
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;
@@ -30,6 +31,7 @@ import static com.gluster.storage.management.core.constants.RESTConstants.QUERY_
import static com.gluster.storage.management.core.constants.RESTConstants.QUERY_PARAM_PERIOD;
import static com.gluster.storage.management.core.constants.RESTConstants.QUERY_PARAM_TYPE;
import static com.gluster.storage.management.core.constants.RESTConstants.RESOURCE_DISKS;
+import static com.gluster.storage.management.core.constants.RESTConstants.RESOURCE_FSTYPE;
import static com.gluster.storage.management.core.constants.RESTConstants.RESOURCE_PATH_CLUSTERS;
import static com.gluster.storage.management.core.constants.RESTConstants.RESOURCE_SERVERS;
import static com.gluster.storage.management.core.constants.RESTConstants.RESOURCE_STATISTICS;
@@ -63,6 +65,7 @@ import com.gluster.storage.management.core.model.ServerStats;
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.core.response.StringListResponse;
import com.gluster.storage.management.gateway.data.ClusterInfo;
import com.gluster.storage.management.gateway.services.ClusterService;
import com.gluster.storage.management.gateway.services.GlusterServerService;
@@ -197,12 +200,19 @@ public class GlusterServersResource extends AbstractResource {
return noContentResponse();
}
+ @GET
+ @Produces(MediaType.APPLICATION_XML)
+ @Path("{" + PATH_PARAM_SERVER_NAME + "}/" + RESOURCE_FSTYPE)
+ public StringListResponse getFsType(@PathParam(PATH_PARAM_CLUSTER_NAME) String clusterName, @PathParam(PATH_PARAM_SERVER_NAME) String serverName) {
+ return glusterServerService.getFsType(clusterName, serverName);
+ }
+
@PUT
@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,
- @FormParam(FORM_PARAM_FSTYPE) String fsType) {
+ @FormParam(FORM_PARAM_FSTYPE) String fsType, @FormParam(FORM_PARAM_MOUNTPOINT) String mountPoint) {
if (clusterName == null || clusterName.isEmpty()) {
return badRequestResponse("Cluster name must not be empty!");
@@ -221,7 +231,7 @@ public class GlusterServersResource extends AbstractResource {
// return badRequestResponse("Parameter [" + FORM_PARAM_FSTYPE + "] is missing in request!");
}
- InitializeDiskTask initializeTask = new InitializeDiskTask(clusterService, clusterName, serverName, diskName, fsType);
+ InitializeDiskTask initializeTask = new InitializeDiskTask(clusterService, clusterName, serverName, diskName, fsType, mountPoint);
try {
initializeTask.start();
// Check the initialize disk status
diff --git a/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/services/GlusterServerService.java b/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/services/GlusterServerService.java
index da1a8487..fcaec52e 100644
--- a/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/services/GlusterServerService.java
+++ b/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/services/GlusterServerService.java
@@ -35,6 +35,7 @@ import com.gluster.storage.management.core.exceptions.GlusterValidationException
import com.gluster.storage.management.core.model.GlusterServer;
import com.gluster.storage.management.core.model.Server;
import com.gluster.storage.management.core.model.Server.SERVER_STATUS;
+import com.gluster.storage.management.core.response.StringListResponse;
import com.gluster.storage.management.core.utils.GlusterCoreUtil;
import com.gluster.storage.management.core.utils.ProcessUtil;
import com.gluster.storage.management.core.utils.StringUtil;
@@ -142,6 +143,20 @@ public class GlusterServerService {
return server;
}
}
+
+ // Server not found. It's possible that the server name returned by glusterfs is actually IP address
+ // Hence fetch details of all servers and then compare the host names again.
+ String errMsg = fetchDetailsOfServers(Collections.synchronizedList(servers));
+ if (!errMsg.isEmpty()) {
+ throw new GlusterRuntimeException("Couldn't fetch details for server(s): " + errMsg);
+ }
+ for (GlusterServer server : servers) {
+ if (server.getName().equalsIgnoreCase(serverName)) {
+ return server;
+ }
+ }
+
+ // still not found!
return null;
}
@@ -504,4 +519,12 @@ public class GlusterServerService {
}
}
}
+
+ public StringListResponse getFsType(String clusterName, String serverName) {
+ if (isValidServer(clusterName, serverName)) {
+ return serverUtil.getFsType(serverName);
+ } else {
+ throw new GlusterRuntimeException(serverName + " is not belongs to the cluster [" + clusterName + "]");
+ }
+ }
}
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 4c437737..ffb9619d 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
@@ -43,10 +43,11 @@ public class InitializeDiskTask extends Task {
private String serverName;
private String diskName;
private String fsType;
+ private String mountPoint;
private ServerUtil serverUtil;
public InitializeDiskTask(ClusterService clusterService, String clusterName, String serverName, String diskName,
- String fsType) {
+ String fsType, String deviceMountPoint) {
// Reference contains "Server:disk"
super(clusterService, clusterName, TASK_TYPE.DISK_FORMAT, serverName + ":" + diskName, "Initialize disk "
+ serverName + ":" + diskName, false, false, false);
@@ -54,6 +55,7 @@ public class InitializeDiskTask extends Task {
setServerName(serverName);
setDiskName(diskName);
setFsType(fsType);
+ setMountpoint(deviceMountPoint);
taskInfo.setName(getId());
init();
}
@@ -117,10 +119,8 @@ public class InitializeDiskTask extends Task {
}
private void startInitializeDisk(String serverName) {
- String fsTypeCommand = (getFsType().equals(GlusterConstants.FSTYPE_DEFAULT)) ? "" : " -t " + getFsType();
-
- String output = serverUtil.executeScriptOnServer(serverName, INITIALIZE_DISK_SCRIPT + fsTypeCommand + " "
- + getDiskName());
+ String output = serverUtil.executeScriptOnServer(serverName, INITIALIZE_DISK_SCRIPT + getFsType() + " "
+ + mountPoint + " " + getDiskName() );
TaskStatus taskStatus = new TaskStatus(new Status(Status.STATUS_CODE_RUNNING, output));
taskStatus.setPercentageSupported((getFsType().equals(GlusterConstants.FSTYPE_XFS)) ? false : true);
getTaskInfo().setStatus(taskStatus);
@@ -187,4 +187,12 @@ public class InitializeDiskTask extends Task {
public String getFsType() {
return fsType;
}
+
+ public void setMountpoint(String deviceMountPoint) {
+ this.mountPoint = deviceMountPoint;
+ }
+
+ public String getMountpoint() {
+ return mountPoint;
+ }
}
diff --git a/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/utils/ServerUtil.java b/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/utils/ServerUtil.java
index 0d09d616..b53d0042 100644
--- a/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/utils/ServerUtil.java
+++ b/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/utils/ServerUtil.java
@@ -44,6 +44,7 @@ import com.gluster.storage.management.core.exceptions.GlusterRuntimeException;
import com.gluster.storage.management.core.model.Server;
import com.gluster.storage.management.core.model.Server.SERVER_STATUS;
import com.gluster.storage.management.core.model.Status;
+import com.gluster.storage.management.core.response.StringListResponse;
import com.gluster.storage.management.core.utils.ProcessResult;
import com.gluster.storage.management.core.utils.ProcessUtil;
import com.gluster.storage.management.gateway.services.GlusterInterfaceService;
@@ -65,6 +66,7 @@ public class ServerUtil {
private static final String SCRIPT_COMMAND = "python";
private static final String REMOTE_SCRIPT_GET_DISK_FOR_DIR = "get_disk_for_dir.py";
private static final String REMOTE_SCRIPT_GET_SERVER_DETAILS = "get_server_details.py";
+ private static final String REMOTE_SCRIPT_GET_FILE_SYSTEM_TYPE = "get_filesystem_type.py";
private static final String REMOTE_SCRIPT_BASE_DIR = "/opt/glustermg";
private static final String REMOTE_SCRIPT_DIR_NAME = "backend";
@@ -360,4 +362,10 @@ public class ServerUtil {
ApplicationContext ctx = ContextLoader.getCurrentWebApplicationContext();
return ctx.getBean(clazz);
}
+
+ public StringListResponse getFsType(String serverName) {
+ String output = executeScriptOnServer(serverName, REMOTE_SCRIPT_GET_FILE_SYSTEM_TYPE);
+ StringListResponse response = new StringListResponse(Arrays.asList(output.trim().split(CoreConstants.NEWLINE)));
+ return response;
+ }
}