summaryrefslogtreecommitdiffstats
path: root/src/com.gluster.storage.management.server
diff options
context:
space:
mode:
authorDhandapani <dhandapani@gluster.com>2011-07-06 13:05:09 +0530
committerDhandapani <dhandapani@gluster.com>2011-07-06 13:05:09 +0530
commit4c3e0ccd5578d994f338f38cae204f92062c48b7 (patch)
treef6f14a6d01d630e2a52495f5ac2882453974f9a9 /src/com.gluster.storage.management.server
parentd4af6dafe81c47570f1c377b4b01182ab041e9f9 (diff)
parentc29f95b551b72618f2e33b819d65777f984d2c03 (diff)
Merge branch 'master' of git@github.com:gluster/console
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/v1_0/TasksResource.java13
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/DiskMigrationStatusTask.java43
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/MigrateBrickTask.java10
-rw-r--r--src/com.gluster.storage.management.server/src/spring/gluster-server-base.xml6
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" />