summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShireesh Anjal <shireesh@gluster.com>2011-04-05 19:47:23 +0530
committerSelvam <selvam@gluster.com>2011-04-06 18:02:46 +0530
commit4c69fc2e2a653d39216505ba583c428fb659d377 (patch)
treecb605ead9b50c3b94e33591d8ca6165435a38dd6
parentc3c30b10360ac6c994ad72d9b857231b033a29f9 (diff)
Alerts and running task UI stories review updates
-rw-r--r--src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java8
-rw-r--r--src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/RunningTaskClient.java5
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Alert.java2
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/RunningTask.java10
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Volume.java4
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/utils/GlusterUtil.java51
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/IImageKeys.java6
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/login/LoginDialog.java15
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumesSummaryView.java97
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/AlertsResource.java53
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/RunningTaskResource.java35
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/VolumesResource.java15
12 files changed, 183 insertions, 118 deletions
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 2dd91620..3c06315d 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
@@ -23,6 +23,7 @@ import java.util.Arrays;
import java.util.Date;
import java.util.List;
+import com.gluster.storage.management.core.exceptions.GlusterRuntimeException;
import com.gluster.storage.management.core.model.Cluster;
import com.gluster.storage.management.core.model.ClusterListener;
import com.gluster.storage.management.core.model.Disk;
@@ -40,6 +41,7 @@ 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.response.RunningTaskListResponse;
import com.gluster.storage.management.core.response.VolumeListResponse;
import com.gluster.storage.management.client.VolumesClient;
@@ -250,7 +252,11 @@ public class GlusterDataModelManager {
}
public void initializeRunningTasks(Cluster cluster) {
- cluster.setRunningTasks(new RunningTaskClient(securityToken).getRunningTasks());
+ RunningTaskListResponse runningTaskResponse = new RunningTaskClient(securityToken).getRunningTasks();
+ if (!runningTaskResponse.getStatus().isSuccess()) {
+ throw new GlusterRuntimeException(runningTaskResponse.getStatus().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
index eb5f1f3b..856eff61 100644
--- 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
@@ -23,8 +23,7 @@ public class RunningTaskClient extends AbstractClient {
return fetchResource( responseClass );
}
- public List<RunningTask> getRunningTasks() {
- RunningTaskListResponse response = (RunningTaskListResponse) fetchRunningTasks( RunningTaskListResponse.class );
- return response.getRunningTasks();
+ public RunningTaskListResponse getRunningTasks() {
+ return (RunningTaskListResponse) fetchRunningTasks( RunningTaskListResponse.class );
}
}
diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Alert.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Alert.java
index cfc710df..58e49efe 100644
--- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Alert.java
+++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Alert.java
@@ -6,7 +6,7 @@ import javax.xml.bind.annotation.XmlRootElement;
public class Alert {
public enum ALERT_TYPES { CPU_USAGE_ALERT, MEMORY_USAGE_ALERT, DISK_USAGE_ALERT, OFFLINE_VOLUME_DISKS_ALERT, OFFLINE_SERVERS_ALERT };
- public static final String[] ALERT_TYPE_STR = {"High CPU Usage", "High Memory Usage", "Low Disk Space", "Offline Disks", "Offline Servers" };
+ public static final String[] ALERT_TYPE_STR = {"High CPU Usage", "High Memory Usage", "Low Disk Space", "Offline Disk", "Offline Server" };
protected String id;
protected ALERT_TYPES type;
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
index 9787f1ee..3860e6dc 100644
--- 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
@@ -22,12 +22,12 @@ import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class RunningTask {
- public enum TASK_TYPES { FORMAT_DISK, MIGRATE_DISK, VOLUME_REBALANCE };
- public String[] TASK_TYPE_STR = {"Formating Disk", "Migrating Disk", "Volume Rebalance"};
+ public enum TASK_TYPES { DISK_FORMAT, DISK_MIGRATE, VOLUME_REBALANCE };
+ public String[] TASK_TYPE_STR = {"Formatting Disk", "Disk Migration", "Volume Rebalance"};
protected String id;
- protected TASK_TYPES type; // FormatDisk, MigrateDisk, VolumeRebalance
- protected String reference; // Server: Server name, Volume: Volume name, Disk: disk name referred as "VolumeName:ServerName:DiskName"
+ protected TASK_TYPES type;
+ protected String reference; // Server: Server name, Volume: Volume name, Disk: disk name referred as "VolumeName:ServerName:DiskName"
protected String taskInfo;
protected RunningTaskStatus status; // TODO redefine
@@ -35,7 +35,7 @@ public class RunningTask {
}
- public String getTaskType(TASK_TYPES type) {
+ public String getTaskType(TASK_TYPES task) {
return TASK_TYPE_STR[type.ordinal()];
}
diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Volume.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Volume.java
index 2322fa84..2386bcee 100644
--- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Volume.java
+++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Volume.java
@@ -29,7 +29,6 @@ import java.util.Set;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
-import com.gluster.storage.management.core.model.Disk.DISK_STATUS;
import com.gluster.storage.management.core.utils.StringUtil;
@XmlRootElement
@@ -49,6 +48,7 @@ public class Volume extends Entity {
public enum NAS_PROTOCOL {
GLUSTERFS, NFS
};
+ private static final String OPTION_AUTH_ALLOW = "auth.allow:";
private static final String[] VOLUME_TYPE_STR = new String[] { "Plain Distribute", "Distributed Mirror",
"Distributed Stripe" };
@@ -174,7 +174,7 @@ public class Volume extends Entity {
}
public String getAccessControlList() {
- return accessControlList;
+ return options.get(OPTION_AUTH_ALLOW);
}
public void setAccessControlList(String accessControlList) {
diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/utils/GlusterUtil.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/utils/GlusterUtil.java
index 0e2b0b8d..a5e6728f 100644
--- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/utils/GlusterUtil.java
+++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/utils/GlusterUtil.java
@@ -25,6 +25,7 @@ import java.util.ArrayList;
import java.util.List;
import com.gluster.storage.management.core.constants.CoreConstants;
+import com.gluster.storage.management.core.exceptions.GlusterRuntimeException;
import com.gluster.storage.management.core.model.Disk;
import com.gluster.storage.management.core.model.GlusterServer;
import com.gluster.storage.management.core.model.GlusterServer.SERVER_STATUS;
@@ -48,7 +49,6 @@ public class GlusterUtil {
private static final String VOLUME_TRANSPORT_TYPE_PFX = "Transport-type:";
private static final String VOLUME_BRICKS_GROUP_PFX = "Bricks"; // Colon not used
private static final String VOLUME_OPTIONS_RECONFIG_PFX = "Options Reconfigured";
- private static final String VOLUME_OPTIONS_AUTH_ALLOW = "auth.allow:";
private static final ProcessUtil processUtil = new ProcessUtil();
@@ -230,45 +230,54 @@ public class GlusterUtil {
return disk.getServerName() + ":" + dirName;
}
- public ProcessResult getVolumeInfo() {
- return new ProcessUtil().executeCommand("gluster", "volume", "info");
+ private String getVolumeInfo() {
+ ProcessResult result = new ProcessUtil().executeCommand("gluster", "volume", "info");
+ if (!result.isSuccess()) {
+ throw new GlusterRuntimeException("Command [gluster volume info] failed with error: ["
+ + result.getExitValue() + "][" + result.getOutput() + "]");
+ }
+ return result.getOutput();
}
- public List<Volume> getAllVolumes(String volumeInfoText) {
+ public List<Volume> getAllVolumes() {
+ String volumeInfoText = getVolumeInfo();
+
List<Volume> volumes = new ArrayList<Volume>();
boolean isBricksGroupFound = false;
boolean isOptionReconfigFound = false;
- List<String> bricks = new ArrayList<String>();
Volume volume = null;
for (String line : volumeInfoText.split(CoreConstants.NEWLINE)) {
- if (extractToken(line, VOLUME_NAME_PFX) != null) {
+ String volumeName = extractToken(line, VOLUME_NAME_PFX);
+ if (volumeName != null) {
if (volume != null) {
- volume.setDisks(bricks);
- bricks.clear();
+ // add the previously read volume to volume list
volumes.add(volume);
}
+
+ // prepare next volume to be read
volume = new Volume();
- volume.setName(extractToken(line, VOLUME_NAME_PFX));
+ volume.setName(volumeName);
isBricksGroupFound = isOptionReconfigFound = false;
continue;
}
- if (extractToken(line, VOLUME_TYPE_PFX) != null) {
- String volumeType = extractToken(line, VOLUME_TYPE_PFX);
+ String volumeType = extractToken(line, VOLUME_TYPE_PFX);
+ if (volumeType != null) {
volume.setVolumeType((volumeType == "Distribute") ? VOLUME_TYPE.PLAIN_DISTRIBUTE
: VOLUME_TYPE.DISTRIBUTED_MIRROR); // TODO: for Stripe
continue;
}
- if (extractToken(line, VOLUME_STATUS_PFX) != null) {
- volume.setStatus(extractToken(line, VOLUME_STATUS_PFX).equals("Started") ? VOLUME_STATUS.ONLINE : VOLUME_STATUS.OFFLINE);
+ String volumeStatus = extractToken(line, VOLUME_STATUS_PFX);
+ if (volumeStatus != null) {
+ volume.setStatus(volumeStatus.equals("Started") ? VOLUME_STATUS.ONLINE : VOLUME_STATUS.OFFLINE);
continue;
}
- if (extractToken(line, VOLUME_TRANSPORT_TYPE_PFX) != null) {
- volume.setTransportType((extractToken(line,
- VOLUME_TRANSPORT_TYPE_PFX) == "tcp") ? TRANSPORT_TYPE.ETHERNET
+ String transportType = extractToken(line, VOLUME_TRANSPORT_TYPE_PFX);
+ if (transportType != null) {
+ volume.setTransportType(transportType.equals("tcp") ? TRANSPORT_TYPE.ETHERNET
: TRANSPORT_TYPE.INFINIBAND);
continue;
}
@@ -280,7 +289,7 @@ public class GlusterUtil {
if (isBricksGroupFound) {
if (line.matches("Brick[0-9]+:.*")) {
- bricks.add( line.split(":")[2].trim().split("/")[2].trim() ); // line: "Brick1: server1:/export/md0/volume-name"
+ volume.addDisk(line.split(":")[2].trim().split("/")[2].trim()); // line: "Brick1: server1:/export/md0/volume-name"
continue;
} else {
isBricksGroupFound = false;
@@ -293,14 +302,16 @@ public class GlusterUtil {
}
if (isOptionReconfigFound) {
- if (extractToken(line, VOLUME_OPTIONS_AUTH_ALLOW) != null) {
- volume.setAccessControlList( extractToken(line, VOLUME_OPTIONS_AUTH_ALLOW) );
+ if(line.matches("^[^:]*:[^:]*$")) {
+ String[] parts = line.split(":");
+ volume.setOption(parts[0].trim(), parts[1].trim());
+ } else {
isOptionReconfigFound = false;
}
}
}
+
if (volume != null) {// Adding the last volume parsed
- volume.setDisks(bricks);
volumes.add(volume);
}
return volumes;
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 fd5972c5..513901bb 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
@@ -42,10 +42,16 @@ public interface IImageKeys {
public static final String WORK_IN_PROGRESS = "icons/progress-bar.png";
public static final String CHECKBOX_UNCHECKED = "icons/ui-check-box-uncheck.png";
public static final String CHECKBOX_CHECKED = "icons/ui-check-box.png";
+ public static final String DISK = "icons/disk.png";
+ public static final String DISKS = "icons/disks.png";
public static final String DISK_UNINITIALIZED = "icons/disk-uninitialized.png";
public static final String SEARCH = "icons/search.png";
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 LOW_DISK_SPACE = "icons/disk.png";
+ public static final String DISK_OFFLINE = "icons/status-offline.png";
public static final String OVERLAY_OFFLINE = "icons/status-offline-small.png";
public static final String OVERLAY_ONLINE = "icons/status-online-small.png";
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/login/LoginDialog.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/login/LoginDialog.java
index 45b13a19..cc9c0385 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/login/LoginDialog.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/login/LoginDialog.java
@@ -42,6 +42,7 @@ import org.eclipse.swt.widgets.Text;
import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.client.UsersClient;
import com.gluster.storage.management.client.constants.ClientConstants;
+import com.gluster.storage.management.core.exceptions.GlusterRuntimeException;
import com.gluster.storage.management.core.model.ConnectionDetails;
import com.gluster.storage.management.gui.IImageKeys;
import com.gluster.storage.management.gui.utils.GUIHelper;
@@ -51,7 +52,7 @@ import com.gluster.storage.management.gui.validators.StringRequiredValidator;
* Login dialog, which prompts for the user's account info, and has Login and Cancel buttons.
*/
public class LoginDialog extends Dialog {
-
+ public static final int RETURN_CODE_ERROR = 2;
private Text userIdText = null;
private Text passwordText = null;
private Button okButton;
@@ -191,8 +192,16 @@ public class LoginDialog extends Dialog {
UsersClient usersClient = new UsersClient();
if (usersClient.authenticate(user, password)) {
- GlusterDataModelManager.getInstance().initializeModel(usersClient.getSecurityToken());
- super.okPressed();
+ try {
+ GlusterDataModelManager.getInstance().initializeModel(
+ usersClient.getSecurityToken());
+ super.okPressed();
+ } catch (GlusterRuntimeException e) {
+ setReturnCode(RETURN_CODE_ERROR);
+ MessageDialog.openError(getShell(), "Initialization Error", e.getMessage());
+ close();
+ }
+
} else {
MessageDialog.openError(getShell(), "Authentication Failed", "Invalid User ID or password");
}
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 5950bd38..ac2c19b0 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
@@ -23,6 +23,7 @@ package com.gluster.storage.management.gui.views;
import java.util.List;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CLabel;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
@@ -33,11 +34,11 @@ import org.eclipse.ui.part.ViewPart;
import com.gluster.storage.management.core.model.Alert;
import com.gluster.storage.management.core.model.EntityGroup;
import com.gluster.storage.management.core.model.Cluster;
-import com.gluster.storage.management.core.model.GlusterDataModel;
import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.core.model.RunningTask;
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;
import com.gluster.storage.management.gui.utils.GUIHelper;
import com.gluster.storage.management.gui.views.details.tabcreators.PieChartViewerComposite;
@@ -50,22 +51,27 @@ public class VolumesSummaryView extends ViewPart {
private final FormToolkit toolkit = new FormToolkit(Display.getCurrent());
private ScrolledForm form;
private EntityGroup<Volume> volumes;
-
+
private static final String ALERTS = "Alerts";
private static final String RUNNING_TASKS = "Running Tasks";
private static final String VOLUMES_SUMMARY = "Volumes - Summary";
private static final String AVAILABILITY = "Availability";
-
+
/*
* (non-Javadoc)
*
- * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
+ * @see
+ * org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets
+ * .Composite)
*/
+ @SuppressWarnings({ "unchecked", "rawtypes" })
@Override
public void createPartControl(Composite parent) {
if (volumes == null) {
- Object selectedObj = guiHelper.getSelectedEntity(getSite(), EntityGroup.class);
- if (selectedObj != null && ((EntityGroup) selectedObj).getEntityType() == Volume.class) {
+ Object selectedObj = guiHelper.getSelectedEntity(getSite(),
+ EntityGroup.class);
+ if (selectedObj != null
+ && ((EntityGroup) selectedObj).getEntityType() == Volume.class) {
volumes = (EntityGroup<Volume>) selectedObj;
}
}
@@ -83,50 +89,74 @@ public class VolumesSummaryView extends ViewPart {
}
private void createAlertsSection() {
- Composite section = guiHelper.createSection(form, toolkit, ALERTS, null, 1, false);
- // toolkit.createLabel(section, "Any alerts related to volumes\nwill be displayed here.");
+ Composite section = guiHelper.createSection(form, toolkit, ALERTS,
+ null, 1, false);
+ List<Alert> alerts = GlusterDataModelManager.getInstance().getModel()
+ .getCluster().getAlerts();
- Cluster cluster = GlusterDataModelManager.getInstance().getModel().getCluster();
- List<Alert> alerts = cluster.getAlerts();
for (Alert alert : alerts) {
- if (alert.getType() == Alert.ALERT_TYPES.DISK_USAGE_ALERT ||
- alert.getType() == Alert.ALERT_TYPES.OFFLINE_VOLUME_DISKS_ALERT) {
- toolkit.createLabel(section, alert.getMessage());
- }
+ addAlertLabel(section, alert);
+ }
+ }
+
+ private void addAlertLabel(Composite section, Alert alert) {
+ if (alert.getType() == Alert.ALERT_TYPES.DISK_USAGE_ALERT
+ || alert.getType() == Alert.ALERT_TYPES.OFFLINE_VOLUME_DISKS_ALERT) {
+ CLabel lblAlert = new CLabel(section, SWT.NONE);
+ lblAlert.setText(alert.getMessage());
+ lblAlert.setImage((alert.getType() == Alert.ALERT_TYPES.DISK_USAGE_ALERT) ? guiHelper
+ .getImage(IImageKeys.LOW_DISK_SPACE) : guiHelper
+ .getImage(IImageKeys.DISK_OFFLINE));
+ lblAlert.redraw();
}
}
private void createRunningTasksSection() {
- Composite section = guiHelper.createSection(form, toolkit, RUNNING_TASKS, null, 1, false);
+ Composite section = guiHelper.createSection(form, toolkit,
+ RUNNING_TASKS, null, 1, false);
- List<RunningTask> runningTasks = GlusterDataModelManager.getInstance().getModel().getCluster().getRunningTasks();
+ List<RunningTask> runningTasks = GlusterDataModelManager.getInstance()
+ .getModel().getCluster().getRunningTasks();
for (RunningTask task : runningTasks) {
- if (task.getType() == RunningTask.TASK_TYPES.MIGRATE_DISK
- || task.getType() == RunningTask.TASK_TYPES.VOLUME_REBALANCE) {
- if (task.getStatus().isPercentageSupported()) {
- // TODO Progress bar
- }
- toolkit.createLabel(section, task.getTaskInfo());
+ addRunningTaskLabel(section, task);
+ }
+ }
+
+ private void addRunningTaskLabel(Composite section, RunningTask task) {
+ // Task related to Volumes context
+ if (task.getType() == RunningTask.TASK_TYPES.DISK_MIGRATE
+ || task.getType() == RunningTask.TASK_TYPES.VOLUME_REBALANCE) {
+ if (task.getStatus().isPercentageSupported()) {
+ // TODO Progress bar
}
+ CLabel lblAlert = new CLabel(section, SWT.NONE);
+ lblAlert.setText(task.getTaskInfo());
+ lblAlert.setImage((task.getType() == RunningTask.TASK_TYPES.DISK_MIGRATE) ? guiHelper
+ .getImage(IImageKeys.DISK_MIGRATE) : guiHelper
+ .getImage(IImageKeys.VOLUME_REBALANCE));
+ lblAlert.redraw();
}
}
private void createSummarySection() {
- Composite section = guiHelper.createSection(form, toolkit, AVAILABILITY, null, 2, false);
-
- // Cluster cluster = GlusterDataModelManager.getInstance().getModel().getCluster();
+ Composite section = guiHelper.createSection(form, toolkit,
+ AVAILABILITY, null, 2, false);
- GlusterDataModel model = GlusterDataModelManager.getInstance().getModel();
- Cluster cluster = (Cluster) model.getChildren().get(0);
+// Cluster cluster = GlusterDataModelManager.getInstance().getModel()
+// .getCluster();
- Double[] values = new Double[] { Double.valueOf(getVolumeCountByStatus(volumes, VOLUME_STATUS.ONLINE)),
- Double.valueOf(getVolumeCountByStatus(volumes, VOLUME_STATUS.OFFLINE)) };
+ Double[] values = new Double[] {
+ Double.valueOf(getVolumeCountByStatus(volumes,
+ VOLUME_STATUS.ONLINE)),
+ Double.valueOf(getVolumeCountByStatus(volumes,
+ VOLUME_STATUS.OFFLINE)) };
createStatusChart(toolkit, section, values);
}
@SuppressWarnings("unchecked")
- private int getVolumeCountByStatus(EntityGroup<Volume> volumes, VOLUME_STATUS status) {
+ private int getVolumeCountByStatus(EntityGroup<Volume> volumes,
+ VOLUME_STATUS status) {
int count = 0;
for (Volume volume : (List<Volume>) volumes.getEntities()) {
if (volume.getStatus() == status) {
@@ -136,10 +166,11 @@ public class VolumesSummaryView extends ViewPart {
return count;
}
- private void createStatusChart(FormToolkit toolkit, Composite section, Double[] values) {
+ private void createStatusChart(FormToolkit toolkit, Composite section,
+ Double[] values) {
String[] categories = new String[] { "Online", "Offline" };
- PieChartViewerComposite chartViewerComposite = new PieChartViewerComposite(section, SWT.NONE, categories,
- values);
+ PieChartViewerComposite chartViewerComposite = new PieChartViewerComposite(
+ section, SWT.NONE, categories, values);
GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
data.widthHint = 250;
diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/AlertsResource.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/AlertsResource.java
index 266bd8d3..58eb4fce 100644
--- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/AlertsResource.java
+++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/AlertsResource.java
@@ -29,57 +29,62 @@ public class AlertsResource {
// Alert #1
Alert alert = new Alert();
alert.setId("0001");
- alert.setReference("Server1"); // Server
+ alert.setReference("Server1"); // Server
alert.setType(Alert.ALERT_TYPES.CPU_USAGE_ALERT);
- alert.setMessage(alert.getAlertType(alert.getType()) + " in server: " + alert.getReference());
+ alert.setMessage(alert.getAlertType(alert.getType()) + " in server ["
+ + alert.getReference() + "]");
alerts.add(alert);
-
+
// Alert #2
alert = new Alert();
alert.setId("0002");
alert.setReference("Server2"); // server:Disk - brick
alert.setType(Alert.ALERT_TYPES.MEMORY_USAGE_ALERT);
- alert.setMessage(alert.getAlertType(alert.getType()) + " in server: " + alert.getReference());
+ alert.setMessage(alert.getAlertType(alert.getType()) + " in server ["
+ + alert.getReference() + "]");
alerts.add(alert);
-
+
// Alert #3
alert = new Alert();
alert.setId("0003");
- alert.setReference("Volume1"); // Volume name
+ alert.setReference("server1:sda1"); // Disk name
alert.setType(Alert.ALERT_TYPES.DISK_USAGE_ALERT);
- alert.setMessage(alert.getAlertType(alert.getType()) + " in volume: " + alert.getReference());
+ alert.setMessage(alert.getAlertType(alert.getType()) + " in disk ["
+ + alert.getReference() + "]");
alerts.add(alert);
-
+
// Alert #4
alert = new Alert();
alert.setId("0004");
- alert.setReference("Volume2"); // Volume name
+ alert.setReference("Volume2:server2:sda1"); // volume:[Disk name]
alert.setType(Alert.ALERT_TYPES.OFFLINE_VOLUME_DISKS_ALERT);
- alert.setMessage("Server1:sda1, server2:sda2 are " + alert.getAlertType(alert.getType()) + " in volume: " + alert.getReference());
+ alert.setMessage(alert.getAlertType(alert.getType()) + " in volume ["
+ + alert.getReference().split(":")[0] + "] disk ["
+ + alert.getReference().split(":")[1] + ":"
+ + alert.getReference().split(":")[2] + "]");
alerts.add(alert);
-
+
// Alert #5
alert = new Alert();
alert.setId("0005");
- alert.setReference("Volume2"); // Volume name
+ alert.setReference("Server2"); // Server name
alert.setType(Alert.ALERT_TYPES.OFFLINE_SERVERS_ALERT);
- alert.setMessage("server1, server2 are " + alert.getAlertType(alert.getType()) + " in volume: " + alert.getReference());
+ alert.setMessage(alert.getAlertType(alert.getType()) + " ["
+ + alert.getReference() + "]");
alerts.add(alert);
-
+
return new AlertListResponse(alerts);
}
-
- public static void main(String[] args) {
+
+ public static void main(String[] args) {
/*
- // Unit test code
- AlertsResource alertResource = new AlertsResource();
- AlertsListResponse alertResponse = alertResource.getAlerts();
- List<Alert> alerts = alertResponse.getAlerts();
- for (Alert alert: alerts) {
- System.out.println(alert.getMessage());
- }
- */
+ * // Unit test code AlertsResource alertResource = new
+ * AlertsResource(); AlertsListResponse alertResponse =
+ * alertResource.getAlerts(); List<Alert> alerts =
+ * alertResponse.getAlerts(); for (Alert alert: alerts) {
+ * System.out.println(alert.getMessage()); }
+ */
}
}
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
index 2177085e..0d48cc57 100644
--- 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
@@ -49,48 +49,49 @@ public class RunningTaskResource {
@GET
@Produces(MediaType.TEXT_XML)
public RunningTaskListResponse getRunningTasks() {
-
- RunningTaskStatus status = new RunningTaskStatus();
+
+ RunningTaskStatus taskStatus = new RunningTaskStatus();
List<RunningTask> runningTasks = new ArrayList<RunningTask>();
- status.setCode(Status.STATUS_CODE_RUNNING);
- status.setPercentageSupported(false);
+ 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()) + "is running in volume " + task.getReference());
- task.setStatus(status);
+ 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()) + " is running in volume " + task.getReference());
- task.setStatus(status);
+ 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.MIGRATE_DISK);
+ task.setType(RunningTask.TASK_TYPES.DISK_MIGRATE);
task.setReference("Volume3:server1:sda1"); // Disk reference
- task.setTaskInfo( task.getTaskType(task.getType()) + " is running in disk " + task.getReference() + "");
- task.setStatus(status);
+ task.setTaskInfo( task.getTaskType( task.getType() ) + " for volume [" + task.getReference().split(":")[0] + "] disk [" + 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.FORMAT_DISK);
- task.setReference("Volume1:server1:sdb1"); // Disk reference
- task.setTaskInfo( task.getTaskType(task.getType()) + " " + task.getReference() );
- status.setPercentageSupported(true);
- status.getPercentCompleted(45);
- task.setStatus(status);
+ 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);
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 67814126..aae740e4 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
@@ -27,8 +27,6 @@ import static com.gluster.storage.management.core.constants.RESTConstants.PATH_P
import static com.gluster.storage.management.core.constants.RESTConstants.RESOURCE_PATH_VOLUMES;
import static com.gluster.storage.management.core.constants.RESTConstants.SUBRESOURCE_DEFAULT_OPTIONS;
-
-import java.util.ArrayList;
import javax.ws.rs.Consumes;
import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
@@ -39,7 +37,6 @@ import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
-
import com.gluster.storage.management.core.model.Status;
import com.gluster.storage.management.core.model.Volume;
import com.gluster.storage.management.core.response.GenericResponse;
@@ -54,6 +51,7 @@ import com.sun.jersey.spi.resource.Singleton;
@Singleton
@Path(RESOURCE_PATH_VOLUMES)
public class VolumesResource {
+
private final GlusterUtil glusterUtil = new GlusterUtil();
@InjectParam
@@ -62,12 +60,11 @@ public class VolumesResource {
@GET
@Produces(MediaType.TEXT_XML)
public VolumeListResponse getAllVolumes() {
- ProcessResult response = glusterUtil.getVolumeInfo();
- if (response.isSuccess()) {
- return new VolumeListResponse( Status.STATUS_SUCCESS, glusterUtil.getAllVolumes(response.getOutput()) );
- } else {
- //TODO: log the error
- return new VolumeListResponse(Status.STATUS_FAILURE, new ArrayList<Volume>());
+ try {
+ return new VolumeListResponse(Status.STATUS_SUCCESS, glusterUtil.getAllVolumes());
+ } catch(Exception e) {
+ // TODO: log the error
+ return new VolumeListResponse(new Status(Status.STATUS_CODE_FAILURE, e.getMessage()), null);
}
}