summaryrefslogtreecommitdiffstats
path: root/com.gluster.storage.management.server
diff options
context:
space:
mode:
authorShireesh Anjal <shireesh@gluster.com>2011-03-23 19:06:42 +0530
committerShireesh Anjal <shireesh@gluster.com>2011-03-23 19:07:20 +0530
commit195695e266bc0cdd00c183760d0501e0d6c9114a (patch)
tree8a1b8806536ee387eaf36c4d5ca02c2937343bb5 /com.gluster.storage.management.server
parent1cff1362e9b99fddff779872dd5bd3a83a44a688 (diff)
Running tasks framework
Diffstat (limited to 'com.gluster.storage.management.server')
-rw-r--r--com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/RunningTaskResource.java129
-rw-r--r--com.gluster.storage.management.server/src/com/gluster/storage/management/server/runningtasks/managers/FormatDiskManager.java71
-rw-r--r--com.gluster.storage.management.server/src/com/gluster/storage/management/server/runningtasks/managers/MigrateDiskManager.java50
-rwxr-xr-xcom.gluster.storage.management.server/src/com/gluster/storage/management/server/runningtasks/managers/RunningTaskManager.java44
-rw-r--r--com.gluster.storage.management.server/src/com/gluster/storage/management/server/runningtasks/managers/VolumeRebalanceManager.java50
5 files changed, 344 insertions, 0 deletions
diff --git a/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/RunningTaskResource.java b/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/RunningTaskResource.java
new file mode 100644
index 00000000..c66a10d9
--- /dev/null
+++ b/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/RunningTaskResource.java
@@ -0,0 +1,129 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Gluster, Inc. <http://www.gluster.com>
+ * This file is part of Gluster Management Console.
+ *
+ * Gluster Management Console is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Gluster Management Console is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *******************************************************************************/
+package com.gluster.storage.management.server.resources;
+
+import static com.gluster.storage.management.core.constants.RESTConstants.PATH_PARAM_RUNNING_TASKS;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import javax.ws.rs.FormParam;
+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.Response;
+import com.gluster.storage.management.core.model.RunningTask;
+import com.gluster.storage.management.core.model.RunningTaskListResponse;
+import com.gluster.storage.management.core.model.Status;
+import com.gluster.storage.management.core.model.RunningTaskStatus;
+import com.gluster.storage.management.server.runningtasks.managers.RunningTaskManager;
+
+@Component
+@Path(PATH_PARAM_RUNNING_TASKS)
+public class RunningTaskResource {
+
+ @GET
+ @Produces(MediaType.TEXT_XML)
+ public RunningTaskListResponse getRunningTasks() {
+
+ RunningTaskStatus status = new RunningTaskStatus();
+ List<RunningTask> runningTasks = new ArrayList<RunningTask>();
+
+ status.setCode(Status.STATUS_CODE_RUNNING);
+ status.setPercentageSupported(false);
+
+ // Volume rebalance
+ RunningTask task = new RunningTask();
+ task.setId("0001");
+ task.setType("VolumeRebalance");
+ task.setReference("");
+ task.setDescription("Volume [Volume1] rebalance is running");
+ 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.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.setStatus(status);
+ runningTasks.add(task);
+
+ // FormatDisk
+ task = new RunningTask();
+ task.setId("0004");
+ task.setType("FormatDisk");
+ task.setReference("");
+ task.setDescription("Volume [vol1] rebalance is running");
+ 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";
+ Class managerClass;
+ RunningTaskManager manager = null;
+ try {
+ managerClass = Class.forName(managerClassName);
+ manager = (RunningTaskManager) managerClass.newInstance();
+ } catch (ClassNotFoundException e) {
+ e.printStackTrace();
+ } catch (InstantiationException e) {
+ e.printStackTrace();
+ } catch (IllegalAccessException e) {
+ e.printStackTrace();
+ }
+
+ // TODO: set form params on the manager
+ Map params = null;
+ manager.setFormParams(params);
+ manager.start();
+ return null;
+ }
+
+ // TODO Remove the test script for production
+ public static void main(String[] args) {
+ RunningTaskResource rt = new RunningTaskResource();
+ RunningTaskListResponse tasks = rt.getRunningTasks();
+ List<RunningTask> runningTasks = tasks.getRunningTasks();
+ for( RunningTask x : runningTasks) {
+ System.out.println( x.getId() + " : " + x.getType() + " : " + x.getDescription() );
+ }
+ }
+}
+
diff --git a/com.gluster.storage.management.server/src/com/gluster/storage/management/server/runningtasks/managers/FormatDiskManager.java b/com.gluster.storage.management.server/src/com/gluster/storage/management/server/runningtasks/managers/FormatDiskManager.java
new file mode 100644
index 00000000..37cc22f6
--- /dev/null
+++ b/com.gluster.storage.management.server/src/com/gluster/storage/management/server/runningtasks/managers/FormatDiskManager.java
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Gluster, Inc. <http://www.gluster.com>
+ * This file is part of Gluster Management Console.
+ *
+ * Gluster Management Console is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Gluster Management Console is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *******************************************************************************/
+package com.gluster.storage.management.server.runningtasks.managers;
+
+import java.util.Map;
+
+import com.gluster.storage.management.core.model.Status;
+import com.gluster.storage.management.core.model.RunningTaskStatus;
+
+public class FormatDiskManager implements RunningTaskManager {
+
+
+ @Override
+ public String getId() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public RunningTaskStatus start() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public RunningTaskStatus stop() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public RunningTaskStatus pause() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public RunningTaskStatus resume() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public void setFormParams(Map params) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public RunningTaskStatus getStatus() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
diff --git a/com.gluster.storage.management.server/src/com/gluster/storage/management/server/runningtasks/managers/MigrateDiskManager.java b/com.gluster.storage.management.server/src/com/gluster/storage/management/server/runningtasks/managers/MigrateDiskManager.java
new file mode 100644
index 00000000..97916abe
--- /dev/null
+++ b/com.gluster.storage.management.server/src/com/gluster/storage/management/server/runningtasks/managers/MigrateDiskManager.java
@@ -0,0 +1,50 @@
+package com.gluster.storage.management.server.runningtasks.managers;
+
+import java.util.Map;
+
+import com.gluster.storage.management.core.model.RunningTaskStatus;
+
+public class MigrateDiskManager implements RunningTaskManager {
+
+ @Override
+ public String getId() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public RunningTaskStatus start() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public RunningTaskStatus stop() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public RunningTaskStatus pause() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public RunningTaskStatus resume() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public void setFormParams(Map params) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public RunningTaskStatus getStatus() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+}
diff --git a/com.gluster.storage.management.server/src/com/gluster/storage/management/server/runningtasks/managers/RunningTaskManager.java b/com.gluster.storage.management.server/src/com/gluster/storage/management/server/runningtasks/managers/RunningTaskManager.java
new file mode 100755
index 00000000..a21c6b81
--- /dev/null
+++ b/com.gluster.storage.management.server/src/com/gluster/storage/management/server/runningtasks/managers/RunningTaskManager.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Gluster, Inc. <http://www.gluster.com>
+ * This file is part of Gluster Management Console.
+ *
+ * Gluster Management Console is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Gluster Management Console is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *******************************************************************************/
+
+package com.gluster.storage.management.server.runningtasks.managers;
+
+import java.util.Map;
+
+import com.gluster.storage.management.core.model.Status;
+import com.gluster.storage.management.core.model.RunningTaskStatus;
+
+public interface RunningTaskManager {
+
+ public String getId();
+
+ public RunningTaskStatus start();
+
+ public RunningTaskStatus stop();
+
+ public RunningTaskStatus pause();
+
+ public RunningTaskStatus resume();
+
+ public RunningTaskStatus getStatus();
+
+ @SuppressWarnings("rawtypes")
+ public void setFormParams(Map params);
+
+}
diff --git a/com.gluster.storage.management.server/src/com/gluster/storage/management/server/runningtasks/managers/VolumeRebalanceManager.java b/com.gluster.storage.management.server/src/com/gluster/storage/management/server/runningtasks/managers/VolumeRebalanceManager.java
new file mode 100644
index 00000000..01a5dc25
--- /dev/null
+++ b/com.gluster.storage.management.server/src/com/gluster/storage/management/server/runningtasks/managers/VolumeRebalanceManager.java
@@ -0,0 +1,50 @@
+package com.gluster.storage.management.server.runningtasks.managers;
+
+import java.util.Map;
+
+import com.gluster.storage.management.core.model.RunningTaskStatus;
+
+public class VolumeRebalanceManager implements RunningTaskManager {
+
+ @Override
+ public String getId() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public RunningTaskStatus start() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public RunningTaskStatus stop() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public RunningTaskStatus pause() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public RunningTaskStatus resume() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public void setFormParams(Map params) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public RunningTaskStatus getStatus() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+}