diff options
Diffstat (limited to 'src/com.gluster.storage.management.server')
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 |
