diff options
| author | Dhandapani <dhandapani@gluster.com> | 2011-07-06 13:05:09 +0530 |
|---|---|---|
| committer | Dhandapani <dhandapani@gluster.com> | 2011-07-06 13:05:09 +0530 |
| commit | 4c3e0ccd5578d994f338f38cae204f92062c48b7 (patch) | |
| tree | f6f14a6d01d630e2a52495f5ac2882453974f9a9 /src/com.gluster.storage.management.server | |
| parent | d4af6dafe81c47570f1c377b4b01182ab041e9f9 (diff) | |
| parent | c29f95b551b72618f2e33b819d65777f984d2c03 (diff) | |
Merge branch 'master' of git@github.com:gluster/console
Diffstat (limited to 'src/com.gluster.storage.management.server')
4 files changed, 66 insertions, 6 deletions
diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/TasksResource.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/TasksResource.java index 777565eb..1acba6b7 100644 --- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/TasksResource.java +++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/TasksResource.java @@ -42,6 +42,8 @@ import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; +import org.springframework.stereotype.Component; + import com.gluster.storage.management.core.constants.RESTConstants; import com.gluster.storage.management.core.exceptions.GlusterRuntimeException; import com.gluster.storage.management.core.exceptions.GlusterValidationException; @@ -52,6 +54,7 @@ import com.sun.jersey.spi.resource.Singleton; @Path(RESOURCE_PATH_CLUSTERS + "/{" + PATH_PARAM_CLUSTER_NAME + "}/" + RESOURCE_TASKS) @Singleton +@Component public class TasksResource extends AbstractResource { private Map<String, Task> tasksMap = new HashMap<String, Task>(); @@ -84,6 +87,16 @@ public class TasksResource extends AbstractResource { return null; } + public List<Task> getAllTasks() { + List<Task> tasks = new ArrayList<Task>(); + for (Map.Entry<String, Task> entry : tasksMap.entrySet()) { + checkTaskStatus(entry.getKey()); + tasks.add( (Task) entry.getValue()); + } + return tasks; + } + + @GET @Produces(MediaType.APPLICATION_XML) public Response getTasks() { diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/DiskMigrationStatusTask.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/DiskMigrationStatusTask.java new file mode 100644 index 00000000..ccfd58be --- /dev/null +++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/DiskMigrationStatusTask.java @@ -0,0 +1,43 @@ +/** + * DiskMigrationStatusTask.java + * + * 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.tasks; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import com.gluster.storage.management.core.model.TaskInfo.TASK_TYPE; +import com.gluster.storage.management.server.resources.v1_0.TasksResource; + +@Component +public class DiskMigrationStatusTask { + + @Autowired + private TasksResource tasksResource; + + public void checkMigrationStatus() { + for (Task task : tasksResource.getAllTasks() ) { + if (task.getType() == TASK_TYPE.BRICK_MIGRATE && ((MigrateBrickTask) task).getAutoCommit()) { + tasksResource.getTaskStatus( task.getId()); + } + } + } + +} diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/MigrateBrickTask.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/MigrateBrickTask.java index 3961c427..af5e657a 100644 --- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/MigrateBrickTask.java +++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/MigrateBrickTask.java @@ -23,6 +23,8 @@ package com.gluster.storage.management.server.tasks; import java.util.concurrent.ExecutionException; import org.apache.derby.iapi.sql.execute.ExecPreparedStatement; +import org.springframework.context.ApplicationContext; +import org.springframework.web.context.ContextLoader; import com.gluster.storage.management.core.exceptions.ConnectionException; import com.gluster.storage.management.core.exceptions.GlusterRuntimeException; @@ -43,8 +45,6 @@ public class MigrateBrickTask extends Task { private Boolean autoCommit; private GlusterUtil glusterUtil = new GlusterUtil(); - private SshUtil sshUtil = new SshUtil(); - public String getFromBrick() { return fromBrick; } @@ -78,10 +78,6 @@ public class MigrateBrickTask extends Task { taskInfo.setName(getId()); } - public MigrateBrickTask(ClusterService clusterService, String clusterName, TaskInfo info) { - super(clusterService, clusterName, info); - } - @Override public String getId() { return new String(Base64.encode(clusterName + "-" + taskInfo.getType() + "-" + taskInfo.getReference() + "-" + fromBrick + "-" @@ -99,6 +95,8 @@ public class MigrateBrickTask extends Task { } private void startMigration(String onlineServerName) { + ApplicationContext ctx = ContextLoader.getCurrentWebApplicationContext(); + glusterUtil = ctx.getBean(GlusterUtil.class); ProcessResult processResult = glusterUtil.executeBrickMigration(onlineServerName, getTaskInfo().getReference(), getFromBrick(), getToBrick(), "start"); if (processResult.getOutput().trim().matches(".*started successfully$")) { diff --git a/src/com.gluster.storage.management.server/src/spring/gluster-server-base.xml b/src/com.gluster.storage.management.server/src/spring/gluster-server-base.xml index 700d996f..0a000732 100644 --- a/src/com.gluster.storage.management.server/src/spring/gluster-server-base.xml +++ b/src/com.gluster.storage.management.server/src/spring/gluster-server-base.xml @@ -16,6 +16,12 @@ <task:scheduled ref="serverDiscoveryTask" method="discoverServers" fixed-delay="60000" /> </task:scheduled-tasks> + <!-- This task keeps checking status of disk migration tasks (wherever auto-commit is set to true) + so that auto-commit can be performed as soon as the migration is complete --> + <task:scheduled-tasks> + <task:scheduled ref="diskMigrationStatusTask" method="checkMigrationStatus" fixed-delay="60000" /> + </task:scheduled-tasks> + <!-- Cluster environment. Valid values: vmware, aws, baremetal --> <bean id="environment" class="java.lang.String"> <constructor-arg value="vmware" /> |
