From d61fa3b93293c6323c29006c97a88968fa2843bf Mon Sep 17 00:00:00 2001 From: Selvasundaram Date: Mon, 20 Jun 2011 15:55:58 +0530 Subject: Task clients and migrate disk UI updates in the summary views --- .../storage/management/client/AbstractClient.java | 24 ++-- .../management/client/GlusterDataModelManager.java | 16 +-- .../management/client/RunningTaskClient.java | 26 ---- .../storage/management/client/TasksClient.java | 96 +++++++++++++++ .../storage/management/client/VolumesClient.java | 33 +---- .../management/core/constants/RESTConstants.java | 12 +- .../storage/management/core/model/Cluster.java | 14 ++- .../storage/management/core/model/RunningTask.java | 84 ------------- .../management/core/model/RunningTaskStatus.java | 41 ------- .../core/response/RunningTaskListResponse.java | 46 ------- .../gluster/storage/management/gui/IImageKeys.java | 2 +- .../management/gui/views/ClusterSummaryView.java | 18 ++- .../management/gui/views/VolumesSummaryView.java | 33 +++-- .../server/resources/RunningTaskResource.java | 134 --------------------- .../management/server/resources/TasksResource.java | 14 ++- .../server/resources/VolumesResource.java | 8 +- .../runningtasks/managers/FormatDiskManager.java | 71 ----------- .../runningtasks/managers/MigrateDiskManager.java | 50 -------- .../runningtasks/managers/RunningTaskManager.java | 44 ------- .../managers/VolumeRebalanceManager.java | 50 -------- 20 files changed, 179 insertions(+), 637 deletions(-) delete mode 100644 src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/RunningTaskClient.java create mode 100644 src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/TasksClient.java delete mode 100644 src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/RunningTask.java delete mode 100644 src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/RunningTaskStatus.java delete mode 100644 src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/RunningTaskListResponse.java delete mode 100644 src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/RunningTaskResource.java delete mode 100644 src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/runningtasks/managers/FormatDiskManager.java delete mode 100644 src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/runningtasks/managers/MigrateDiskManager.java delete mode 100755 src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/runningtasks/managers/RunningTaskManager.java delete mode 100644 src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/runningtasks/managers/VolumeRebalanceManager.java diff --git a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/AbstractClient.java b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/AbstractClient.java index e8df26cb..5a1a28a7 100644 --- a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/AbstractClient.java +++ b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/AbstractClient.java @@ -42,7 +42,8 @@ public abstract class AbstractClient { * This constructor will work only after the data model manager has been initialized. */ public AbstractClient() { - this(GlusterDataModelManager.getInstance().getSecurityToken(), GlusterDataModelManager.getInstance().getClusterName()); + this(GlusterDataModelManager.getInstance().getSecurityToken(), GlusterDataModelManager.getInstance() + .getClusterName()); } /** @@ -55,8 +56,8 @@ public abstract class AbstractClient { public AbstractClient(String securityToken, String clusterName) { this.clusterName = clusterName; setSecurityToken(securityToken); - - SSLContext context = initializeSSLContext(); + + SSLContext context = initializeSSLContext(); DefaultClientConfig config = createClientConfig(context); // this must be after setting clusterName as sub-classes may refer to cluster name in the getResourcePath method @@ -84,16 +85,16 @@ public abstract class AbstractClient { SSLContext context = null; try { context = SSLContext.getInstance(PROTOCOL_TLS); - + KeyStore keyStore = KeyStore.getInstance(KEYSTORE_TYPE_JKS); keyStore.load(loadResource(TRUSTED_KEYSTORE), TRUSTED_KEYSTORE_ACCESS.toCharArray()); KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(ALGORITHM_SUNX509); keyManagerFactory.init(keyStore, TRUSTED_KEYSTORE_ACCESS.toCharArray()); - - TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(ALGORITHM_SUNX509); - trustManagerFactory.init(keyStore); - + + TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(ALGORITHM_SUNX509); + trustManagerFactory.init(keyStore); + context.init(keyManagerFactory.getKeyManagers(), trustManagerFactory.getTrustManagers(), null); } catch (Exception e) { throw new GlusterRuntimeException( @@ -101,7 +102,7 @@ public abstract class AbstractClient { } return context; } - + private InputStream loadResource(String resourcePath) { return this.getClass().getClassLoader().getResourceAsStream(resourcePath); } @@ -286,6 +287,11 @@ public abstract class AbstractClient { .header(HTTP_HEADER_AUTH, authHeader).accept(MediaType.TEXT_XML).put(responseClass); } + protected Object putRequest(String subResourceName, Class responseClass, MultivaluedMap queryParams) { + return resource.path(subResourceName).queryParams(queryParams).type(MediaType.APPLICATION_FORM_URLENCODED_TYPE) + .header(HTTP_HEADER_AUTH, authHeader).accept(MediaType.TEXT_XML).put(responseClass); + } + /** * Submits given object to the resource and returns the object received as response * diff --git a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java index e5d58ca4..15ee1adc 100644 --- a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java +++ b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java @@ -33,13 +33,13 @@ import com.gluster.storage.management.core.model.Event.EVENT_TYPE; import com.gluster.storage.management.core.model.GlusterDataModel; import com.gluster.storage.management.core.model.GlusterServer; import com.gluster.storage.management.core.model.Server; +import com.gluster.storage.management.core.model.TaskInfo; import com.gluster.storage.management.core.model.Volume; import com.gluster.storage.management.core.model.Volume.TRANSPORT_TYPE; import com.gluster.storage.management.core.model.Volume.VOLUME_STATUS; import com.gluster.storage.management.core.model.Volume.VOLUME_TYPE; import com.gluster.storage.management.core.model.VolumeOptionInfo; import com.gluster.storage.management.core.response.GlusterServerListResponse; -import com.gluster.storage.management.core.response.RunningTaskListResponse; import com.gluster.storage.management.core.response.ServerListResponse; import com.gluster.storage.management.core.response.VolumeListResponse; import com.gluster.storage.management.core.response.VolumeOptionInfoListResponse; @@ -94,7 +94,7 @@ public class GlusterDataModelManager { initializeAutoDiscoveredServers(cluster); // initializeDisks(); - initializeRunningTasks(cluster); + initializeTasks(cluster); initializeAlerts(cluster); initializeVolumeOptionsDefaults(); @@ -136,12 +136,14 @@ public class GlusterDataModelManager { this.volumeOptionsDefaults = response.getOptions(); } - public void initializeRunningTasks(Cluster cluster) { - RunningTaskListResponse runningTaskResponse = new RunningTaskClient(cluster.getName()).getRunningTasks(); - if (!runningTaskResponse.getStatus().isSuccess()) { - throw new GlusterRuntimeException(runningTaskResponse.getStatus().getMessage()); + public void initializeTasks(Cluster cluster) { + try { + List taskInfoList = new TasksClient(cluster.getName()). getAllTasks(); + cluster.setTaskInfoList(taskInfoList); + } catch(GlusterRuntimeException e) { + //TODO show the error dialog + //showErrorDialog( "Tasks", "Fetching tasks failed! Error: [" + e.getMessage() + "]"); } - cluster.setRunningTasks(runningTaskResponse.getRunningTasks()); } public void initializeAlerts(Cluster cluster) { diff --git a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/RunningTaskClient.java b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/RunningTaskClient.java deleted file mode 100644 index cfeddcc2..00000000 --- a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/RunningTaskClient.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.gluster.storage.management.client; - -import static com.gluster.storage.management.core.constants.RESTConstants.RESOURCE_PATH_CLUSTERS; -import static com.gluster.storage.management.core.constants.RESTConstants.RESOURCE_RUNNING_TASKS; - -import com.gluster.storage.management.core.response.RunningTaskListResponse; - -public class RunningTaskClient extends AbstractClient { - - public RunningTaskClient(String clusterName) { - super(clusterName); - } - - public RunningTaskClient(String securityToken, String clusterName) { - super(securityToken, clusterName); - } - - @Override - public String getResourcePath() { - return RESOURCE_PATH_CLUSTERS + "/" + clusterName + "/" + RESOURCE_RUNNING_TASKS; - } - - public RunningTaskListResponse getRunningTasks() { - return (RunningTaskListResponse) fetchResource(RunningTaskListResponse.class); - } -} diff --git a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/TasksClient.java b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/TasksClient.java new file mode 100644 index 00000000..c1cfd9bd --- /dev/null +++ b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/TasksClient.java @@ -0,0 +1,96 @@ +/** + * tasksClient.java + * + * Copyright (c) 2011 Gluster, Inc. + * 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 + * . + */ +package com.gluster.storage.management.client; + +import java.util.List; + +import javax.ws.rs.core.MultivaluedMap; + +import com.gluster.storage.management.core.constants.RESTConstants; +import com.gluster.storage.management.core.exceptions.GlusterRuntimeException; +import com.gluster.storage.management.core.model.Status; +import com.gluster.storage.management.core.model.TaskInfo; +import com.gluster.storage.management.core.response.TaskListResponse; +import com.gluster.storage.management.core.response.TaskResponse; +import com.sun.jersey.api.representation.Form; +import com.sun.jersey.core.util.MultivaluedMapImpl; + +public class TasksClient extends AbstractClient { + + public TasksClient(String clusterName) { + super(clusterName); + } + + public TasksClient(String securityToken,String clusterName) { + super(securityToken, clusterName); + } + + @Override + public String getResourcePath() { + return RESTConstants.RESOURCE_PATH_CLUSTERS + "/" + clusterName + "/" + RESTConstants.RESOURCE_TASKS + "/"; + } + + @SuppressWarnings("unchecked") + public List getAllTasks() { // TaskListResponse get only the list of taskInfo not list of Tasks + TaskListResponse response = (TaskListResponse) fetchResource(TaskListResponse.class); + if (response.getStatus().isSuccess()) { + return (List) response.getData(); + } else { + throw new GlusterRuntimeException("Exception on fetching tasks [" + response.getStatus().getMessage() + "]"); + } + } + + // see startMigration @ VolumesClient + public TaskResponse pauseMigration(String taskId) { + MultivaluedMap queryParams = new MultivaluedMapImpl(); + queryParams.add(RESTConstants.QUERY_PARAM_TASK_OPERATION, RESTConstants.TASK_PAUSE); + + return (TaskResponse) putRequest( taskId, TaskResponse.class, queryParams); + } + + public TaskResponse resumeMigration(String taskId) { + MultivaluedMap queryParams = new MultivaluedMapImpl(); + queryParams.add(RESTConstants.QUERY_PARAM_TASK_OPERATION, RESTConstants.TASK_RESUME); + + return (TaskResponse) putRequest( taskId, TaskResponse.class, queryParams); + } + + public TaskResponse stopMigration(String taskId) { + MultivaluedMap queryParams = new MultivaluedMapImpl(); + queryParams.add(RESTConstants.QUERY_PARAM_TASK_OPERATION, RESTConstants.TASK_STOP); + + return (TaskResponse) putRequest( taskId, TaskResponse.class, queryParams); + } + + public TaskResponse statusMigration(String taskId) { + MultivaluedMap queryParams = new MultivaluedMapImpl(); + queryParams.add(RESTConstants.QUERY_PARAM_TASK_OPERATION, RESTConstants.TASK_STATUS); + + return (TaskResponse) putRequest( taskId, Status.class, queryParams); + } + + public TaskInfo deleteMigration(String taskId) { + MultivaluedMap queryParams = new MultivaluedMapImpl(); + queryParams.add(RESTConstants.QUERY_PARAM_TASK_OPERATION, RESTConstants.TASK_DELETE); + + return (TaskInfo) putRequest( taskId, Status.class, queryParams); + } +} diff --git a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/VolumesClient.java b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/VolumesClient.java index 3b1a4dc0..124e37ea 100644 --- a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/VolumesClient.java +++ b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/VolumesClient.java @@ -71,11 +71,11 @@ public class VolumesClient extends AbstractClient { } public Status startVolume(String volumeName) { - return performOperation(volumeName, RESTConstants.FORM_PARAM_VALUE_START); + return performOperation(volumeName, RESTConstants.TASK_START); } public Status stopVolume(String volumeName) { - return performOperation(volumeName, RESTConstants.FORM_PARAM_VALUE_STOP); + return performOperation(volumeName, RESTConstants.TASK_STOP); } public Status setVolumeOption(String volume, String key, String value) { @@ -196,37 +196,12 @@ public class VolumesClient extends AbstractClient { Form form = new Form(); form.add(RESTConstants.FORM_PARAM_SOURCE, brickFrom); form.add(RESTConstants.FORM_PARAM_TARGET, brickTo); - form.add(RESTConstants.FORM_PARAM_OPERATION, RESTConstants.FORM_PARAM_VALUE_START); + form.add(RESTConstants.FORM_PARAM_OPERATION, RESTConstants.TASK_START); return (Status) putRequest( volumeName + "/" + RESTConstants.RESOURCE_BRICKS, Status.class, form); } - public Status stopMigration(String volumeName, String brickFrom, String brickkTo) { - Form form = new Form(); - form.add(RESTConstants.FORM_PARAM_SOURCE, brickFrom); - form.add(RESTConstants.FORM_PARAM_TARGET, brickkTo); - form.add(RESTConstants.FORM_PARAM_OPERATION, RESTConstants.FORM_PARAM_VALUE_STOP); - - return (Status) putRequest( volumeName + "/" + RESTConstants.RESOURCE_BRICKS, Status.class, form); - } - - public Status pauseMigration(String volumeName, String brickFrom, String brickTo) { - Form form = new Form(); - form.add(RESTConstants.FORM_PARAM_SOURCE, brickFrom); - form.add(RESTConstants.FORM_PARAM_TARGET, brickTo); - form.add(RESTConstants.FORM_PARAM_OPERATION, RESTConstants.FORM_PARAM_VALUE_PAUSE); - - return (Status) putRequest( volumeName + "/" + RESTConstants.RESOURCE_BRICKS, Status.class, form); - } - - public Status statusMigration(String volumeName, String brickFrom, String brickTo) { - Form form = new Form(); - form.add(RESTConstants.FORM_PARAM_SOURCE, brickFrom); - form.add(RESTConstants.FORM_PARAM_TARGET, brickTo); - form.add(RESTConstants.FORM_PARAM_OPERATION, RESTConstants.FORM_PARAM_VALUE_STATUS); - - return (Status) putRequest( volumeName + "/" + RESTConstants.RESOURCE_BRICKS, Status.class, form); - } + public static void main(String[] args) { UsersClient usersClient = new UsersClient(); diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/constants/RESTConstants.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/constants/RESTConstants.java index 40f13fbe..9399fb2b 100644 --- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/constants/RESTConstants.java +++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/constants/RESTConstants.java @@ -36,18 +36,22 @@ public class RESTConstants { public static final String RESOURCE_DOWNLOAD = "download"; public static final String RESOURCE_BRICKS = "bricks"; public static final String RESOURCE_DISKS = "disks"; - public static final String RESOURCE_RUNNING_TASKS = "runningtasks"; public static final String RESOURCE_ALERTS = "alerts"; public static final String RESOURCE_SERVERS = "servers"; public static final String RESOURCE_TASKS = "tasks"; + + public static final String TASK_START = "start"; + public static final String TASK_PAUSE = "pause"; + public static final String TASK_RESUME = "resume"; + public static final String TASK_STOP = "stop"; + public static final String TASK_STATUS = "status"; + public static final String TASK_DELETE = "delete"; + public static final String FORM_PARAM_CLUSTER_NAME = "clusterName"; public static final String FORM_PARAM_SERVER_NAME = "serverName"; public static final String FORM_PARAM_DISKS = "disks"; public static final String FORM_PARAM_OPERATION = "operation"; - public static final String FORM_PARAM_VALUE_START = "start"; - public static final String FORM_PARAM_VALUE_STOP = "stop"; - public static final String FORM_PARAM_VALUE_PAUSE = "pause"; public static final String FORM_PARAM_VALUE_STATUS = "status"; public static final String FORM_PARAM_OPTION_KEY = "key"; public static final String FORM_PARAM_OPTION_VALUE = "value"; diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Cluster.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Cluster.java index adeb72dc..0c094e99 100644 --- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Cluster.java +++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Cluster.java @@ -28,7 +28,7 @@ public class Cluster extends Entity { List servers = new ArrayList(); List discoveredServers = new ArrayList(); List volumes = new ArrayList(); - List runningTasks = new ArrayList(); + List taskInfoList = new ArrayList(); List alerts = new ArrayList(); public Cluster() { @@ -104,12 +104,16 @@ public class Cluster extends Entity { setVolumes(volumes); } - public List getRunningTasks() { - return runningTasks; + public List getTaskInfoList() { + return taskInfoList; } - public void setRunningTasks(List runningTasks) { - this.runningTasks = runningTasks; + public void setTaskInfoList(List taskInfoList) { + this.taskInfoList = taskInfoList; + } + + public void addTaskInfo(TaskInfo taskInfo) { + this.taskInfoList.add(taskInfo); } public List getAlerts() { diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/RunningTask.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/RunningTask.java deleted file mode 100644 index 773137bb..00000000 --- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/RunningTask.java +++ /dev/null @@ -1,84 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011 Gluster, Inc. - * 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 - * . - *******************************************************************************/ -package com.gluster.storage.management.core.model; - -import javax.xml.bind.annotation.XmlRootElement; - -@XmlRootElement -public class RunningTask { - public enum TASK_TYPES { - DISK_FORMAT, BRICK_MIGRATE, VOLUME_REBALANCE - }; - - public String[] TASK_TYPE_STR = { "Formatting Disk", "Brick Migration", "Volume Rebalance" }; - - protected String id; - protected TASK_TYPES type; - protected String reference; // Server name / Volume name / Disk name - protected String taskInfo; - protected RunningTaskStatus status; // TODO redefine - - public RunningTask() { - - } - - public String getTaskType(TASK_TYPES type) { - return TASK_TYPE_STR[type.ordinal()]; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public TASK_TYPES getType() { - return type; - } - - public void setType(TASK_TYPES type) { - this.type = type; - } - - public String getReference() { - return reference; - } - - public void setReference(String reference) { - this.reference = reference; - } - - public String getTaskInfo() { - return taskInfo; - } - - public void setTaskInfo(String taskInfo) { - this.taskInfo = taskInfo; - } - - public RunningTaskStatus getStatus() { - return status; - } - - public void setStatus(RunningTaskStatus status) { - this.status = status; - } -} diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/RunningTaskStatus.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/RunningTaskStatus.java deleted file mode 100644 index 7ffeb4b8..00000000 --- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/RunningTaskStatus.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.gluster.storage.management.core.model; - -public class RunningTaskStatus extends Status { - - private String status; - private boolean isPercentageSupported; - private float percentCompleted; - private String description; - - public String getStatus() { - return status; - } - - public void setStatus(String status) { - this.status = status; - } - - public boolean isPercentageSupported() { - return isPercentageSupported; - } - - public void setPercentageSupported(boolean isPercentageSupported) { - this.isPercentageSupported = isPercentageSupported; - } - - public float getPercentCompleted() { - return percentCompleted; - } - - public void getPercentCompleted(float percentCompleted) { - this.percentCompleted = percentCompleted; - } - - public void setDescription(String description) { - this.description = description; - } - - public String getDescription() { - return description; - } -} \ No newline at end of file diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/RunningTaskListResponse.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/RunningTaskListResponse.java deleted file mode 100644 index 73dc074a..00000000 --- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/RunningTaskListResponse.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.gluster.storage.management.core.response; - -import java.util.ArrayList; -import java.util.List; - -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlElementWrapper; -import javax.xml.bind.annotation.XmlRootElement; - -import com.gluster.storage.management.core.model.RunningTask; -import com.gluster.storage.management.core.model.Status; - -@XmlRootElement(name = "response") -public class RunningTaskListResponse extends AbstractResponse { - private List runningTasks = new ArrayList(); - - public RunningTaskListResponse() { - - } - - - public RunningTaskListResponse(Status status, List runningTasks) { - setStatus(status); - setRunningTasks(runningTasks); - } - - @XmlElementWrapper(name = "runningTasks") - @XmlElement(name = "runningTask", type=RunningTask.class) - public List getRunningTasks() { - return runningTasks; - } - - /** - * @param runningTasks - * the runningTasks to set - */ - public void setRunningTasks(List runningTasks) { - this.runningTasks = runningTasks; - } - - @Override - public Object getData() { - return getRunningTasks(); - } - -} diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/IImageKeys.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/IImageKeys.java index d11decb6..65124bf9 100644 --- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/IImageKeys.java +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/IImageKeys.java @@ -51,7 +51,7 @@ public interface IImageKeys { public static final String ARROW_UP = "icons/arrow-up.png"; public static final String ARROW_DOWN = "icons/arrow-down.png"; public static final String VOLUME_REBALANCE = "icons/volume-rebalance.png"; - public static final String DISK_MIGRATE = "icons/disk-migrate.png"; + public static final String BRICK_MIGRATE = "icons/disk-migrate.png"; public static final String LOW_DISK_SPACE = "icons/disk.png"; public static final String DISK_OFFLINE = "icons/status-offline.png"; diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/ClusterSummaryView.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/ClusterSummaryView.java index e1e25e51..ef14c197 100644 --- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/ClusterSummaryView.java +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/ClusterSummaryView.java @@ -46,8 +46,8 @@ import com.gluster.storage.management.core.model.EntityGroup; import com.gluster.storage.management.core.model.GlusterDataModel; import com.gluster.storage.management.core.model.GlusterServer; import com.gluster.storage.management.core.model.GlusterServer.SERVER_STATUS; -import com.gluster.storage.management.core.model.RunningTask; import com.gluster.storage.management.core.model.Server; +import com.gluster.storage.management.core.model.TaskInfo; import com.gluster.storage.management.core.model.Volume; import com.gluster.storage.management.core.model.Volume.VOLUME_STATUS; import com.gluster.storage.management.core.utils.NumberUtil; @@ -276,25 +276,23 @@ public class ClusterSummaryView extends ViewPart { private void createRunningTasksSection() { Composite section = guiHelper.createSection(form, toolkit, "Running Tasks", null, 1, false); - List runningTasks = cluster.getRunningTasks(); - - for (RunningTask task : runningTasks) { - addRunningTaskLabel(section, task); + for (TaskInfo taskInfo : cluster.getTaskInfoList()) { + addTaskLabel(section, taskInfo); } } - private void addRunningTaskLabel(Composite section, RunningTask task) { - // Task related to Volumes context + private void addTaskLabel(Composite section, TaskInfo taskInfo) { + //TODO: create link and open the task progress view CLabel lblAlert = new CLabel(section, SWT.NONE); - lblAlert.setText(task.getTaskInfo()); + lblAlert.setText(taskInfo.getDescription()); Image taskImage = null; - switch(task.getType()) { + switch(taskInfo.getType()) { case DISK_FORMAT: taskImage = guiHelper.getImage(IImageKeys.DISK); break; case BRICK_MIGRATE: - taskImage = guiHelper.getImage(IImageKeys.DISK_MIGRATE); + taskImage = guiHelper.getImage(IImageKeys.BRICK_MIGRATE); break; case VOLUME_REBALANCE: taskImage = guiHelper.getImage(IImageKeys.VOLUME_REBALANCE); diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumesSummaryView.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumesSummaryView.java index 990e569c..311014a0 100644 --- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumesSummaryView.java +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumesSummaryView.java @@ -33,8 +33,10 @@ import org.eclipse.ui.part.ViewPart; import com.gluster.storage.management.client.GlusterDataModelManager; import com.gluster.storage.management.core.model.Alert; +import com.gluster.storage.management.core.model.Cluster; import com.gluster.storage.management.core.model.EntityGroup; -import com.gluster.storage.management.core.model.RunningTask; +import com.gluster.storage.management.core.model.Task.TASK_TYPE; +import com.gluster.storage.management.core.model.TaskInfo; import com.gluster.storage.management.core.model.Volume; import com.gluster.storage.management.core.model.Volume.VOLUME_STATUS; import com.gluster.storage.management.gui.IImageKeys; @@ -50,6 +52,7 @@ public class VolumesSummaryView extends ViewPart { private final FormToolkit toolkit = new FormToolkit(Display.getCurrent()); private ScrolledForm form; private EntityGroup volumes; + private Cluster cluster = GlusterDataModelManager.getInstance().getModel().getCluster(); private static final String ALERTS = "Alerts"; private static final String RUNNING_TASKS = "Running Tasks"; @@ -88,9 +91,8 @@ public class VolumesSummaryView extends ViewPart { private void createAlertsSection() { Composite section = guiHelper.createSection(form, toolkit, ALERTS, null, 1, false); - List alerts = GlusterDataModelManager.getInstance().getModel().getCluster().getAlerts(); - for (Alert alert : alerts) { + for (Alert alert : cluster.getAlerts()) { addAlertLabel(section, alert); } } @@ -108,25 +110,23 @@ public class VolumesSummaryView extends ViewPart { private void createRunningTasksSection() { Composite section = guiHelper.createSection(form, toolkit, RUNNING_TASKS, null, 1, false); - List runningTasks = GlusterDataModelManager.getInstance().getModel().getCluster() - .getRunningTasks(); - - for (RunningTask task : runningTasks) { - addRunningTaskLabel(section, task); + for (TaskInfo taskInfo : cluster.getTaskInfoList()) { + if (taskInfo.getType() == TASK_TYPE.BRICK_MIGRATE || taskInfo.getType() == TASK_TYPE.VOLUME_REBALANCE) + addTaskLabel(section, taskInfo); } } - private void addRunningTaskLabel(Composite section, RunningTask task) { + private void addTaskLabel(Composite section, TaskInfo taskInfo) { // Task related to Volumes context - if (task.getType() == RunningTask.TASK_TYPES.BRICK_MIGRATE - || task.getType() == RunningTask.TASK_TYPES.VOLUME_REBALANCE) { - if (task.getStatus().isPercentageSupported()) { - // TODO Progress bar + if (taskInfo.getType() == TASK_TYPE.BRICK_MIGRATE + || taskInfo.getType() == TASK_TYPE.VOLUME_REBALANCE) { + if (taskInfo.getStatus().isPercentageSupported()) { + // TODO Progress bar or link to progress view } CLabel lblAlert = new CLabel(section, SWT.NONE); - lblAlert.setText(task.getTaskInfo()); - lblAlert.setImage((task.getType() == RunningTask.TASK_TYPES.BRICK_MIGRATE) ? guiHelper - .getImage(IImageKeys.DISK_MIGRATE) : guiHelper.getImage(IImageKeys.VOLUME_REBALANCE)); + lblAlert.setText(taskInfo.getDescription()); + lblAlert.setImage((taskInfo.getType() == TASK_TYPE.BRICK_MIGRATE) ? guiHelper + .getImage(IImageKeys.BRICK_MIGRATE) : guiHelper.getImage(IImageKeys.VOLUME_REBALANCE)); lblAlert.redraw(); } } @@ -145,7 +145,6 @@ public class VolumesSummaryView extends ViewPart { createStatusChart(toolkit, section, values); } - @SuppressWarnings("unchecked") private int getVolumeCountByStatus(EntityGroup volumes, VOLUME_STATUS status) { int count = 0; for (Volume volume : (List) volumes.getEntities()) { 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 deleted file mode 100644 index c9eb0ecd..00000000 --- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/RunningTaskResource.java +++ /dev/null @@ -1,134 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011 Gluster, Inc. - * 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 - * . - *******************************************************************************/ -package com.gluster.storage.management.server.resources; - -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 static com.gluster.storage.management.core.constants.RESTConstants.*; -import com.gluster.storage.management.core.model.Response; -import com.gluster.storage.management.core.model.RunningTask; -import com.gluster.storage.management.core.model.RunningTaskStatus; -import com.gluster.storage.management.core.model.Status; -import com.gluster.storage.management.core.response.RunningTaskListResponse; -import com.gluster.storage.management.core.utils.StringUtil; -import com.gluster.storage.management.server.runningtasks.managers.RunningTaskManager; - -@Component -@Path(RESOURCE_PATH_CLUSTERS + "/{" + PATH_PARAM_CLUSTER_NAME + "}/" + RESOURCE_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) - public RunningTaskListResponse getRunningTasks() { - - RunningTaskStatus taskStatus = new RunningTaskStatus(); - List runningTasks = new ArrayList(); - - taskStatus.setCode(Status.STATUS_CODE_RUNNING); - taskStatus.setPercentageSupported(false); - - // Volume rebalance - RunningTask task = new RunningTask(); - task.setId("0001"); - task.setType(RunningTask.TASK_TYPES.VOLUME_REBALANCE); - task.setReference("Volume1"); - task.setTaskInfo(task.getTaskType(task.getType()) + " on [" + task.getReference() + "]"); - task.setStatus(taskStatus); - runningTasks.add(task); - - task = new RunningTask(); - task.setId("0002"); - task.setType(RunningTask.TASK_TYPES.VOLUME_REBALANCE); - task.setReference("Volume2"); - task.setTaskInfo(task.getTaskType(task.getType()) + " on [" + task.getReference() + "]"); - task.setStatus(taskStatus); - runningTasks.add(task); - - // MigrateDisk - task = new RunningTask(); - task.setId("0003"); - task.setType(RunningTask.TASK_TYPES.BRICK_MIGRATE); - task.setReference("Volume3:server1:sda1"); // Disk reference - task.setTaskInfo(task.getTaskType(task.getType()) + " for volume [" + task.getReference().split(":")[0] - + "] brick [" + task.getReference().split(":")[1] + ":" + task.getReference().split(":")[2] + "]"); - task.setStatus(taskStatus); - runningTasks.add(task); - - // FormatDisk - task = new RunningTask(); - task.setId("0004"); - task.setType(RunningTask.TASK_TYPES.DISK_FORMAT); - task.setReference("server1:sdb1"); // Disk reference - task.setTaskInfo(task.getTaskType(task.getType()) + " [" + task.getReference() + "]"); - taskStatus.setPercentageSupported(true); - taskStatus.getPercentCompleted(45); - task.setStatus(taskStatus); - runningTasks.add(task); - - return new RunningTaskListResponse(Status.STATUS_SUCCESS, runningTasks); - } - - @SuppressWarnings("rawtypes") - public Response startTask(@FormParam("taskType") RunningTask.TASK_TYPES taskType) { - String taskTypeStr = StringUtil.removeSpaces(new RunningTask().getTaskType(taskType)); - String managerClassName = PKG + "." + taskTypeStr + 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 runningTasks = tasks.getRunningTasks(); - for (RunningTask x : runningTasks) { - 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/TasksResource.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/TasksResource.java index 0fc69623..8c71c41a 100644 --- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/TasksResource.java +++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/TasksResource.java @@ -65,6 +65,14 @@ public class TasksResource { tasksMap.remove(task.getId()); } + public List getAllTasksInfo() { + List allTasksInfo = new ArrayList(); + for (Map.Entry entry : tasksMap.entrySet()) { + allTasksInfo.add(entry.getValue().getTaskInfo()); + } + return allTasksInfo; + } + public List getAllTasks() { List allTasks = new ArrayList(); for (Map.Entry entry : tasksMap.entrySet()) { @@ -86,12 +94,8 @@ public class TasksResource { @Produces(MediaType.TEXT_XML) public TaskListResponse getTasks() { TaskListResponse taskListResponse = new TaskListResponse(); - List taskInfoList = new ArrayList(); try { - for (Task task : getAllTasks()) { - taskInfoList.add(task.getTaskInfo()); - } - taskListResponse.setData(taskInfoList); + taskListResponse.setData(getAllTasksInfo()); taskListResponse.setStatus(new Status(Status.STATUS_CODE_SUCCESS, "")); } catch (GlusterRuntimeException e) { taskListResponse.setStatus(new Status(e)); 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 0d33e5b0..41359253 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 @@ -24,8 +24,8 @@ import static com.gluster.storage.management.core.constants.RESTConstants.FORM_P import static com.gluster.storage.management.core.constants.RESTConstants.FORM_PARAM_OPERATION; import static com.gluster.storage.management.core.constants.RESTConstants.FORM_PARAM_SOURCE; import static com.gluster.storage.management.core.constants.RESTConstants.FORM_PARAM_TARGET; -import static com.gluster.storage.management.core.constants.RESTConstants.FORM_PARAM_VALUE_START; -import static com.gluster.storage.management.core.constants.RESTConstants.FORM_PARAM_VALUE_STOP; +import static com.gluster.storage.management.core.constants.RESTConstants.TASK_START; +import static com.gluster.storage.management.core.constants.RESTConstants.TASK_STOP; import static com.gluster.storage.management.core.constants.RESTConstants.FROM_PARAM_AUTO_COMMIT; import static com.gluster.storage.management.core.constants.RESTConstants.PATH_PARAM_CLUSTER_NAME; import static com.gluster.storage.management.core.constants.RESTConstants.PATH_PARAM_VOLUME_NAME; @@ -220,9 +220,9 @@ public class VolumesResource { } private Status performOperation(String volumeName, String operation, GlusterServer onlineServer) { - if (operation.equals(FORM_PARAM_VALUE_START)) { + if (operation.equals(TASK_START)) { return glusterUtil.startVolume(volumeName, onlineServer.getName()); - } else if (operation.equals(FORM_PARAM_VALUE_STOP)) { + } else if (operation.equals(TASK_STOP)) { return glusterUtil.stopVolume(volumeName, onlineServer.getName()); } else { return new Status(Status.STATUS_CODE_FAILURE, "Invalid operation code [" + operation + "]"); diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/runningtasks/managers/FormatDiskManager.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/runningtasks/managers/FormatDiskManager.java deleted file mode 100644 index 37cc22f6..00000000 --- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/runningtasks/managers/FormatDiskManager.java +++ /dev/null @@ -1,71 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011 Gluster, Inc. - * 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 - * . - *******************************************************************************/ -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/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/runningtasks/managers/MigrateDiskManager.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/runningtasks/managers/MigrateDiskManager.java deleted file mode 100644 index 97916abe..00000000 --- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/runningtasks/managers/MigrateDiskManager.java +++ /dev/null @@ -1,50 +0,0 @@ -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/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/runningtasks/managers/RunningTaskManager.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/runningtasks/managers/RunningTaskManager.java deleted file mode 100755 index a21c6b81..00000000 --- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/runningtasks/managers/RunningTaskManager.java +++ /dev/null @@ -1,44 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011 Gluster, Inc. - * 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 - * . - *******************************************************************************/ - -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/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/runningtasks/managers/VolumeRebalanceManager.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/runningtasks/managers/VolumeRebalanceManager.java deleted file mode 100644 index 01a5dc25..00000000 --- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/runningtasks/managers/VolumeRebalanceManager.java +++ /dev/null @@ -1,50 +0,0 @@ -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; - } -} -- cgit