summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSelvasundaram <selvam@gluster.com>2011-07-21 18:08:52 +0530
committerSelvasundaram <selvam@gluster.com>2011-07-21 18:18:06 +0530
commitd490f00daba667bb3d52eaf4eaef7d6575f2ed36 (patch)
treea13d817a221113650b0c64c6dd8d1a32b84271c2 /src
parenteaed5f0a006789b2d4da723ab0da94d59e7e2225 (diff)
Alerts section enhanced
Diffstat (limited to 'src')
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Alert.java19
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Cluster.java4
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/ClusterListener.java6
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/DefaultClusterListener.java15
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/utils/StringUtil.java10
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/AlertsManager.java68
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/GlusterDataModelManager.java66
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/IImageKeys.java2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/ServerAdditionDialog.java16
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/ClusterSummaryView.java6
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/GlusterServersSummaryView.java72
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumeSummaryView.java2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumesSummaryView.java2
13 files changed, 234 insertions, 54 deletions
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 2cfae3cb..a29c150b 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
@@ -1,12 +1,8 @@
package com.gluster.storage.management.core.model;
-import javax.xml.bind.annotation.XmlRootElement;
-
import org.eclipse.osgi.internal.signedcontent.Base64;
-@SuppressWarnings("restriction")
-@XmlRootElement(name = "alert")
-public class Alert {
+public class Alert extends Entity {
public enum ALERT_TYPES {
CPU_USAGE_ALERT, MEMORY_USAGE_ALERT, DISK_USAGE_ALERT, OFFLINE_VOLUME_BRICKS_ALERT, OFFLINE_SERVERS_ALERT
@@ -15,7 +11,7 @@ public class Alert {
public static final String[] ALERT_TYPE_STR = { "High CPU Usage", "High Memory Usage", "Low Disk Space",
"Offline Brick", "Offline Server" };
- protected String id;
+ // protected String id;
protected ALERT_TYPES type;
protected String reference; // [for server- "Server", for Disk- "Server:disk", for volume- "Volume:Server:disk"]
protected String message;
@@ -39,11 +35,11 @@ public class Alert {
}
public String getId() {
- return id;
+ return getName();
}
public void setId(String id) {
- this.id = id;
+ setName(id);
}
public ALERT_TYPES getType() {
@@ -69,4 +65,11 @@ public class Alert {
public void setMessage(String message) {
this.message = message;
}
+
+ public void copyFrom(Alert alert) {
+ this.setId(alert.getId());
+ this.setReference(alert.getReference());
+ this.setType(alert.getType());
+ this.setMessage(alert.getMessage());
+ }
}
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 b62f69a8..58faef02 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
@@ -138,6 +138,10 @@ public class Cluster extends Entity {
this.alerts.add(alert);
}
+ public void removeAlert(Alert alert) {
+ this.alerts.remove(alert);
+ }
+
public double getTotalDiskSpace() {
double totalDiskSpace = 0;
for(GlusterServer server : getServers()) {
diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/ClusterListener.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/ClusterListener.java
index b6c9db34..2a4a9920 100644
--- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/ClusterListener.java
+++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/ClusterListener.java
@@ -46,4 +46,10 @@ public interface ClusterListener {
public void taskRemoved(TaskInfo taskInfo);
public void taskUpdated(TaskInfo taskInfo);
+
+ public void alertAdded(Alert alert);
+
+ public void alertRemoved(Alert alert);
+
+ public void alertUpdated(Alert alert);
}
diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/DefaultClusterListener.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/DefaultClusterListener.java
index ce66a8f4..e72ff3e5 100644
--- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/DefaultClusterListener.java
+++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/DefaultClusterListener.java
@@ -95,4 +95,19 @@ public class DefaultClusterListener implements ClusterListener {
public void discoveredServerChanged(Server server, Event event) {
modelChanged();
}
+
+ @Override
+ public void alertAdded(Alert alert) {
+ modelChanged();
+ }
+
+ @Override
+ public void alertRemoved(Alert alert) {
+ modelChanged();
+ }
+
+ @Override
+ public void alertUpdated(Alert alert) {
+ modelChanged();
+ }
}
diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/utils/StringUtil.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/utils/StringUtil.java
index 2fce81cb..cdf71dcc 100644
--- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/utils/StringUtil.java
+++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/utils/StringUtil.java
@@ -18,6 +18,7 @@
*******************************************************************************/
package com.gluster.storage.management.core.utils;
+import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedHashMap;
@@ -100,6 +101,15 @@ public class StringUtil {
}
return output;
}
+
+ public static String formatNumber(Double number, int dec) {
+ NumberFormat nf = NumberFormat.getInstance();
+ nf.setMaximumFractionDigits(dec);
+ nf.setGroupingUsed(false);
+ // Setting this to true will give you xx,xxx,xxx type of formatting.
+ String formattedvalue = nf.format(number);
+ return formattedvalue;
+ }
public static void main(String args[]) {
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/AlertsManager.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/AlertsManager.java
index 9f9fdd5d..ed700d53 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/AlertsManager.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/AlertsManager.java
@@ -35,9 +35,9 @@ 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.Partition;
import com.gluster.storage.management.core.model.Volume;
+import com.gluster.storage.management.core.utils.StringUtil;
import com.gluster.storage.management.gui.preferences.PreferenceConstants;
-
public class AlertsManager {
private List<Alert> alerts = new ArrayList<Alert>();
private Cluster cluster;
@@ -48,13 +48,13 @@ public class AlertsManager {
public AlertsManager(Cluster cluster) {
this.cluster = cluster;
-
+
IPreferenceStore preferenceStore = Activator.getDefault().getPreferenceStore();
CPU_USAGE_THRESHOLD = preferenceStore.getDouble(PreferenceConstants.P_SERVER_CPU_CRITICAL_THRESHOLD);
MEMORY_USAGE_THRESHOLD = preferenceStore.getDouble(PreferenceConstants.P_SERVER_MEMORY_USAGE_THRESHOLD);
DISK_SPACE_USAGE_THRESHOLD = preferenceStore.getDouble(PreferenceConstants.P_DISK_SPACE_USAGE_THRESHOLD);
}
-
+
public List<Alert> getAlerts() {
return alerts;
}
@@ -101,27 +101,29 @@ public class AlertsManager {
private List<Alert> getServerAlerts() {
List<Alert> serverAlerts = new ArrayList<Alert>();
+ serverAlerts.add(getOfflineServerAlerts()); // Single alert for offline servers
+
for (GlusterServer server : cluster.getServers()) {
// To check off line servers
- if (server.getStatus() == SERVER_STATUS.OFFLINE) {
- serverAlerts.add(new Alert(ALERT_TYPES.OFFLINE_SERVERS_ALERT, server.getName(), "Server ["
- + server.getName() + "] is Offline"));
- continue; // If the server is Offline skip other Alert builds
- }
+ // if (server.getStatus() == SERVER_STATUS.OFFLINE) {
+ // serverAlerts.add(new Alert(ALERT_TYPES.OFFLINE_SERVERS_ALERT, server.getName(), "Server ["
+ // + server.getName() + "] is Offline"));
+ // continue; // If the server is Offline skip other Alert builds
+ // }
// To check High CPU usage
if (server.getCpuUsage() >= CPU_USAGE_THRESHOLD) {
- serverAlerts
- .add(new Alert(ALERT_TYPES.CPU_USAGE_ALERT, server.getName(),
- Alert.ALERT_TYPE_STR[ALERT_TYPES.CPU_USAGE_ALERT.ordinal()] + "["
- + server.getCpuUsage() + "]"));
+ serverAlerts.add(new Alert(ALERT_TYPES.CPU_USAGE_ALERT, server.getName(),
+ Alert.ALERT_TYPE_STR[ALERT_TYPES.CPU_USAGE_ALERT.ordinal()] + "[" + server.getCpuUsage()
+ + "] in server [" + server.getName() + "]"));
}
// To check High Memory usage
- Double memoryUtilized = server.getMemoryInUse() / server.getTotalMemory() * 100;
+ Double memoryUtilized = server.getMemoryInUse() / server.getTotalMemory() * 100d;
if (memoryUtilized >= MEMORY_USAGE_THRESHOLD) {
serverAlerts.add(new Alert(ALERT_TYPES.MEMORY_USAGE_ALERT, server.getName(),
- Alert.ALERT_TYPE_STR[ALERT_TYPES.MEMORY_USAGE_ALERT.ordinal()] + "[" + server.getCpuUsage()
+ Alert.ALERT_TYPE_STR[ALERT_TYPES.MEMORY_USAGE_ALERT.ordinal()] + "["
+ + StringUtil.formatNumber(memoryUtilized, 2) + "%] in server [" + server.getName()
+ "]"));
}
@@ -131,6 +133,17 @@ public class AlertsManager {
return serverAlerts;
}
+ private Alert getOfflineServerAlerts() {
+ List<String> offlineServers = new ArrayList<String>();
+ for (GlusterServer server : cluster.getServers()) {
+ if (server.getStatus() == SERVER_STATUS.OFFLINE) {
+ offlineServers.add(server.getName());
+ }
+ }
+ return new Alert(ALERT_TYPES.OFFLINE_SERVERS_ALERT, "Server",
+ Alert.ALERT_TYPE_STR[ALERT_TYPES.OFFLINE_SERVERS_ALERT.ordinal()] + "(s) " + offlineServers.toString());
+ }
+
private List<Alert> getLowDiskAlerts(GlusterServer server) {
List<Alert> diskAlerts = new ArrayList<Alert>();
boolean hasPartition;
@@ -139,11 +152,12 @@ public class AlertsManager {
hasPartition = false;
for (Partition partition : disk.getPartitions()) {
hasPartition = true;
- deviceSpaceUsed = partition.getSpaceInUse() / partition.getSpace() * 100;
+ deviceSpaceUsed = partition.getSpaceInUse() / partition.getSpace() * 100d;
if (deviceSpaceUsed >= DISK_SPACE_USAGE_THRESHOLD) {
diskAlerts.add(new Alert(ALERT_TYPES.DISK_USAGE_ALERT, partition.getQualifiedName(),
- Alert.ALERT_TYPE_STR[ALERT_TYPES.DISK_USAGE_ALERT.ordinal()] + " [" + deviceSpaceUsed
- + "% used]"));
+ Alert.ALERT_TYPE_STR[ALERT_TYPES.DISK_USAGE_ALERT.ordinal()] + " ["
+ + StringUtil.formatNumber(deviceSpaceUsed, 2) + "% used] in disk ["
+ + partition.getQualifiedName() + "]"));
}
}
if (hasPartition) {
@@ -151,27 +165,35 @@ public class AlertsManager {
}
// If it is disk
- deviceSpaceUsed = disk.getSpaceInUse() / disk.getSpace() * 100;
+ deviceSpaceUsed = disk.getSpaceInUse() / disk.getSpace() * 100d;
if (deviceSpaceUsed >= DISK_SPACE_USAGE_THRESHOLD) {
diskAlerts.add(new Alert(ALERT_TYPES.DISK_USAGE_ALERT, disk.getQualifiedName(),
- Alert.ALERT_TYPE_STR[ALERT_TYPES.DISK_USAGE_ALERT.ordinal()] + " [" + deviceSpaceUsed
- + "% used]"));
+ Alert.ALERT_TYPE_STR[ALERT_TYPES.DISK_USAGE_ALERT.ordinal()] + " ["
+ + StringUtil.formatNumber(deviceSpaceUsed, 2) + "% used] in ["
+ + disk.getQualifiedName() + "]"));
}
-
}
return diskAlerts;
}
private List<Alert> getVolumeAlerts() {
List<Alert> volumeAlerts = new ArrayList<Alert>();
+ List<String> offlineBricks = new ArrayList<String>();
+
for (Volume volume : cluster.getVolumes()) {
// To check off line bricks
+ offlineBricks = new ArrayList<String>();
for (Brick brick : volume.getBricks()) {
if (brick.getStatus() == BRICK_STATUS.OFFLINE) {
- volumeAlerts.add(new Alert(ALERT_TYPES.OFFLINE_VOLUME_BRICKS_ALERT, brick.getQualifiedName(),
- Alert.ALERT_TYPE_STR[ALERT_TYPES.OFFLINE_VOLUME_BRICKS_ALERT.ordinal()]));
+ offlineBricks.add(brick.getQualifiedName());
}
}
+ // One offline brick alert per volume
+ if (offlineBricks.size() > 0) {
+ volumeAlerts.add(new Alert(ALERT_TYPES.OFFLINE_VOLUME_BRICKS_ALERT, volume.getName(),
+ Alert.ALERT_TYPE_STR[ALERT_TYPES.OFFLINE_VOLUME_BRICKS_ALERT.ordinal()]
+ + offlineBricks.toString() + " in volume " + volume.getName()));
+ }
}
return volumeAlerts;
}
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/GlusterDataModelManager.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/GlusterDataModelManager.java
index 61008a00..56681a40 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/GlusterDataModelManager.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/GlusterDataModelManager.java
@@ -37,6 +37,7 @@ import com.gluster.storage.management.core.model.Brick;
import com.gluster.storage.management.core.model.Cluster;
import com.gluster.storage.management.core.model.ClusterListener;
import com.gluster.storage.management.core.model.Device;
+import com.gluster.storage.management.core.model.Alert.ALERT_TYPES;
import com.gluster.storage.management.core.model.Device.DEVICE_STATUS;
import com.gluster.storage.management.core.model.Disk;
import com.gluster.storage.management.core.model.Event;
@@ -171,6 +172,29 @@ public class GlusterDataModelManager {
updateGlusterServers(model);
updateDiscoveredServers(model);
updateTasks(model);
+ updateAlerts(model);
+ }
+
+ private void updateAlerts(GlusterDataModel newModel) {
+ List<Alert> oldAlerts = model.getCluster().getAlerts();
+ List<Alert> newAlerts = newModel.getCluster().getAlerts();
+
+ Set<Alert> addedAlerts = GlusterCoreUtil.getAddedEntities(oldAlerts, newAlerts, true);
+ for(Alert alert : addedAlerts) {
+ addAlert(alert);
+ }
+
+ Set<Alert> removedAlerts = GlusterCoreUtil.getAddedEntities(newAlerts, oldAlerts, true);
+ for(Alert alert : removedAlerts) {
+ removeAlert(alert);
+ }
+
+ Map<Alert, Alert> modifiedAlerts = GlusterCoreUtil.getModifiedEntities(oldAlerts, newAlerts);
+ for(Entry<Alert, Alert> entry : modifiedAlerts.entrySet()) {
+ Alert modifiedAlert = entry.getKey();
+ modifiedAlert.copyFrom(entry.getValue());
+ updateAlert(modifiedAlert);
+ }
}
private void updateTasks(GlusterDataModel newModel) {
@@ -410,11 +434,33 @@ public class GlusterDataModelManager {
return taskInfoList;
}
+
+ private List<Alert> getDummyAlerts() {
+ List<Alert> alerts = new ArrayList<Alert>();
+ for (Server server : model.getCluster().getServers()) {
+ if (alerts.size() == 0) {
+ alerts.add(new Alert(ALERT_TYPES.CPU_USAGE_ALERT, server.getName(),
+ Alert.ALERT_TYPE_STR[ALERT_TYPES.CPU_USAGE_ALERT.ordinal()] + "[" + server.getCpuUsage()
+ + "] in " + server.getName()));
+ continue;
+ }
+
+ if (alerts.size() == 1) {
+ Double memoryUtilized = server.getMemoryInUse() / server.getTotalMemory() * 100d;
+ alerts.add(new Alert(ALERT_TYPES.MEMORY_USAGE_ALERT, server.getName(),
+ Alert.ALERT_TYPE_STR[ALERT_TYPES.MEMORY_USAGE_ALERT.ordinal()] + "[" + memoryUtilized + "%] in "
+ + server.getName()));
+ continue;
+ }
+ }
+ return alerts;
+ }
public void initializeAlerts(Cluster cluster) {
AlertsManager alertsManager = new AlertsManager(cluster);
alertsManager.buildAlerts();
cluster.setAlerts( alertsManager.getAlerts() );
+ // cluster.addAlerts( getDummyAlerts() );
}
@@ -654,6 +700,26 @@ public class GlusterDataModelManager {
}
}
+ public void addAlert(Alert alert) {
+ model.getCluster().addAlert(alert);
+ for (ClusterListener listener : listeners) {
+ listener.alertAdded(alert);
+ }
+ }
+
+ public void removeAlert(Alert alert) {
+ model.getCluster().removeAlert(alert);
+ for (ClusterListener listener : listeners) {
+ listener.alertRemoved(alert);
+ }
+ }
+
+ public void updateAlert(Alert alert) {
+ for (ClusterListener listener : listeners) {
+ listener.alertUpdated(alert);
+ }
+ }
+
public List<VolumeOptionInfo> getVolumeOptionsDefaults() {
return volumeOptionsDefaults;
}
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 764401a1..eea8d7f2 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
@@ -63,6 +63,8 @@ public interface IImageKeys {
public static final String REMOVE_BRICK = "icons/tango/32x32/remove-brick.svg";
public static final String LOW_DISK_SPACE = "icons/tango/16x16/low-diskspace.svg";
public static final String DISK_OFFLINE = "icons/status-offline.png";
+ public static final String BRICK_OFFLINE = "icons/status-offline.png";
+
public static final String bricks = "icons/tango/16x16/bricks.png";
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/ServerAdditionDialog.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/ServerAdditionDialog.java
index dd8e0fd1..671b983c 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/ServerAdditionDialog.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/ServerAdditionDialog.java
@@ -20,17 +20,9 @@
*/
package com.gluster.storage.management.gui.dialogs;
-import java.util.HashSet;
import java.util.List;
-import java.util.Set;
-import org.eclipse.core.databinding.DataBindingContext;
-import org.eclipse.core.databinding.UpdateValueStrategy;
-import org.eclipse.core.databinding.beans.PojoProperties;
-import org.eclipse.jface.databinding.swt.SWTObservables;
-import org.eclipse.jface.databinding.swt.WidgetProperties;
import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.ErrorDialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.fieldassist.ControlDecoration;
@@ -44,25 +36,21 @@ import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
-import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.client.GlusterServersClient;
import com.gluster.storage.management.core.model.GlusterServer;
-import com.gluster.storage.management.core.model.Server;
-import com.gluster.storage.management.core.model.Volume;
+import com.gluster.storage.management.gui.GlusterDataModelManager;
import com.gluster.storage.management.gui.utils.GUIHelper;
-import com.gluster.storage.management.gui.validators.StringRequiredValidator;
public class ServerAdditionDialog extends Dialog {
public static final int RETURN_CODE_ERROR = 2;
private Text serverName;
private Button addButton;
- private final GUIHelper guiHelper = GUIHelper.getInstance();
+ private GUIHelper guiHelper = GUIHelper.getInstance();
private ControlDecoration errDecoration;
private Composite composite;
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 5709807a..bff21548 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
@@ -145,10 +145,10 @@ public class ClusterSummaryView extends ViewPart {
private void createAlertsSection() {
Composite section = guiHelper.createSection(form, toolkit, "Alerts", null, 1, false);
- List<Alert> alerts = GlusterDataModelManager.getInstance().getModel().getCluster().getAlerts();
+ List<Alert> alerts = cluster.getAlerts();
for (Alert alert : alerts) {
- addAlertLabel(section, alert);
+ addAlertLabel(section, alert);
}
}
@@ -157,7 +157,7 @@ public class ClusterSummaryView extends ViewPart {
Image alertImage = null;
switch (alert.getType()) {
case OFFLINE_VOLUME_BRICKS_ALERT:
- alertImage = guiHelper.getImage(IImageKeys.DISK_OFFLINE);
+ alertImage = guiHelper.getImage(IImageKeys.BRICK_OFFLINE);
break;
case DISK_USAGE_ALERT:
alertImage = guiHelper.getImage(IImageKeys.LOW_DISK_SPACE);
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/GlusterServersSummaryView.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/GlusterServersSummaryView.java
index d703c9a7..b064d997 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/GlusterServersSummaryView.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/GlusterServersSummaryView.java
@@ -23,6 +23,8 @@ 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.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
@@ -30,9 +32,15 @@ import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.ScrolledForm;
import org.eclipse.ui.part.ViewPart;
+import com.gluster.storage.management.core.model.Alert;
+import com.gluster.storage.management.core.model.Alert.ALERT_TYPES;
import com.gluster.storage.management.core.model.EntityGroup;
import com.gluster.storage.management.core.model.GlusterServer;
+import com.gluster.storage.management.core.model.TaskInfo;
import com.gluster.storage.management.core.model.GlusterServer.SERVER_STATUS;
+import com.gluster.storage.management.core.model.TaskInfo.TASK_TYPE;
+import com.gluster.storage.management.gui.GlusterDataModelManager;
+import com.gluster.storage.management.gui.IImageKeys;
import com.gluster.storage.management.gui.utils.ChartViewerComposite.CHART_TYPE;
import com.gluster.storage.management.gui.utils.GUIHelper;
import com.gluster.storage.management.gui.utils.ChartViewerComposite;
@@ -105,15 +113,71 @@ public class GlusterServersSummaryView extends ViewPart {
}
private void createAlertsSection() {
- Composite section = guiHelper.createSection(form, toolkit, "Alerts", null, 2, false);
+ Composite section = guiHelper.createSection(form, toolkit, "Alerts", null, 1, false);
+ List<Alert> alerts = GlusterDataModelManager.getInstance().getModel().getCluster().getAlerts();
- toolkit.createLabel(section, "Any alerts related to servers\nwill be displayed here.");
+ for (Alert alert : alerts) {
+ if (alert.getType() != ALERT_TYPES.OFFLINE_VOLUME_BRICKS_ALERT) {
+ addAlertLabel(section, alert);
+ }
+ }
}
+
+ private void addAlertLabel(Composite section, Alert alert) {
+ CLabel lblAlert = new CLabel(section, SWT.FLAT);
+ Image alertImage = null;
+ switch (alert.getType()) {
+ case OFFLINE_VOLUME_BRICKS_ALERT:
+ alertImage = guiHelper.getImage(IImageKeys.BRICK_OFFLINE);
+ break;
+ case DISK_USAGE_ALERT:
+ alertImage = guiHelper.getImage(IImageKeys.LOW_DISK_SPACE);
+ break;
+ case OFFLINE_SERVERS_ALERT:
+ alertImage = guiHelper.getImage(IImageKeys.SERVER_OFFLINE);
+ break;
+ case MEMORY_USAGE_ALERT:
+ alertImage = guiHelper.getImage(IImageKeys.MEMORY_USAGE_ALERT);
+ break;
+ case CPU_USAGE_ALERT:
+ alertImage = guiHelper.getImage(IImageKeys.SERVER_WARNING);
+ break;
+ }
+ lblAlert.setImage(alertImage);
+ lblAlert.setText(alert.getMessage());
+ lblAlert.redraw();
+ }
+
+
private void createRunningTasksSection() {
- Composite section = guiHelper.createSection(form, toolkit, "Running Tasks", null, 2, false);
+ Composite section = guiHelper.createSection(form, toolkit, "Running Tasks", null, 1, false);
- toolkit.createLabel(section, "List of running tasks related to\nservers will be displayed here.");
+ for (TaskInfo taskInfo : GlusterDataModelManager.getInstance().getModel().getCluster().getTaskInfoList()) {
+ if (taskInfo.getType() != TASK_TYPE.VOLUME_REBALANCE) { // Exclude volume related tasks
+ addTaskLabel(section, taskInfo);
+ }
+ }
+ }
+
+ private void addTaskLabel(Composite section, TaskInfo taskInfo) {
+ CLabel lblAlert = new CLabel(section, SWT.NONE);
+ lblAlert.setText(taskInfo.getDescription());
+
+ Image taskImage = null;
+ switch(taskInfo.getType()) {
+ case DISK_FORMAT:
+ taskImage = guiHelper.getImage(IImageKeys.DISK);
+ break;
+ case BRICK_MIGRATE:
+ taskImage = guiHelper.getImage(IImageKeys.BRICK_MIGRATE);
+ break;
+ case VOLUME_REBALANCE:
+ taskImage = guiHelper.getImage(IImageKeys.VOLUME_REBALANCE);
+ break;
+ }
+ lblAlert.setImage(taskImage);
+ lblAlert.redraw();
}
/* (non-Javadoc)
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumeSummaryView.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumeSummaryView.java
index d55088b0..d9e82f64 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumeSummaryView.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumeSummaryView.java
@@ -121,7 +121,7 @@ public class VolumeSummaryView extends ViewPart {
private void addAlertLabel(Composite section, Alert alert) {
CLabel lblAlert = new CLabel(section, SWT.NONE);
- lblAlert.setImage(guiHelper.getImage(IImageKeys.DISK_OFFLINE));
+ lblAlert.setImage(guiHelper.getImage(IImageKeys.BRICK_OFFLINE));
lblAlert.setText(alert.getMessage());
lblAlert.redraw();
}
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 72d4e944..e71682c6 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
@@ -102,7 +102,7 @@ public class VolumesSummaryView extends ViewPart {
if (alert.getType() == Alert.ALERT_TYPES.OFFLINE_VOLUME_BRICKS_ALERT) {
CLabel lblAlert = new CLabel(section, SWT.NONE);
lblAlert.setImage((alert.getType() == Alert.ALERT_TYPES.DISK_USAGE_ALERT) ? guiHelper
- .getImage(IImageKeys.LOW_DISK_SPACE) : guiHelper.getImage(IImageKeys.DISK_OFFLINE));
+ .getImage(IImageKeys.LOW_DISK_SPACE) : guiHelper.getImage(IImageKeys.BRICK_OFFLINE));
lblAlert.setText(alert.getMessage());
lblAlert.redraw();
}