summaryrefslogtreecommitdiffstats
path: root/src/com.gluster.storage.management.server
diff options
context:
space:
mode:
authorSelvam <selvam@gluster.com>2011-03-30 18:02:08 +0530
committerSelvam <selvam@gluster.com>2011-04-05 15:10:37 +0530
commit3e997efcd1f569d38b1ac7623c4e10dd35da416a (patch)
tree78104bc99f8bef571490a7d39ae88a080d173585 /src/com.gluster.storage.management.server
parent5c39a47fdd3987bb5eee35f7f7397ce127c8919e (diff)
Alerts section in volumes summary page
Volumes update in navigation tree Review comments update for Alerts & Running tasks 1. RESOURCE_NAME removed and used RESTConstants 2. fetchAlerts renamed to fetchAllAlerts 3. System.out.println removed 4. ALERT_TYPE_STR made as static and final 5. getAlertDescription renamed as getMessage 6. getTaskDescription renamed as getTaskInfo 7. getCluster method is added in GlusterDataModel 8. getRunningTasksForVolumesContext will not implemented for Volumes summary view 9. Constants added for "Availability", "Running Tasks" etc. 10. CPU_USAGE_ALERT, MEMORY_USAGE_ALERT and DISK_USAGE_ALERT are modifies and OFFLINE_VOLUME_DISKS_ALERT, OFFLINE_SERVERS_ALERT are added. 11. Two more dummy alerts added 12. Reference format changed for Disk as "volumeName:serverName:diskName" 13. TaskInfo reflects the task type 14. Method removeSpaces added as static method 15. Local constants added for package and Manager
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