diff options
| author | Shireesh Anjal <anjalshireesh@gmail.com> | 2011-07-21 05:41:37 -0700 |
|---|---|---|
| committer | Shireesh Anjal <anjalshireesh@gmail.com> | 2011-07-21 05:41:37 -0700 |
| commit | eaed5f0a006789b2d4da723ab0da94d59e7e2225 (patch) | |
| tree | df9c5447b11d226943d5af90a7814386c197be67 /src/com.gluster.storage.management.gui | |
| parent | 9f494cc99e20d39543005286353752e3fe613819 (diff) | |
| parent | 3a662d1e6e3bb481434ca349a11fdd8108d9e4b8 (diff) | |
Merge pull request #128 from Selvasundaram/master
Alerts build on UI side
Diffstat (limited to 'src/com.gluster.storage.management.gui')
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 9d74f71d..26cb0c2f 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 45d76638..d55088b0 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 @@ -31,7 +31,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; @@ -48,6 +47,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; |
