summaryrefslogtreecommitdiffstats
path: root/src/com.gluster.storage.management.gui
diff options
context:
space:
mode:
Diffstat (limited to 'src/com.gluster.storage.management.gui')
-rw-r--r--src/com.gluster.storage.management.gui/plugin.xml5
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/AlertsManager.java178
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/BrickTableLabelProvider.java1
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/DeviceTableLabelProvider.java1
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/GlusterDataModelManager.java725
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/ServerDiskTableLabelProvider.java1
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddBrickAction.java2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddServerAction.java2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/ClearTaskAction.java2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CommitTaskAction.java2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/DeleteVolumeAction.java2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/PauseTaskAction.java2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RebalanceVolumeAction.java2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveBrickAction.java2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveServerAction.java2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/ResetVolumeOptionsAction.java2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/ResumeTaskAction.java2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StartVolumeAction.java2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StopTaskAction.java2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StopVolumeAction.java2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/AddBrickPage.java2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/AddBrickWizard.java2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/CreateVolumePage1.java2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/CreateVolumeWizard.java2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/LoginDialog.java2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateBrickPage1.java2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateBrickWizard.java2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/jobs/DataSyncJob.java2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/AlertsPreferencePage.java38
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/GlusterPreferencePage.java2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/PreferenceConstants.java5
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/PreferenceInitializer.java6
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/ClusterSummaryView.java3
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/GlusterServerSummaryView.java4
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/NavigationView.java2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/TasksView.java2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumeBricksView.java2
-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
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractDisksPage.java2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractTableViewerPage.java2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/OptionKeyEditingSupport.java2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/OptionValueEditingSupport.java2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/VolumeOptionsPage.java2
44 files changed, 994 insertions, 39 deletions
diff --git a/src/com.gluster.storage.management.gui/plugin.xml b/src/com.gluster.storage.management.gui/plugin.xml
index 3c87ffe1..147693a6 100644
--- a/src/com.gluster.storage.management.gui/plugin.xml
+++ b/src/com.gluster.storage.management.gui/plugin.xml
@@ -1389,6 +1389,11 @@
id="com.gluster.storage.management.gui.preferences.GlusterPreferencePage"
name="Gluster">
</page>
+ <page
+ class="com.gluster.storage.management.gui.preferences.AlertsPreferencePage"
+ id="com.gluster.storage.management.gui.preferences.AlertsPreferencePage"
+ name="Alerts">
+ </page>
</extension>
<extension
point="org.eclipse.core.runtime.preferences">
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
new file mode 100644
index 00000000..9f9fdd5d
--- /dev/null
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/AlertsManager.java
@@ -0,0 +1,178 @@
+/**
+ * AlertsManager.java
+ *
+ * Copyright (c) 2011 Gluster, Inc. <http://www.gluster.com>
+ * This file is part of Gluster Management Console.
+ *
+ * Gluster Management Console is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Gluster Management Console is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see
+ * <http://www.gnu.org/licenses/>.
+ */
+package com.gluster.storage.management.gui;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.jface.preference.IPreferenceStore;
+
+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.Brick;
+import com.gluster.storage.management.core.model.Brick.BRICK_STATUS;
+import com.gluster.storage.management.core.model.Cluster;
+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;
+import com.gluster.storage.management.core.model.Partition;
+import com.gluster.storage.management.core.model.Volume;
+import com.gluster.storage.management.gui.preferences.PreferenceConstants;
+
+
+public class AlertsManager {
+ private List<Alert> alerts = new ArrayList<Alert>();
+ private Cluster cluster;
+
+ private Double CPU_USAGE_THRESHOLD;
+ private Double MEMORY_USAGE_THRESHOLD;
+ private Double DISK_SPACE_USAGE_THRESHOLD;
+
+ 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;
+ }
+
+ public Alert getAlert(String id) {
+ for (Alert alert : getAlerts()) {
+ if (alert.getId().equals(id)) {
+ return alert;
+ }
+ }
+ return null;
+ }
+
+ public void addAlert(Alert alert) {
+ alerts.add(alert);
+ }
+
+ public void addAlerts(List<Alert> alerts) {
+ this.alerts.addAll(alerts);
+ }
+
+ public void setAlerts(List<Alert> alerts) {
+ this.alerts = alerts;
+ }
+
+ public Boolean removeAlert(String id) {
+ for (int i = 0; i < alerts.size(); i++) {
+ if (alerts.get(i).getId().equals(id)) {
+ return (alerts.remove(i) != null);
+ }
+ }
+ return false;
+ }
+
+ public void clearAll() {
+ this.alerts.clear();
+ }
+
+ public void buildAlerts() {
+ clearAll();
+ addAlerts(getServerAlerts());
+ addAlerts(getVolumeAlerts());
+ }
+
+ private List<Alert> getServerAlerts() {
+ List<Alert> serverAlerts = new ArrayList<Alert>();
+ 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
+ }
+
+ // 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() + "]"));
+ }
+
+ // To check High Memory usage
+ Double memoryUtilized = server.getMemoryInUse() / server.getTotalMemory() * 100;
+ 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()
+ + "]"));
+ }
+
+ // To Check low disk space
+ serverAlerts.addAll(getLowDiskAlerts(server));
+ }
+ return serverAlerts;
+ }
+
+ private List<Alert> getLowDiskAlerts(GlusterServer server) {
+ List<Alert> diskAlerts = new ArrayList<Alert>();
+ boolean hasPartition;
+ Double deviceSpaceUsed;
+ for (Disk disk : server.getDisks()) {
+ hasPartition = false;
+ for (Partition partition : disk.getPartitions()) {
+ hasPartition = true;
+ deviceSpaceUsed = partition.getSpaceInUse() / partition.getSpace() * 100;
+ 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]"));
+ }
+ }
+ if (hasPartition) {
+ continue; // Do not check disk usage
+ }
+
+ // If it is disk
+ deviceSpaceUsed = disk.getSpaceInUse() / disk.getSpace() * 100;
+ 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]"));
+ }
+
+ }
+ return diskAlerts;
+ }
+
+ private List<Alert> getVolumeAlerts() {
+ List<Alert> volumeAlerts = new ArrayList<Alert>();
+ for (Volume volume : cluster.getVolumes()) {
+ // To check off line bricks
+ 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()]));
+ }
+ }
+ }
+ return volumeAlerts;
+ }
+}
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/BrickTableLabelProvider.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/BrickTableLabelProvider.java
index 4ac1db41..c01148b9 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/BrickTableLabelProvider.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/BrickTableLabelProvider.java
@@ -20,7 +20,6 @@ package com.gluster.storage.management.gui;
import org.eclipse.swt.graphics.Image;
-import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.core.exceptions.GlusterRuntimeException;
import com.gluster.storage.management.core.model.Brick;
import com.gluster.storage.management.core.model.Device;
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/DeviceTableLabelProvider.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/DeviceTableLabelProvider.java
index c2e77030..50e842b4 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/DeviceTableLabelProvider.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/DeviceTableLabelProvider.java
@@ -23,7 +23,6 @@ import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.graphics.Image;
-import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.core.exceptions.GlusterRuntimeException;
import com.gluster.storage.management.core.model.Device;
import com.gluster.storage.management.core.model.Device.DEVICE_STATUS;
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
new file mode 100644
index 00000000..61008a00
--- /dev/null
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/GlusterDataModelManager.java
@@ -0,0 +1,725 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Gluster, Inc. <http://www.gluster.com>
+ * This file is part of Gluster Management Console.
+ *
+ * Gluster Management Console is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Gluster Management Console is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *******************************************************************************/
+package com.gluster.storage.management.gui;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+import org.eclipse.core.runtime.IProgressMonitor;
+
+import com.gluster.storage.management.client.DiscoveredServersClient;
+import com.gluster.storage.management.client.GlusterServersClient;
+import com.gluster.storage.management.client.TasksClient;
+import com.gluster.storage.management.client.VolumesClient;
+import com.gluster.storage.management.core.exceptions.GlusterRuntimeException;
+import com.gluster.storage.management.core.model.Alert;
+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.Device.DEVICE_STATUS;
+import com.gluster.storage.management.core.model.Disk;
+import com.gluster.storage.management.core.model.Event;
+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.Partition;
+import com.gluster.storage.management.core.model.Server;
+import com.gluster.storage.management.core.model.Status;
+import com.gluster.storage.management.core.model.TaskInfo;
+import com.gluster.storage.management.core.model.TaskInfo.TASK_TYPE;
+import com.gluster.storage.management.core.model.TaskStatus;
+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.utils.GlusterCoreUtil;
+
+public class GlusterDataModelManager {
+ private static GlusterDataModelManager instance = new GlusterDataModelManager();
+ private GlusterDataModel model;
+ private String securityToken;
+ private List<ClusterListener> listeners = new ArrayList<ClusterListener>();
+ private List<VolumeOptionInfo> volumeOptionsDefaults;
+ private String clusterName;
+ private static Boolean syncInProgress = false;
+ private static final Logger logger = Logger.getLogger(GlusterDataModelManager.class);
+
+ private GlusterDataModelManager() {
+ }
+
+ public String getSecurityToken() {
+ return securityToken;
+ }
+
+ public void setSecurityToken(String securityToken) {
+ this.securityToken = securityToken;
+ }
+
+ public void setClusterName(String clusterName) {
+ this.clusterName = clusterName;
+ }
+
+ public String getClusterName() {
+ return clusterName;
+ }
+
+ public GlusterDataModel getModel() {
+ return model;
+ }
+
+ public static GlusterDataModelManager getInstance() {
+ return instance;
+ }
+
+ public void initializeModel(String clusterName) {
+ setClusterName(clusterName);
+
+ model = fetchData(clusterName);
+ }
+
+ private GlusterDataModel fetchData(String clusterName) {
+ GlusterDataModel model = new GlusterDataModel("Gluster Data Model");
+ Cluster cluster = new Cluster(clusterName, model);
+
+ initializeGlusterServers(cluster);
+ initializeVolumes(cluster);
+
+ initializeAutoDiscoveredServers(cluster);
+ initializeTasks(cluster);
+ initializeAlerts(cluster);
+ initializeVolumeOptionsDefaults();
+
+ model.addCluster(cluster);
+ return model;
+ }
+
+ public void refreshVolumeData(Volume oldVolume) {
+ VolumesClient volumeClient = new VolumesClient();
+ Volume newVolume = volumeClient.getVolume(oldVolume.getName());
+ if(!oldVolume.equals(newVolume)) {
+ volumeChanged(oldVolume, newVolume);
+ }
+ }
+
+ public GlusterDataModel fetchModel(IProgressMonitor monitor) {
+ synchronized (syncInProgress) {
+ if(syncInProgress) {
+ logger.info("Previous data sync is still running. Skipping this one.");
+ return null;
+ }
+ syncInProgress = true;
+ }
+
+ try {
+ logger.info("Starting data sync");
+ GlusterDataModel model = new GlusterDataModel("Gluster Data Model");
+ Cluster cluster = new Cluster(clusterName, model);
+ model.addCluster(cluster);
+
+ monitor.beginTask("Data Sync", 4);
+
+ monitor.setTaskName("Syncing servers...");
+ initializeGlusterServers(cluster);
+ monitor.worked(1);
+
+ monitor.setTaskName("Syncing volumes...");
+ initializeVolumes(cluster);
+ monitor.worked(1);
+
+ monitor.setTaskName("Syncing discovered servers...");
+ initializeAutoDiscoveredServers(cluster);
+ monitor.worked(1);
+
+ monitor.setTaskName("Syncing tasks...");
+ initializeTasks(cluster);
+ monitor.worked(1);
+
+ monitor.done();
+ return model;
+ } catch(RuntimeException e) {
+ logger.error("Error in data sync!", e);
+ return null;
+ } finally {
+ syncInProgress = false;
+ }
+ }
+
+ public void updateModel(GlusterDataModel model) {
+ updateVolumes(model);
+ updateGlusterServers(model);
+ updateDiscoveredServers(model);
+ updateTasks(model);
+ }
+
+ private void updateTasks(GlusterDataModel newModel) {
+ List<TaskInfo> oldTasks = model.getCluster().getTaskInfoList();
+ List<TaskInfo> newTasks = newModel.getCluster().getTaskInfoList();
+
+ Set<TaskInfo> addedTasks = GlusterCoreUtil.getAddedEntities(oldTasks, newTasks, true);
+ for(TaskInfo task : addedTasks) {
+ addTask(task);
+ }
+
+ Set<TaskInfo> removedTasks = GlusterCoreUtil.getAddedEntities(newTasks, oldTasks, true);
+ for(TaskInfo task : removedTasks) {
+ removeTask(task);
+ }
+
+ Map<TaskInfo, TaskInfo> modifiedTasks = GlusterCoreUtil.getModifiedEntities(oldTasks, newTasks);
+ for(Entry<TaskInfo, TaskInfo> entry : modifiedTasks.entrySet()) {
+ TaskInfo modifiedTask = entry.getKey();
+ modifiedTask.copyFrom(entry.getValue());
+ updateTask(modifiedTask);
+ }
+ }
+
+ private void updateDiscoveredServers(GlusterDataModel newModel) {
+ List<Server> oldServers = model.getCluster().getAutoDiscoveredServers();
+ List<Server> newServers = newModel.getCluster().getAutoDiscoveredServers();
+
+ Set<Server> addedServers = GlusterCoreUtil.getAddedEntities(oldServers, newServers, true);
+ for (Server addedServer : addedServers) {
+ addDiscoveredServer(addedServer);
+ }
+
+ Set<Server> removedServers = GlusterCoreUtil.getAddedEntities(newServers, oldServers, true);
+ for (Server removedServer : removedServers) {
+ removeDiscoveredServer(removedServer);
+ }
+
+ Map<Server, Server> modifiedServers = GlusterCoreUtil.getModifiedEntities(oldServers, newServers);
+ for(Entry<Server, Server> entry : modifiedServers.entrySet()) {
+ discoveredServerChanged(entry.getKey(), entry.getValue());
+ }
+ }
+
+ private void updateGlusterServers(GlusterDataModel newModel) {
+ List<GlusterServer> oldServers = model.getCluster().getServers();
+ List<GlusterServer> newServers = newModel.getCluster().getServers();
+
+ Set<GlusterServer> addedServers = GlusterCoreUtil.getAddedEntities(oldServers, newServers, true);
+ for (GlusterServer addedServer : addedServers) {
+ addGlusterServer(addedServer);
+ }
+
+ Set<GlusterServer> removedServers = GlusterCoreUtil.getAddedEntities(newServers, oldServers, true);
+ for (GlusterServer removedServer : removedServers) {
+ removeGlusterServer(removedServer);
+ }
+
+ Map<GlusterServer, GlusterServer> modifiedServers = GlusterCoreUtil.getModifiedEntities(oldServers, newServers);
+ for(Entry<GlusterServer, GlusterServer> entry : modifiedServers.entrySet()) {
+ glusterServerChanged(entry.getKey(), entry.getValue());
+ }
+ }
+
+ public void glusterServerChanged(GlusterServer oldServer, GlusterServer newServer) {
+ oldServer.copyFrom(newServer);
+ for (ClusterListener listener : listeners) {
+ listener.serverChanged(oldServer, new Event(EVENT_TYPE.GLUSTER_SERVER_CHANGED, newServer));
+ }
+
+ updateDisks(oldServer, oldServer.getDisks(), newServer.getDisks());
+ }
+
+ private void updateDisks(Server server, List<Disk> oldDisks, List<Disk> newDisks) {
+ Set<Disk> addedDisks = GlusterCoreUtil.getAddedEntities(oldDisks, newDisks, false);
+ addDisks(server, addedDisks);
+
+ Set<Disk> removedDisks = GlusterCoreUtil.getAddedEntities(newDisks, oldDisks, false);
+ removeDisks(server, removedDisks);
+
+ Map<Disk, Disk> modifiedDisks = GlusterCoreUtil.getModifiedEntities(oldDisks, newDisks);
+ disksChanged(server, modifiedDisks);
+ }
+
+ private void disksChanged(Server server, Map<Disk, Disk> modifiedDisks) {
+ if(modifiedDisks.size() == 0) {
+ return;
+ }
+
+ for (Entry<Disk, Disk> entry : modifiedDisks.entrySet()) {
+ entry.getKey().copyFrom(entry.getValue());
+ }
+ for (ClusterListener listener : listeners) {
+ if (server instanceof GlusterServer) {
+ listener.serverChanged((GlusterServer) server, new Event(EVENT_TYPE.DISKS_CHANGED, modifiedDisks));
+ } else {
+ listener.discoveredServerChanged(server, new Event(EVENT_TYPE.DISKS_CHANGED, modifiedDisks));
+ }
+ }
+ }
+
+ public void addDisks(Server server, Set<Disk> disks) {
+ if(disks.size() == 0) {
+ return;
+ }
+
+ server.addDisks(disks);
+ for (ClusterListener listener : listeners) {
+ if(server instanceof GlusterServer) {
+ listener.serverChanged((GlusterServer)server, new Event(EVENT_TYPE.DISKS_ADDED, disks));
+ } else {
+ listener.discoveredServerChanged(server, new Event(EVENT_TYPE.DISKS_ADDED, disks));
+ }
+ }
+ }
+
+ public void removeDisks(Server server, Set<Disk> disks) {
+ if(disks.size() == 0) {
+ return;
+ }
+
+ for(Disk disk : disks) {
+ server.removeDisk(disk);
+ }
+
+ for (ClusterListener listener : listeners) {
+ if(server instanceof GlusterServer) {
+ listener.serverChanged((GlusterServer)server, new Event(EVENT_TYPE.DISKS_REMOVED, disks));
+ } else {
+ listener.discoveredServerChanged(server, new Event(EVENT_TYPE.DISKS_REMOVED, disks));
+ }
+ }
+ }
+
+ private void updateVolumes(GlusterDataModel newModel) {
+ List<Volume> oldVolumes = model.getCluster().getVolumes();
+ List<Volume> newVolumes = newModel.getCluster().getVolumes();
+
+ Set<Volume> addedVolumes = GlusterCoreUtil.getAddedEntities(oldVolumes, newVolumes, false);
+ for (Volume addedVolume : addedVolumes) {
+ addVolume(addedVolume);
+ }
+
+ Set<Volume> removedVolumes = GlusterCoreUtil.getAddedEntities(newVolumes, oldVolumes, false);
+ for (Volume removedVolume : removedVolumes) {
+ deleteVolume(removedVolume);
+ }
+
+ Map<Volume, Volume> modifiedVolumes = GlusterCoreUtil.getModifiedEntities(oldVolumes, newVolumes);
+ for(Entry<Volume, Volume> entry : modifiedVolumes.entrySet()) {
+ volumeChanged(entry.getKey(), entry.getValue());
+ }
+ }
+
+
+
+ private void volumeChanged(Volume oldVolume, Volume newVolume) {
+ oldVolume.copyFrom(newVolume);
+ for (ClusterListener listener : listeners) {
+ listener.volumeChanged(oldVolume, new Event(EVENT_TYPE.VOLUME_CHANGED, newVolume));
+ }
+ updateBricks(oldVolume, oldVolume.getBricks(), newVolume.getBricks());
+ }
+
+ private void updateBricks(Volume volume, List<Brick> oldBricks, List<Brick> newBricks) {
+ Set<Brick> addedBricks = GlusterCoreUtil.getAddedEntities(oldBricks, newBricks, false);
+ addBricks(volume, addedBricks);
+
+ Set<Brick> removedBricks = GlusterCoreUtil.getAddedEntities(newBricks, oldBricks, false);
+ removeBricks(volume, removedBricks);
+
+ Map<Brick, Brick> modifiedBricks = GlusterCoreUtil.getModifiedEntities(oldBricks, newBricks);
+ bricksChanged(volume, modifiedBricks);
+ }
+
+ public void bricksChanged(Volume volume, Map<Brick, Brick> modifiedBricks) {
+ if(modifiedBricks.size() == 0) {
+ return;
+ }
+
+ for(Entry<Brick, Brick> entry : modifiedBricks.entrySet()) {
+ entry.getKey().copyFrom(entry.getValue());
+ }
+
+ for (ClusterListener listener : listeners) {
+ listener.volumeChanged(volume, new Event(EVENT_TYPE.BRICKS_CHANGED, modifiedBricks));
+ }
+ }
+
+ private void initializeGlusterServers(Cluster cluster) {
+ cluster.setServers(new GlusterServersClient(cluster.getName()).getServers());
+ }
+
+ private void initializeAutoDiscoveredServers(Cluster cluster) {
+ cluster.setAutoDiscoveredServers(new DiscoveredServersClient(securityToken).getDiscoveredServerDetails());
+ }
+
+ private void initializeVolumes(Cluster cluster) {
+ VolumesClient volumeClient = new VolumesClient(cluster.getName());
+ cluster.setVolumes(volumeClient.getAllVolumes());
+ }
+
+ private void initializeVolumeOptionsDefaults() {
+ this.volumeOptionsDefaults = new VolumesClient(clusterName).getVolumeOptionsDefaults();
+ }
+
+ public void initializeTasks(Cluster cluster) {
+ List<TaskInfo> taskInfoList = new TasksClient(cluster.getName()).getAllTasks();
+ // List<TaskInfo> taskInfoList = getDummyTasks();
+ cluster.setTaskInfoList(taskInfoList);
+ }
+
+ private List<TaskInfo> getDummyTasks() {
+ List<TaskInfo> taskInfoList = new ArrayList<TaskInfo>();
+
+ // Task #1
+ TaskInfo taskInfo = new TaskInfo();
+ taskInfo.setType(TASK_TYPE.BRICK_MIGRATE);
+ taskInfo.setName("Migrate Brick-music");
+ taskInfo.setPauseSupported(true);
+ taskInfo.setStopSupported(true);
+ taskInfo.setStatus(new TaskStatus(new Status(Status.STATUS_CODE_RUNNING, "")));
+
+ taskInfo.getStatus().setMessage("Migrating file xxxxx to yyyy");
+ taskInfo.setDescription("Migrate Brick on volume [music] from /export/adb/music to /export/sdc/music.");
+ taskInfoList.add(taskInfo);
+ // Task #2
+ taskInfo = new TaskInfo();
+ taskInfo.setType(TASK_TYPE.DISK_FORMAT);
+ taskInfo.setName("Format Disk-server1:sdc");
+ taskInfo.setPauseSupported(false);
+ taskInfo.setStopSupported(false);
+ taskInfo.setStatus( new TaskStatus(new Status(Status.STATUS_CODE_FAILURE, "")));
+ taskInfo.getStatus().setMessage("Format completes 80% ...");
+ taskInfo.setDescription("Formatting disk server1:sdc.");
+ taskInfoList.add(taskInfo);
+
+ return taskInfoList;
+ }
+
+ public void initializeAlerts(Cluster cluster) {
+ AlertsManager alertsManager = new AlertsManager(cluster);
+ alertsManager.buildAlerts();
+ cluster.setAlerts( alertsManager.getAlerts() );
+ }
+
+
+ public Volume addVolume(List<Volume> volumes, String name, Cluster cluster, VOLUME_TYPE volumeType,
+ TRANSPORT_TYPE transportType, VOLUME_STATUS status) {
+ Volume volume = new Volume(name, cluster, volumeType, transportType, status);
+ volumes.add(volume);
+
+ return volume;
+ }
+
+ private Device getDevice(String serverName, String deviceName) {
+ List<Device> allDevices = getReadyDevicesOfAllServers();
+ for (Device device : allDevices) {
+ if (device.getServerName().equals(serverName) && device.getName().equals(deviceName)) {
+ return device;
+ }
+ }
+ return null;
+ }
+
+ /*
+ * @param diskName (sda)
+ *
+ * @return The device object for given device name
+ */
+ public Device getDeviceDetails(String deviceName) {
+ List<Device> allDevices = getReadyDevicesOfAllServers();
+ for (Device device : allDevices) {
+ if (device.getName().equals(deviceName)) {
+ return device;
+ }
+ }
+ return null;
+ }
+
+
+ public List<Device> getReadyDevicesOfVolume(Volume volume) {
+ Device device = null;
+ List<Device> volumeDevices = new ArrayList<Device>();
+ for (Brick brick : volume.getBricks()) {
+ device = getDevice(brick.getServerName(), brick.getDeviceName());
+ if (device != null && device.isReady()) {
+ volumeDevices.add(device);
+ }
+ }
+ return volumeDevices;
+ }
+
+ public List<Device> getReadyDevicesOfAllServers() {
+ return getReadyDevicesOfAllServersExcluding(new ArrayList<Device>());
+ }
+
+ public List<Device> getReadyDevicesOfAllServersExcluding(List<Device> excludeDevices) {
+ List<Device> devices = new ArrayList<Device>();
+
+ for (Server server : model.getCluster().getServers()) {
+ for (Disk disk : server.getDisks()) {
+ if(disk.hasPartitions()) {
+ for(Partition partition : disk.getPartitions()) {
+ if(partition.isReady() && !excludeDevices.contains(partition)) {
+ devices.add(partition);
+ }
+ }
+ } else if (disk.isReady() && !excludeDevices.contains(disk)) {
+ devices.add(disk);
+ }
+ }
+ }
+ return devices;
+ }
+
+ public void addClusterListener(ClusterListener listener) {
+ listeners.add(listener);
+ }
+
+ public void removeClusterListener(ClusterListener listener) {
+ listeners.remove(listener);
+ }
+
+ public void addGlusterServer(GlusterServer server) {
+ Cluster cluster = model.getCluster();
+ cluster.addServer(server);
+
+ for (ClusterListener listener : listeners) {
+ listener.serverAdded(server);
+ }
+
+ removeDiscoveredServer(server.getName());
+ }
+
+ public void addDiscoveredServer(Server server) {
+ Cluster cluster = model.getCluster();
+ cluster.addDiscoveredServer(server);
+
+ for (ClusterListener listener : listeners) {
+ listener.discoveredServerAdded(server);;
+ }
+ }
+
+ public void discoveredServerChanged(Server oldServer, Server newServer) {
+ oldServer.copyFrom(newServer);
+ for (ClusterListener listener : listeners) {
+ listener.discoveredServerChanged(oldServer, new Event(EVENT_TYPE.DISCOVERED_SERVER_CHANGED, newServer));
+ }
+ updateDisks(oldServer, oldServer.getDisks(), newServer.getDisks());
+ }
+
+ public void removeDiscoveredServer(String serverName) {
+ Cluster cluster = model.getCluster();
+ // TODO: Move auto-discovered servers outside the cluster
+ for(Server server : cluster.getAutoDiscoveredServers()) {
+ if(server.getName().toUpperCase().equals(serverName.toUpperCase())) {
+ removeDiscoveredServer(server);
+ return;
+ }
+ }
+ }
+
+ public void removeDiscoveredServer(Server server) {
+ Cluster cluster = model.getCluster();
+ cluster.removeDiscoveredServer(server);
+
+ for (ClusterListener listener : listeners) {
+ listener.discoveredServerRemoved(server);
+ }
+ }
+
+ public void removeGlusterServer(GlusterServer server) {
+ Cluster cluster = model.getCluster();
+ cluster.removeServer(server);
+
+ // can't use an iterator here. The method AbstractList.Itr#next checks for concurrent modification.
+ // Since listeners can end up creating new views, which add themselves as listeners, the listeners
+ // list can be concurrently modified which can result in an exception while using iterator.
+ // Hence we use List#get instead of the iterator
+ for(int i = 0; i < listeners.size(); i++) {
+ ClusterListener listener = listeners.get(i);
+ listener.serverRemoved(server);
+ }
+
+ // add it to discovered servers list
+ Server removedServer = new Server();
+ removedServer.copyFrom(server);
+ addDiscoveredServer(removedServer);
+ }
+
+ public void deleteVolume(Volume volume) {
+ Cluster cluster = model.getCluster();
+ cluster.deleteVolume(volume);
+
+ // can't use an iterator here. The method AbstractList.Itr#next checks for concurrent modification.
+ // Since listeners can end up creating new views, which add themselves as listeners, the listeners
+ // list can be concurrently modified which can result in an exception while using iterator.
+ // Hence we use List#get instead of the iterator
+ for(int i = 0; i < listeners.size(); i++) {
+ ClusterListener listener = listeners.get(i);
+ listener.volumeDeleted(volume);
+ }
+ }
+
+ public void updateVolumeStatus(Volume volume, VOLUME_STATUS newStatus) {
+ volume.setStatus(newStatus);
+ for (ClusterListener listener : listeners) {
+ listener.volumeChanged(volume, new Event(EVENT_TYPE.VOLUME_STATUS_CHANGED, newStatus));
+ }
+ }
+
+ public void resetVolumeOptions(Volume volume) {
+ volume.getOptions().clear();
+ for (ClusterListener listener : listeners) {
+ listener.volumeChanged(volume, new Event(EVENT_TYPE.VOLUME_OPTIONS_RESET, null));
+ }
+ }
+
+ public void addBricks(Volume volume, Set<Brick> bricks) {
+ if(bricks.size() == 0) {
+ return;
+ }
+
+ volume.addBricks(bricks);
+ for (ClusterListener listener : listeners) {
+ listener.volumeChanged(volume, new Event(EVENT_TYPE.BRICKS_ADDED, bricks));
+ }
+ }
+
+ public void removeBricks(Volume volume, Set<Brick> bricks) {
+ if(bricks.size() == 0) {
+ return;
+ }
+
+ // Remove the bricks from the volume object
+ for (Brick brick : bricks) {
+ volume.removeBrick(brick);
+ }
+
+ for (ClusterListener listener : listeners) {
+ listener.volumeChanged(volume, new Event(EVENT_TYPE.BRICKS_REMOVED, bricks));
+ }
+ }
+
+ public void setVolumeOption(Volume volume, String optionKey, String optionValue) {
+ volume.setOption(optionKey, optionValue);
+ for (ClusterListener listener : listeners) {
+ listener.volumeChanged(volume, new Event(EVENT_TYPE.VOLUME_OPTION_SET, optionKey));
+ }
+ }
+
+ public void addVolume(Volume volume) {
+ Cluster cluster = model.getCluster();
+ cluster.addVolume(volume);
+
+ for (ClusterListener listener : listeners) {
+ listener.volumeCreated(volume);
+ }
+ }
+
+ public void addTask(TaskInfo taskInfo) {
+ Cluster cluster = model.getCluster();
+ cluster.addTaskInfo(taskInfo);
+ for (ClusterListener listener : listeners) {
+ listener.taskAdded(taskInfo);
+ }
+ }
+
+ // Updating the Task
+ public void updateTask(TaskInfo taskInfo) {
+ for (ClusterListener listener : listeners) {
+ listener.taskUpdated(taskInfo);
+ }
+ }
+
+ public void removeTask(TaskInfo taskInfo) {
+ model.getCluster().removeTaskInfo(taskInfo);
+ for (ClusterListener listener : listeners) {
+ listener.taskRemoved(taskInfo);
+ }
+ }
+
+ public List<VolumeOptionInfo> getVolumeOptionsDefaults() {
+ return volumeOptionsDefaults;
+ }
+
+ public VolumeOptionInfo getVolumeOptionInfo(String optionKey) {
+ for (VolumeOptionInfo info : volumeOptionsDefaults) {
+ if (info.getName().equals(optionKey)) {
+ return info;
+ }
+ }
+ throw new GlusterRuntimeException("Invalid option key [" + optionKey
+ + "] passed to GlusterDataModelManager#getVolumeOptionInfo");
+ }
+
+ public String getVolumeOptionDefaultValue(String optionKey) {
+ return getVolumeOptionInfo(optionKey).getDefaultValue();
+ }
+
+ public String getVolumeOptionDesc(String optionKey) {
+ return getVolumeOptionInfo(optionKey).getDescription();
+ }
+
+ public void setAccessControlList(Volume volume, String accessControlList) {
+ setVolumeOption(volume, Volume.OPTION_AUTH_ALLOW, accessControlList);
+ }
+
+ public Server getGlusterServer(String serverName) {
+ for (Server server : model.getCluster().getServers()) {
+ if (server.getName().equals(serverName)) {
+ return server;
+ }
+ }
+ return null;
+ }
+
+ private Boolean isDeviceUsed(Volume volume, Device device) {
+ for (Brick brick : volume.getBricks()) {
+ if (device.getName().equals(brick.getDeviceName()) && device.getServerName().equals(brick.getServerName())) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public String getDeviceStatus(Device device) {
+ if (device.getStatus() == DEVICE_STATUS.INITIALIZED) {
+ for (Volume volume : model.getCluster().getVolumes()) {
+ if (isDeviceUsed(volume, device)) {
+ return "In use";
+ }
+ }
+ }
+ return device.getStatusStr();
+ }
+
+ public List<String> getVolumesOfServer(String serverName) {
+ List<String> volumeNames = new ArrayList<String>();
+ Cluster cluster = model.getCluster();
+ for (Volume volume : cluster.getVolumes()) {
+ for (Brick brick : volume.getBricks()) {
+ if (serverName.equals(brick.getServerName())) {
+ volumeNames.add(volume.getName());
+ break;
+ }
+ }
+ }
+ return volumeNames;
+ }
+}
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/ServerDiskTableLabelProvider.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/ServerDiskTableLabelProvider.java
index 96372dc3..15c222fc 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/ServerDiskTableLabelProvider.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/ServerDiskTableLabelProvider.java
@@ -20,7 +20,6 @@ package com.gluster.storage.management.gui;
import org.eclipse.swt.graphics.Image;
-import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.core.constants.CoreConstants;
import com.gluster.storage.management.core.exceptions.GlusterRuntimeException;
import com.gluster.storage.management.core.model.Device.DEVICE_STATUS;
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddBrickAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddBrickAction.java
index e86164ec..a14d6869 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddBrickAction.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddBrickAction.java
@@ -25,8 +25,8 @@ import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.wizard.WizardDialog;
-import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.core.model.Volume;
+import com.gluster.storage.management.gui.GlusterDataModelManager;
import com.gluster.storage.management.gui.dialogs.AddBrickWizard;
public class AddBrickAction extends AbstractActionDelegate {
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddServerAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddServerAction.java
index 6d21e537..a97e537a 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddServerAction.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddServerAction.java
@@ -26,10 +26,10 @@ import org.eclipse.jface.viewers.ISelection;
import org.eclipse.swt.custom.BusyIndicator;
import org.eclipse.swt.widgets.Display;
-import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.client.GlusterServersClient;
import com.gluster.storage.management.core.constants.CoreConstants;
import com.gluster.storage.management.core.model.Server;
+import com.gluster.storage.management.gui.GlusterDataModelManager;
import com.gluster.storage.management.gui.utils.GUIHelper;
public class AddServerAction extends AbstractActionDelegate {
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/ClearTaskAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/ClearTaskAction.java
index c22eca43..2c9baf59 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/ClearTaskAction.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/ClearTaskAction.java
@@ -3,10 +3,10 @@ package com.gluster.storage.management.gui.actions;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
-import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.client.TasksClient;
import com.gluster.storage.management.core.model.Status;
import com.gluster.storage.management.core.model.TaskInfo;
+import com.gluster.storage.management.gui.GlusterDataModelManager;
public class ClearTaskAction extends AbstractActionDelegate {
private TaskInfo taskInfo;
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CommitTaskAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CommitTaskAction.java
index 86a71882..6a13fc8e 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CommitTaskAction.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CommitTaskAction.java
@@ -3,11 +3,11 @@ package com.gluster.storage.management.gui.actions;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
-import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.client.TasksClient;
import com.gluster.storage.management.core.model.Status;
import com.gluster.storage.management.core.model.TaskInfo;
import com.gluster.storage.management.core.model.TaskStatus;
+import com.gluster.storage.management.gui.GlusterDataModelManager;
public class CommitTaskAction extends AbstractActionDelegate {
private TaskInfo taskInfo;
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/DeleteVolumeAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/DeleteVolumeAction.java
index c3607463..44ce02ad 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/DeleteVolumeAction.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/DeleteVolumeAction.java
@@ -23,10 +23,10 @@ import org.eclipse.jface.action.IAction;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.ISelection;
-import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.client.VolumesClient;
import com.gluster.storage.management.core.model.Volume;
import com.gluster.storage.management.core.model.Volume.VOLUME_STATUS;
+import com.gluster.storage.management.gui.GlusterDataModelManager;
import com.gluster.storage.management.gui.IImageKeys;
import com.gluster.storage.management.gui.utils.GUIHelper;
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/PauseTaskAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/PauseTaskAction.java
index 872df738..a9dceaa3 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/PauseTaskAction.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/PauseTaskAction.java
@@ -23,11 +23,11 @@ package com.gluster.storage.management.gui.actions;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
-import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.client.TasksClient;
import com.gluster.storage.management.core.model.Status;
import com.gluster.storage.management.core.model.TaskInfo;
import com.gluster.storage.management.core.model.TaskStatus;
+import com.gluster.storage.management.gui.GlusterDataModelManager;
import com.gluster.storage.management.gui.toolbar.GlusterToolbarManager;
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RebalanceVolumeAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RebalanceVolumeAction.java
index 9441de45..41b74082 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RebalanceVolumeAction.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RebalanceVolumeAction.java
@@ -23,11 +23,11 @@ import java.net.URI;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
-import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.client.TasksClient;
import com.gluster.storage.management.client.VolumesClient;
import com.gluster.storage.management.core.model.TaskInfo;
import com.gluster.storage.management.core.model.Volume;
+import com.gluster.storage.management.gui.GlusterDataModelManager;
import com.gluster.storage.management.gui.utils.GUIHelper;
public class RebalanceVolumeAction extends AbstractActionDelegate {
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveBrickAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveBrickAction.java
index f7d1207c..70e7df21 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveBrickAction.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveBrickAction.java
@@ -11,11 +11,11 @@ import org.eclipse.swt.custom.BusyIndicator;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IWorkbenchPart;
-import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.client.VolumesClient;
import com.gluster.storage.management.core.model.Brick;
import com.gluster.storage.management.core.model.Volume;
import com.gluster.storage.management.core.utils.StringUtil;
+import com.gluster.storage.management.gui.GlusterDataModelManager;
import com.gluster.storage.management.gui.IImageKeys;
import com.gluster.storage.management.gui.utils.GUIHelper;
import com.gluster.storage.management.gui.views.VolumeBricksView;
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveServerAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveServerAction.java
index 4862b7b1..b0156b87 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveServerAction.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveServerAction.java
@@ -30,10 +30,10 @@ import org.eclipse.jface.viewers.ISelection;
import org.eclipse.swt.custom.BusyIndicator;
import org.eclipse.swt.widgets.Display;
-import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.client.GlusterServersClient;
import com.gluster.storage.management.core.constants.CoreConstants;
import com.gluster.storage.management.core.model.GlusterServer;
+import com.gluster.storage.management.gui.GlusterDataModelManager;
import com.gluster.storage.management.gui.utils.GUIHelper;
public class RemoveServerAction extends AbstractActionDelegate {
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/ResetVolumeOptionsAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/ResetVolumeOptionsAction.java
index b11a0f9a..e68436b0 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/ResetVolumeOptionsAction.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/ResetVolumeOptionsAction.java
@@ -4,9 +4,9 @@ import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.swt.widgets.Display;
-import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.client.VolumesClient;
import com.gluster.storage.management.core.model.Volume;
+import com.gluster.storage.management.gui.GlusterDataModelManager;
import com.gluster.storage.management.gui.utils.GUIHelper;
public class ResetVolumeOptionsAction extends AbstractActionDelegate {
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/ResumeTaskAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/ResumeTaskAction.java
index d8f1b955..d5cfe2c5 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/ResumeTaskAction.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/ResumeTaskAction.java
@@ -3,11 +3,11 @@ package com.gluster.storage.management.gui.actions;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
-import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.client.TasksClient;
import com.gluster.storage.management.core.model.Status;
import com.gluster.storage.management.core.model.TaskInfo;
import com.gluster.storage.management.core.model.TaskStatus;
+import com.gluster.storage.management.gui.GlusterDataModelManager;
public class ResumeTaskAction extends AbstractActionDelegate {
private TaskInfo taskInfo;
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StartVolumeAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StartVolumeAction.java
index 322a87f9..8b3fee68 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StartVolumeAction.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StartVolumeAction.java
@@ -21,10 +21,10 @@ package com.gluster.storage.management.gui.actions;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
-import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.client.VolumesClient;
import com.gluster.storage.management.core.model.Volume;
import com.gluster.storage.management.core.model.Volume.VOLUME_STATUS;
+import com.gluster.storage.management.gui.GlusterDataModelManager;
public class StartVolumeAction extends AbstractActionDelegate {
private Volume volume;
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StopTaskAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StopTaskAction.java
index 306edbf3..19030712 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StopTaskAction.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StopTaskAction.java
@@ -3,10 +3,10 @@ package com.gluster.storage.management.gui.actions;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
-import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.client.TasksClient;
import com.gluster.storage.management.core.model.Status;
import com.gluster.storage.management.core.model.TaskInfo;
+import com.gluster.storage.management.gui.GlusterDataModelManager;
public class StopTaskAction extends AbstractActionDelegate {
private TaskInfo taskInfo;
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StopVolumeAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StopVolumeAction.java
index 62c690e2..ccde24a4 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StopVolumeAction.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StopVolumeAction.java
@@ -22,10 +22,10 @@ import org.eclipse.jface.action.IAction;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.ISelection;
-import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.client.VolumesClient;
import com.gluster.storage.management.core.model.Volume;
import com.gluster.storage.management.core.model.Volume.VOLUME_STATUS;
+import com.gluster.storage.management.gui.GlusterDataModelManager;
import com.gluster.storage.management.gui.IImageKeys;
import com.gluster.storage.management.gui.utils.GUIHelper;
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/AddBrickPage.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/AddBrickPage.java
index 2856ea02..14e36852 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/AddBrickPage.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/AddBrickPage.java
@@ -29,12 +29,12 @@ import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
-import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.core.model.Brick;
import com.gluster.storage.management.core.model.Device;
import com.gluster.storage.management.core.model.Disk;
import com.gluster.storage.management.core.model.Volume;
import com.gluster.storage.management.core.model.Volume.VOLUME_TYPE;
+import com.gluster.storage.management.gui.GlusterDataModelManager;
import com.richclientgui.toolbox.duallists.DualListComposite.ListContentChangedListener;
import com.richclientgui.toolbox.duallists.IRemovableContentProvider;
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/AddBrickWizard.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/AddBrickWizard.java
index 58255f8c..0270eddb 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/AddBrickWizard.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/AddBrickWizard.java
@@ -27,11 +27,11 @@ import java.util.Set;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.wizard.Wizard;
-import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.client.VolumesClient;
import com.gluster.storage.management.core.model.Brick;
import com.gluster.storage.management.core.model.Volume;
import com.gluster.storage.management.core.utils.StringUtil;
+import com.gluster.storage.management.gui.GlusterDataModelManager;
/**
*
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/CreateVolumePage1.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/CreateVolumePage1.java
index cd2de837..b4672095 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/CreateVolumePage1.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/CreateVolumePage1.java
@@ -47,7 +47,6 @@ import org.eclipse.swt.widgets.Link;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Text;
-import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.core.model.Brick;
import com.gluster.storage.management.core.model.Device;
import com.gluster.storage.management.core.model.Disk;
@@ -57,6 +56,7 @@ import com.gluster.storage.management.core.model.Volume.NAS_PROTOCOL;
import com.gluster.storage.management.core.model.Volume.TRANSPORT_TYPE;
import com.gluster.storage.management.core.model.Volume.VOLUME_TYPE;
import com.gluster.storage.management.core.utils.ValidationUtil;
+import com.gluster.storage.management.gui.GlusterDataModelManager;
public class CreateVolumePage1 extends WizardPage {
public static final String PAGE_NAME = "create.volume.page.1";
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/CreateVolumeWizard.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/CreateVolumeWizard.java
index ff4bdd98..c5cbcc16 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/CreateVolumeWizard.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/CreateVolumeWizard.java
@@ -21,10 +21,10 @@ package com.gluster.storage.management.gui.dialogs;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.wizard.Wizard;
-import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.client.VolumesClient;
import com.gluster.storage.management.core.model.Volume;
import com.gluster.storage.management.core.model.Volume.VOLUME_STATUS;
+import com.gluster.storage.management.gui.GlusterDataModelManager;
public class CreateVolumeWizard extends Wizard {
private static final String title = "Gluster Management Console - Create Volume";
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/LoginDialog.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/LoginDialog.java
index 6cb15d6a..cb129a32 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/LoginDialog.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/LoginDialog.java
@@ -42,11 +42,11 @@ import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import com.gluster.storage.management.client.ClustersClient;
-import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.client.UsersClient;
import com.gluster.storage.management.core.constants.CoreConstants;
import com.gluster.storage.management.core.model.ConnectionDetails;
import com.gluster.storage.management.gui.Activator;
+import com.gluster.storage.management.gui.GlusterDataModelManager;
import com.gluster.storage.management.gui.IImageKeys;
import com.gluster.storage.management.gui.dialogs.ClusterSelectionDialog.CLUSTER_MODE;
import com.gluster.storage.management.gui.preferences.PreferenceConstants;
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateBrickPage1.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateBrickPage1.java
index f8fce5e4..cb59c310 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateBrickPage1.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateBrickPage1.java
@@ -43,12 +43,12 @@ import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Text;
-import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.core.model.Brick;
import com.gluster.storage.management.core.model.Device;
import com.gluster.storage.management.core.model.Disk;
import com.gluster.storage.management.core.model.Volume;
import com.gluster.storage.management.core.utils.NumberUtil;
+import com.gluster.storage.management.gui.GlusterDataModelManager;
import com.gluster.storage.management.gui.TableLabelProviderAdapter;
import com.gluster.storage.management.gui.utils.GUIHelper;
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateBrickWizard.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateBrickWizard.java
index d8f0f165..c125a3c8 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateBrickWizard.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateBrickWizard.java
@@ -23,13 +23,13 @@ import java.net.URI;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.wizard.Wizard;
-import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.client.TasksClient;
import com.gluster.storage.management.client.VolumesClient;
import com.gluster.storage.management.core.model.Brick;
import com.gluster.storage.management.core.model.Cluster;
import com.gluster.storage.management.core.model.TaskInfo;
import com.gluster.storage.management.core.model.Volume;
+import com.gluster.storage.management.gui.GlusterDataModelManager;
public class MigrateBrickWizard extends Wizard {
private Volume volume;
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/jobs/DataSyncJob.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/jobs/DataSyncJob.java
index aff62a92..e38ac1cf 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/jobs/DataSyncJob.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/jobs/DataSyncJob.java
@@ -25,8 +25,8 @@ import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.swt.widgets.Display;
-import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.core.model.GlusterDataModel;
+import com.gluster.storage.management.gui.GlusterDataModelManager;
/**
*
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/AlertsPreferencePage.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/AlertsPreferencePage.java
new file mode 100644
index 00000000..9a3e68b5
--- /dev/null
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/AlertsPreferencePage.java
@@ -0,0 +1,38 @@
+package com.gluster.storage.management.gui.preferences;
+
+import org.eclipse.jface.preference.FieldEditorPreferencePage;
+import org.eclipse.jface.preference.IntegerFieldEditor;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+
+import com.gluster.storage.management.gui.Activator;
+
+public class AlertsPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
+
+ public AlertsPreferencePage() {
+ super(GRID);
+ setPreferenceStore(Activator.getDefault().getPreferenceStore());
+ setDescription("Gluster Management Console - Alerts");
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.preference.FieldEditorPreferencePage#createFieldEditors()
+ */
+ @Override
+ protected void createFieldEditors() {
+ addField(new IntegerFieldEditor(PreferenceConstants.P_SERVER_CPU_CRITICAL_THRESHOLD,
+ "&Server CPU usage threshold:", getFieldEditorParent()));
+
+ addField(new IntegerFieldEditor(PreferenceConstants.P_SERVER_MEMORY_USAGE_THRESHOLD,
+ "&Server memory usage threshold (%):", getFieldEditorParent()));
+
+ addField(new IntegerFieldEditor(PreferenceConstants.P_DISK_SPACE_USAGE_THRESHOLD,
+ "&Disk space usage threshold (%):", getFieldEditorParent()));
+ }
+
+ @Override
+ public void init(IWorkbench workbench) {
+ // TODO Auto-generated method stub
+
+ }
+}
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/GlusterPreferencePage.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/GlusterPreferencePage.java
index d8eee3e4..d7aa4162 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/GlusterPreferencePage.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/GlusterPreferencePage.java
@@ -18,12 +18,14 @@
*******************************************************************************/
package com.gluster.storage.management.gui.preferences;
+import java.awt.TextField;
import java.util.List;
import org.eclipse.jface.preference.BooleanFieldEditor;
import org.eclipse.jface.preference.ComboFieldEditor;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
import org.eclipse.jface.preference.IntegerFieldEditor;
+import org.eclipse.jface.preference.StringFieldEditor;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/PreferenceConstants.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/PreferenceConstants.java
index 039cf488..b44ca37b 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/PreferenceConstants.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/PreferenceConstants.java
@@ -26,10 +26,15 @@ public class PreferenceConstants {
public static final String P_SHOW_CLUSTER_SELECTION_DIALOG = "show.cluster.selection.dialog";
public static final String P_DEFAULT_CLUSTER_NAME = "default.cluster.name";
public static final String P_DATA_SYNC_INTERVAL = "data.sync.interval";
+
+ public static final String P_SERVER_CPU_CRITICAL_THRESHOLD = "server.cpu.threshold";
+ public static final String P_SERVER_MEMORY_USAGE_THRESHOLD = "server.memory.threshold";
+ public static final String P_DISK_SPACE_USAGE_THRESHOLD = "disk.space.threshold"; // in percentage
// TODO: Remove after proper preferences are added
public static final String P_PATH = "pathPreference";
public static final String P_BOOLEAN = "booleanPreference";
public static final String P_CHOICE = "choicePreference";
public static final String P_STRING = "stringPreference";
+ // public static final String P_CPU_THRESHOLD = "stringPreference";
}
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/PreferenceInitializer.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/PreferenceInitializer.java
index 909b957a..ae04034b 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/PreferenceInitializer.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/PreferenceInitializer.java
@@ -40,5 +40,11 @@ public class PreferenceInitializer extends AbstractPreferenceInitializer {
// default data sync interval = 5 minutes
store.setDefault(PreferenceConstants.P_DATA_SYNC_INTERVAL, 300);
+
+ // Default CPU utilisation threshold
+ store.setDefault(PreferenceConstants.P_SERVER_CPU_CRITICAL_THRESHOLD, 95);
+
+ // Default disk free space threshold
+ store.setDefault(PreferenceConstants.P_DISK_SPACE_USAGE_THRESHOLD, 90);
}
}
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 54e289bc..5709807a 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
@@ -21,7 +21,6 @@
package com.gluster.storage.management.gui.views;
import java.util.ArrayList;
-import java.util.Date;
import java.util.List;
import org.eclipse.birt.chart.util.CDateTime;
@@ -40,7 +39,6 @@ import org.eclipse.ui.forms.widgets.ScrolledForm;
import org.eclipse.ui.handlers.IHandlerService;
import org.eclipse.ui.part.ViewPart;
-import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.client.GlusterServersClient;
import com.gluster.storage.management.core.model.Alert;
import com.gluster.storage.management.core.model.Cluster;
@@ -53,6 +51,7 @@ import com.gluster.storage.management.core.model.ServerStats;
import com.gluster.storage.management.core.model.ServerStatsRow;
import com.gluster.storage.management.core.model.TaskInfo;
import com.gluster.storage.management.core.utils.NumberUtil;
+import com.gluster.storage.management.gui.GlusterDataModelManager;
import com.gluster.storage.management.gui.IImageKeys;
import com.gluster.storage.management.gui.actions.IActionConstants;
import com.gluster.storage.management.gui.utils.ChartViewerComposite;
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/GlusterServerSummaryView.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/GlusterServerSummaryView.java
index 1a89ae7e..784fddfc 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/GlusterServerSummaryView.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/GlusterServerSummaryView.java
@@ -42,16 +42,16 @@ 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.client.GlusterDataModelManager;
import com.gluster.storage.management.client.GlusterServersClient;
import com.gluster.storage.management.core.model.ClusterListener;
import com.gluster.storage.management.core.model.DefaultClusterListener;
import com.gluster.storage.management.core.model.Event;
import com.gluster.storage.management.core.model.GlusterServer;
-import com.gluster.storage.management.core.model.ServerStatsRow;
import com.gluster.storage.management.core.model.GlusterServer.SERVER_STATUS;
import com.gluster.storage.management.core.model.ServerStats;
+import com.gluster.storage.management.core.model.ServerStatsRow;
import com.gluster.storage.management.core.utils.NumberUtil;
+import com.gluster.storage.management.gui.GlusterDataModelManager;
import com.gluster.storage.management.gui.IImageKeys;
import com.gluster.storage.management.gui.NetworkInterfaceTableLabelProvider;
import com.gluster.storage.management.gui.toolbar.GlusterToolbarManager;
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/NavigationView.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/NavigationView.java
index b60bc37b..708726c0 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/NavigationView.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/NavigationView.java
@@ -34,13 +34,13 @@ import org.eclipse.ui.model.BaseWorkbenchContentProvider;
import org.eclipse.ui.model.WorkbenchLabelProvider;
import org.eclipse.ui.part.ViewPart;
-import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.core.model.DefaultClusterListener;
import com.gluster.storage.management.core.model.Entity;
import com.gluster.storage.management.core.model.Event;
import com.gluster.storage.management.core.model.GlusterDataModel;
import com.gluster.storage.management.core.model.GlusterServer;
import com.gluster.storage.management.core.model.Volume;
+import com.gluster.storage.management.gui.GlusterDataModelManager;
import com.gluster.storage.management.gui.toolbar.GlusterToolbarManager;
public class NavigationView extends ViewPart implements ISelectionListener {
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/TasksView.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/TasksView.java
index fb772d46..06342bf8 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/TasksView.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/TasksView.java
@@ -6,8 +6,8 @@ import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.part.ViewPart;
-import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.core.model.TaskInfo;
+import com.gluster.storage.management.gui.GlusterDataModelManager;
import com.gluster.storage.management.gui.views.pages.TasksPage;
public class TasksView extends ViewPart {
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumeBricksView.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumeBricksView.java
index 712882ee..bb008f09 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumeBricksView.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumeBricksView.java
@@ -4,8 +4,8 @@ import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.part.ViewPart;
-import com.gluster.storage.management.client.GlusterDataModelManager;
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.views.pages.BricksPage;
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 8c4d2572..37d1ef3e 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
@@ -32,7 +32,6 @@ import org.eclipse.ui.forms.widgets.Hyperlink;
import org.eclipse.ui.forms.widgets.ScrolledForm;
import org.eclipse.ui.part.ViewPart;
-import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.client.VolumesClient;
import com.gluster.storage.management.core.model.Alert;
import com.gluster.storage.management.core.model.Brick;
@@ -50,6 +49,7 @@ import com.gluster.storage.management.core.model.Volume.VOLUME_TYPE;
import com.gluster.storage.management.core.utils.NumberUtil;
import com.gluster.storage.management.core.utils.StringUtil;
import com.gluster.storage.management.core.utils.ValidationUtil;
+import com.gluster.storage.management.gui.GlusterDataModelManager;
import com.gluster.storage.management.gui.IImageKeys;
import com.gluster.storage.management.gui.toolbar.GlusterToolbarManager;
import com.gluster.storage.management.gui.utils.GUIHelper;
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 daeecb83..72d4e944 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
@@ -31,7 +31,6 @@ 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.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;
@@ -39,6 +38,7 @@ import com.gluster.storage.management.core.model.TaskInfo;
import com.gluster.storage.management.core.model.TaskInfo.TASK_TYPE;
import com.gluster.storage.management.core.model.Volume;
import com.gluster.storage.management.core.model.Volume.VOLUME_STATUS;
+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;
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractDisksPage.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractDisksPage.java
index 1c63e1c3..a28fd90f 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractDisksPage.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractDisksPage.java
@@ -39,7 +39,6 @@ import org.eclipse.ui.forms.events.HyperlinkAdapter;
import org.eclipse.ui.forms.events.HyperlinkEvent;
import org.eclipse.ui.forms.widgets.ImageHyperlink;
-import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.client.GlusterServersClient;
import com.gluster.storage.management.client.TasksClient;
import com.gluster.storage.management.core.model.ClusterListener;
@@ -52,6 +51,7 @@ import com.gluster.storage.management.core.model.Partition;
import com.gluster.storage.management.core.model.Status;
import com.gluster.storage.management.core.model.TaskInfo;
import com.gluster.storage.management.gui.Application;
+import com.gluster.storage.management.gui.GlusterDataModelManager;
import com.gluster.storage.management.gui.IEntityListener;
import com.gluster.storage.management.gui.dialogs.InitializeDiskTypeSelection;
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractTableViewerPage.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractTableViewerPage.java
index 1e2c888d..a56350b9 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractTableViewerPage.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractTableViewerPage.java
@@ -47,9 +47,9 @@ import org.eclipse.ui.forms.events.HyperlinkAdapter;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.Hyperlink;
-import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.core.model.ClusterListener;
import com.gluster.storage.management.core.model.TaskInfo;
+import com.gluster.storage.management.gui.GlusterDataModelManager;
import com.gluster.storage.management.gui.utils.GUIHelper;
public abstract class AbstractTableViewerPage<T> extends Composite implements ISelectionListener {
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/OptionKeyEditingSupport.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/OptionKeyEditingSupport.java
index a139a106..6d76b2d2 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/OptionKeyEditingSupport.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/OptionKeyEditingSupport.java
@@ -13,11 +13,11 @@ import org.eclipse.jface.viewers.EditingSupport;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
-import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.core.model.Volume;
import com.gluster.storage.management.core.model.VolumeOption;
import com.gluster.storage.management.core.model.VolumeOptionInfo;
import com.gluster.storage.management.core.model.VolumeOptions;
+import com.gluster.storage.management.gui.GlusterDataModelManager;
/**
* Editing support for the "value" column in volume options table viewer.
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/OptionValueEditingSupport.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/OptionValueEditingSupport.java
index 78da6935..9a3f32ad 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/OptionValueEditingSupport.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/OptionValueEditingSupport.java
@@ -14,11 +14,11 @@ import org.eclipse.swt.custom.BusyIndicator;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
-import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.client.VolumesClient;
import com.gluster.storage.management.core.model.Volume;
import com.gluster.storage.management.core.model.VolumeOption;
import com.gluster.storage.management.core.model.VolumeOptionInfo;
+import com.gluster.storage.management.gui.GlusterDataModelManager;
import com.gluster.storage.management.gui.utils.GUIHelper;
/**
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/VolumeOptionsPage.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/VolumeOptionsPage.java
index 34829fef..1331a81f 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/VolumeOptionsPage.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/VolumeOptionsPage.java
@@ -50,7 +50,6 @@ import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.forms.widgets.FormToolkit;
-import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.core.constants.CoreConstants;
import com.gluster.storage.management.core.model.DefaultClusterListener;
import com.gluster.storage.management.core.model.Event;
@@ -58,6 +57,7 @@ import com.gluster.storage.management.core.model.Event.EVENT_TYPE;
import com.gluster.storage.management.core.model.Volume;
import com.gluster.storage.management.core.model.VolumeOption;
import com.gluster.storage.management.core.model.VolumeOptionInfo;
+import com.gluster.storage.management.gui.GlusterDataModelManager;
import com.gluster.storage.management.gui.VolumeOptionsContentProvider;
import com.gluster.storage.management.gui.VolumeOptionsTableLabelProvider;
import com.gluster.storage.management.gui.utils.GUIHelper;