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/AlertsResource.java85
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/RunningTaskResource.java39
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/VolumesResource.java26
3 files changed, 134 insertions, 16 deletions
diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/AlertsResource.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/AlertsResource.java
new file mode 100644
index 00000000..8ea9c0a9
--- /dev/null
+++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/AlertsResource.java
@@ -0,0 +1,85 @@
+package com.gluster.storage.management.server.resources;
+
+import static com.gluster.storage.management.core.constants.RESTConstants.RESOURCE_PATH_ALERTS;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+
+import org.springframework.stereotype.Component;
+
+import com.gluster.storage.management.core.model.AlertListResponse;
+import com.gluster.storage.management.core.model.Alert;
+
+@Component
+@Path(RESOURCE_PATH_ALERTS)
+public class AlertsResource {
+
+ @GET
+ @Produces(MediaType.TEXT_XML)
+ public AlertListResponse getAlerts() {
+
+ List<Alert> alerts = new ArrayList<Alert>();
+
+ // TODO To implement the following dummy alerts
+ // Alert #1
+ Alert alert = new Alert();
+ alert.setId("0001");
+ alert.setReference("Server1"); // Server
+ alert.setType(Alert.ALERT_TYPES.CPU_USAGE_ALERT);
+ alert.setMessage(alert.getAlertType(alert.getType()) + " in server: " + alert.getReference());
+ alerts.add(alert);
+
+ // Alert #2
+ alert = new Alert();
+ alert.setId("0002");
+ alert.setReference("Server2"); // server:Disk - brick
+ alert.setType(Alert.ALERT_TYPES.MEMORY_USAGE_ALERT);
+ alert.setMessage(alert.getAlertType(alert.getType()) + " in server: " + alert.getReference());
+ alerts.add(alert);
+
+ // Alert #3
+ alert = new Alert();
+ alert.setId("0003");
+ alert.setReference("Volume1"); // Volume name
+ alert.setType(Alert.ALERT_TYPES.DISK_USAGE_ALERT);
+ alert.setMessage(alert.getAlertType(alert.getType()) + " in volume: " + alert.getReference());
+ alerts.add(alert);
+
+ // Alert #4
+ alert = new Alert();
+ alert.setId("0004");
+ alert.setReference("Volume2"); // Volume name
+ alert.setType(Alert.ALERT_TYPES.OFFLINE_VOLUME_DISKS_ALERT);
+ alert.setMessage("sda1, sd2 are " + alert.getAlertType(alert.getType()) + " in volume: " + alert.getReference());
+ alerts.add(alert);
+
+ // Alert #5
+ alert = new Alert();
+ alert.setId("0005");
+ alert.setReference("Volume2"); // Volume name
+ alert.setType(Alert.ALERT_TYPES.OFFLINE_SERVERS_ALERT);
+ alert.setMessage("server1, server2 are " + alert.getAlertType(alert.getType()) + " in volume: " + alert.getReference());
+ alerts.add(alert);
+
+ return new AlertListResponse(alerts);
+
+ }
+
+ public static void main(String[] args) {
+ /*
+ // Unit test code
+ AlertsResource alertResource = new AlertsResource();
+ AlertsListResponse alertResponse = alertResource.getAlerts();
+ List<Alert> alerts = alertResponse.getAlerts();
+ for (Alert alert: alerts) {
+ System.out.println(alert.getMessage());
+ }
+ */
+ }
+
+}
diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/RunningTaskResource.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/RunningTaskResource.java
index 2cec4c36..c8046e73 100644
--- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/RunningTaskResource.java
+++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/RunningTaskResource.java
@@ -36,11 +36,15 @@ import com.gluster.storage.management.core.model.RunningTask;
import com.gluster.storage.management.core.model.RunningTaskListResponse;
import com.gluster.storage.management.core.model.RunningTaskStatus;
import com.gluster.storage.management.core.model.Status;
+import com.gluster.storage.management.core.utils.StringUtil;
import com.gluster.storage.management.server.runningtasks.managers.RunningTaskManager;
@Component
@Path(RESOURCE_PATH_RUNNING_TASKS)
public class RunningTaskResource {
+
+ private static final String PKG = "com.gluster.storage.management.server.runningtasks.managers";
+ private static final String MANAGER = "Manager";
@GET
@Produces(MediaType.TEXT_XML)
@@ -55,46 +59,49 @@ public class RunningTaskResource {
// Volume rebalance
RunningTask task = new RunningTask();
task.setId("0001");
- task.setType("VolumeRebalance");
- task.setReference("");
- task.setDescription("Volume [Volume1] rebalance is running");
+ task.setType(RunningTask.TASK_TYPES.VOLUME_REBALANCE);
+ task.setReference("Volume1");
+ task.setTaskInfo( task.getTaskType(task.getType()) + "is rinning in volume - " + task.getReference());
task.setStatus(status);
runningTasks.add(task);
task = new RunningTask();
task.setId("0002");
- task.setType("VolumeRebalance");
- task.setReference("");
- task.setDescription("Volume [Volume2] rebalance is running");
- //task.setDescription("Error: volume rebalance operation failed at fd 0000 [/export/test-song-volume/mydirectory/test-video.avi");
+ task.setType(RunningTask.TASK_TYPES.VOLUME_REBALANCE);
+ task.setReference("Volume2");
+ task.setTaskInfo( task.getTaskType(task.getType()) + " is rinning in volume " + task.getReference());
task.setStatus(status);
runningTasks.add(task);
// MigrateDisk
task = new RunningTask();
task.setId("0003");
- task.setType("MigrateDisk");
- task.setReference("");
- task.setDescription("Disk migration [Volume3/sda] is running");
+ task.setType(RunningTask.TASK_TYPES.MIGRATE_DISK);
+ task.setReference("Volume3:server1:sda1"); // Disk reference
+ task.setTaskInfo( task.getTaskType(task.getType()) + " is running in disk " + task.getReference() + "");
task.setStatus(status);
runningTasks.add(task);
// FormatDisk
task = new RunningTask();
task.setId("0004");
- task.setType("FormatDisk");
- task.setReference("");
- task.setDescription("Volume [vol1] rebalance is running");
+ task.setType(RunningTask.TASK_TYPES.FORMAT_DISK);
+ task.setReference("Volume1:server1:sdb1"); // Disk reference
+ task.setTaskInfo( task.getTaskType(task.getType()) + " " + task.getReference() );
status.setPercentageSupported(true);
status.getPercentCompleted(45);
task.setStatus(status);
runningTasks.add(task);
+
return new RunningTaskListResponse(Status.STATUS_SUCCESS, runningTasks);
}
@SuppressWarnings("rawtypes")
- public Response startTask(@FormParam("taskType") String taskType) {
- String managerClassName = "com.gluster.storage.management.server.runningtasks.managers." + taskType + "Manager";
+ public Response startTask(@FormParam("taskType") RunningTask.TASK_TYPES taskType) {
+
+ String taskTypeStr = StringUtil.stripSpaces( new RunningTask().getTaskType(taskType) );
+ String managerClassName = PKG + "." + taskTypeStr + MANAGER;
+
Class managerClass;
RunningTaskManager manager = null;
try {
@@ -121,7 +128,7 @@ public class RunningTaskResource {
RunningTaskListResponse tasks = rt.getRunningTasks();
List<RunningTask> runningTasks = tasks.getRunningTasks();
for( RunningTask x : runningTasks) {
- System.out.println( x.getId() + " : " + x.getType() + " : " + x.getDescription() );
+ System.out.println( x.getId() + " : " + x.getType() + " : " + x.getTaskInfo() );
}
}
}
diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/VolumesResource.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/VolumesResource.java
index dfa5a5cc..d2677ce7 100644
--- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/VolumesResource.java
+++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/VolumesResource.java
@@ -27,6 +27,8 @@ import static com.gluster.storage.management.core.constants.RESTConstants.PATH_P
import static com.gluster.storage.management.core.constants.RESTConstants.RESOURCE_PATH_VOLUMES;
import static com.gluster.storage.management.core.constants.RESTConstants.SUBRESOURCE_DEFAULT_OPTIONS;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Map;
import javax.ws.rs.Consumes;
@@ -39,11 +41,14 @@ import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
+import com.gluster.storage.management.core.constants.RESTConstants;
import com.gluster.storage.management.core.model.GenericResponse;
import com.gluster.storage.management.core.model.Status;
import com.gluster.storage.management.core.model.Volume;
+import com.gluster.storage.management.core.model.VolumeListResponse;
import com.gluster.storage.management.core.utils.GlusterUtil;
import com.gluster.storage.management.core.utils.ProcessResult;
+import com.gluster.storage.management.core.utils.ProcessUtil;
import com.gluster.storage.management.server.constants.VolumeOptionsDefaults;
import com.sun.jersey.spi.resource.Singleton;
@@ -52,6 +57,18 @@ import com.sun.jersey.spi.resource.Singleton;
public class VolumesResource {
private final GlusterUtil glusterUtil = new GlusterUtil();
+ @GET
+ @Produces(MediaType.TEXT_XML)
+ public VolumeListResponse getAllVolumes() {
+ ProcessResult response = glusterUtil.getVolumeInfo();
+ if (response.isSuccess()) {
+ return new VolumeListResponse( Status.STATUS_SUCCESS, glusterUtil.getAllVolumes(response.getOutput()) );
+ } else {
+ //TODO: log the error
+ return new VolumeListResponse(Status.STATUS_FAILURE, new ArrayList<Volume>());
+ }
+ }
+
@POST
@Consumes(MediaType.TEXT_XML)
@Produces(MediaType.TEXT_XML)
@@ -90,4 +107,13 @@ public class VolumesResource {
// whenever such a CLI command is made available in GlusterFS
return new VolumeOptionsDefaults().getDefaults();
}
+
+
+ public static void main(String[] args) {
+ VolumesResource vr = new VolumesResource();
+ VolumeListResponse response = vr.getAllVolumes();
+ for(Volume volume : response.getVolumes() ) {
+ System.out.println( "\nName:" + volume.getName() + "\nType: " + volume.getVolumeTypeStr() + "\nStatus: " + volume.getStatusStr());
+ }
+ }
} \ No newline at end of file