diff options
| author | Shireesh Anjal <shireesh@gluster.com> | 2011-03-23 19:06:42 +0530 |
|---|---|---|
| committer | Shireesh Anjal <shireesh@gluster.com> | 2011-03-23 19:07:20 +0530 |
| commit | 195695e266bc0cdd00c183760d0501e0d6c9114a (patch) | |
| tree | 8a1b8806536ee387eaf36c4d5ca02c2937343bb5 /com.gluster.storage.management.server | |
| parent | 1cff1362e9b99fddff779872dd5bd3a83a44a688 (diff) | |
Running tasks framework
Diffstat (limited to 'com.gluster.storage.management.server')
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; + } +} |
