diff options
Diffstat (limited to 'src')
8 files changed, 62 insertions, 57 deletions
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/GlusterDataModelManager.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/GlusterDataModelManager.java index b3f85ecf..a6daee79 100644 --- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/GlusterDataModelManager.java +++ b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/GlusterDataModelManager.java @@ -409,7 +409,9 @@ public class GlusterDataModelManager { public void volumeChanged(Volume oldVolume, Volume newVolume) { oldVolume.copyFrom(newVolume); - alertsChanged(newVolume, newVolume.getStatus()); + if (oldVolume.getStatus() != newVolume.getStatus()) { + updateVolumeStatusAlert(newVolume, newVolume.getStatus()); + } for (ClusterListener listener : listeners) { listener.volumeChanged(oldVolume, new Event(EVENT_TYPE.VOLUME_CHANGED, newVolume)); @@ -749,7 +751,7 @@ public class GlusterDataModelManager { public void updateVolumeStatus(Volume volume, VOLUME_STATUS newStatus) { volume.setStatus(newStatus); - alertsChanged(volume, newStatus); + updateVolumeStatusAlert(volume, newStatus); if(newStatus == VOLUME_STATUS.OFFLINE) { // mark as bricks also as offline @@ -767,40 +769,39 @@ public class GlusterDataModelManager { } } - private void alertsChanged(Volume volume, VOLUME_STATUS newStatus) { + private void updateVolumeStatusAlert(Volume volume, VOLUME_STATUS newStatus) { Alert alert = null; if (newStatus == VOLUME_STATUS.OFFLINE) { - alert = createVolumeAlert(volume); + alert = createOfflineVolumeAlert(volume); for (ClusterListener listener : listeners) { - listener.alertsCreated(volume, new Event(EVENT_TYPE.ALERT_CREATED, alert)); + listener.alertCreated(alert); } } else { - alert = removeVolumeAlert(volume); + alert = removeOfflineVolumeAlert(volume); for (ClusterListener listener : listeners) { - listener.alertsRemoved(volume, new Event(EVENT_TYPE.ALERT_REMOVED, alert)); + listener.alertRemoved(alert); } } } - private Alert createVolumeAlert(Volume volume) { + private Alert createOfflineVolumeAlert(Volume volume) { Alert alert = new Alert(ALERT_TYPES.OFFLINE_VOLUME_ALERT, volume.getName(), Alert.ALERT_TYPE_STR[ALERT_TYPES.OFFLINE_VOLUME_ALERT.ordinal()] + " [" + volume.getName() + "]"); getModel().getCluster().addAlert(alert); return alert; } - private Alert removeVolumeAlert(Volume volume) { + private Alert removeOfflineVolumeAlert(Volume volume) { List<Alert> clusterAlerts = getModel().getCluster().getAlerts(); Alert removedAlert = null; - for (int i = 0; i < clusterAlerts.size(); i++) { - if (clusterAlerts.get(i).getType().equals(ALERT_TYPES.OFFLINE_VOLUME_ALERT) - && clusterAlerts.get(i).getReference().equals(volume.getName())) { - removedAlert = clusterAlerts.get(i); - clusterAlerts.remove(i); + for (Alert alert : clusterAlerts) { + if (alert.getType().equals(ALERT_TYPES.OFFLINE_VOLUME_ALERT) + && alert.getReference().equals(volume.getName())) { + removedAlert = alert; + clusterAlerts.remove(alert); break; } } - getModel().getCluster().setAlerts(clusterAlerts); return removedAlert; } diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/actions/DeleteVolumeAction.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/actions/DeleteVolumeAction.java index a56cf82b..b8376e4b 100644 --- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/actions/DeleteVolumeAction.java +++ b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/actions/DeleteVolumeAction.java @@ -83,15 +83,19 @@ public class DeleteVolumeAction extends AbstractMonitoredActionDelegate { // Display the success or failure info if (deletedVolumeNames.size() == 0) { // No volume(s) deleted successfully if (!errorMessage.isEmpty()) { - showErrorDialog(actionDesc, "Volume could not be deleted! " + CoreConstants.NEWLINE + errorMessage); + showErrorDialog(actionDesc, "Volume(s) could not be deleted! " + CoreConstants.NEWLINE + errorMessage); } } else { - String info = "Volumes " + deletedVolumeNames + " deleted successfully!"; + String info = "Volume(s) " + deletedVolumeNames + " deleted successfully!"; if (!errorMessage.isEmpty()) { info += CoreConstants.NEWLINE + CoreConstants.NEWLINE + "Volumes " + failedVolumes + " could not be deleted!" + errorMessage; } - showInfoDialog(actionDesc, info); + if (selectedVolumes.size() == deletedVolumeNames.size()) { + showInfoDialog(actionDesc, info); + } else { + showWarningDialog(actionDesc, info); + } } } @@ -105,7 +109,7 @@ public class DeleteVolumeAction extends AbstractMonitoredActionDelegate { // To calculate the total work we need to sum volumes size + online volumes (because we treat stop and delete as // separate steps) - List<Volume> onlineVolumes = getOnlineVolume(volumes); + List<Volume> onlineVolumes = getOnlineVolumes(volumes); monitor.beginTask("Deleting Selected Volumes...", volumes.size() + onlineVolumes.size()); // Deletion of a volume results in changes to the model, and ultimately updates the "selectedVolumes" list, @@ -123,10 +127,9 @@ public class DeleteVolumeAction extends AbstractMonitoredActionDelegate { } catch(Exception e2) { // force stop also failed. // Mark as deletion failed, append error message. - errorMessage += CoreConstants.NEWLINE + "Stop volume failed on [" + volume.getName() + "] : [" - + e2.getMessage() + "]"; + errorMessage += CoreConstants.NEWLINE + "Stop [" + volume.getName() + "] : [" + e2.getMessage() + + "]"; failedVolumes.add(volume); - // since we are not going to perform delete on this volume, // mark the deletion task as worked monitor.worked(1); @@ -148,7 +151,7 @@ public class DeleteVolumeAction extends AbstractMonitoredActionDelegate { } catch (Exception e) { // Volume delete succeeded and post delete operation (directory cleanup, CIFS etc) may fail if (vc.volumeExists(volume.getName())) { - errorMessage += CoreConstants.NEWLINE + "Error [" + volume.getName() + "] : [" + e.getMessage() + "]"; + errorMessage += CoreConstants.NEWLINE + "Delete [" + volume.getName() + "] : [" + e.getMessage() + "]"; failedVolumes.add(volume); } else { errorMessage += CoreConstants.NEWLINE + "Volume [" + volume.getName() @@ -164,7 +167,7 @@ public class DeleteVolumeAction extends AbstractMonitoredActionDelegate { return errorMessage; } - private List<Volume> getOnlineVolume(List<Volume> volumes) { + private List<Volume> getOnlineVolumes(List<Volume> volumes) { List<Volume> onlineVolumes = new ArrayList<Volume>(); for (Volume volume : volumes) { if (volume.getStatus() == VOLUME_STATUS.ONLINE) { diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/actions/StartVolumeAction.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/actions/StartVolumeAction.java index 78ae21c7..d7c6d2e3 100644 --- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/actions/StartVolumeAction.java +++ b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/actions/StartVolumeAction.java @@ -121,7 +121,11 @@ public class StartVolumeAction extends AbstractMonitoredActionDelegate { info += CoreConstants.NEWLINE + CoreConstants.NEWLINE + "Volumes " + failedVolumes + " failed to start! [" + errorMessage + "]"; } - showInfoDialog(actionDesc, info); + if (selectedVolumes.size() == startedVolumes.size()) { + showInfoDialog(actionDesc, info); + } else { + showWarningDialog(actionDesc, info); + } } } diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/actions/StopVolumeAction.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/actions/StopVolumeAction.java index 872213fe..bbc0be47 100644 --- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/actions/StopVolumeAction.java +++ b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/actions/StopVolumeAction.java @@ -28,13 +28,10 @@ import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.ISelection; import com.gluster.storage.management.client.VolumesClient; -import com.gluster.storage.management.console.AlertsManager; import com.gluster.storage.management.console.GlusterDataModelManager; import com.gluster.storage.management.console.IImageKeys; import com.gluster.storage.management.console.utils.GUIHelper; import com.gluster.storage.management.core.constants.CoreConstants; -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.Volume; import com.gluster.storage.management.core.model.Volume.VOLUME_STATUS; @@ -44,7 +41,6 @@ public class StopVolumeAction extends AbstractMonitoredActionDelegate { private List<String> selectedVolumeNames = new ArrayList<String>(); private List<String> onlineVolumeNames = new ArrayList<String>(); private List<String> stoppedVolumes = new ArrayList<String>(); - private List<String> failedVolumeNames = new ArrayList<String>(); private List<Volume> failedVolumes = new ArrayList<Volume>(); @Override @@ -82,46 +78,49 @@ public class StopVolumeAction extends AbstractMonitoredActionDelegate { } } - String errorMessage = performStopVolume(selectedVolumes, false, monitor); + String errorMessage = stopVolume(selectedVolumes, false, monitor); // Display the success or failure info if (stoppedVolumes.size() == 0) { // No volume(s) stopped successfully - String message = "Volumes " + failedVolumeNames + " could not be stopped! " + CoreConstants.NEWLINE + String message = "Volume(s) " + failedVolumes + " could not be stopped! " + CoreConstants.NEWLINE + "Error: [" + errorMessage + "]"; - errorMessage = performForceStopVolume(actionDesc, message, monitor); + errorMessage = forceStopVolume(actionDesc, message, monitor); if (errorMessage.isEmpty()) { return; } showErrorDialog(actionDesc, errorMessage); } else { - String info = "Volumes " + stoppedVolumes + " stopped successfully!"; + String info = "Volume(s) " + stoppedVolumes + " stopped successfully!"; if (!errorMessage.equals("")) { - if (failedVolumeNames.size() > 0) { - String message = info + CoreConstants.NEWLINE + CoreConstants.NEWLINE + "Volumes " + failedVolumeNames + if (failedVolumes.size() > 0) { + String message = info + CoreConstants.NEWLINE + CoreConstants.NEWLINE + "Volume(s) " + failedVolumes + " failed to stop! [" + errorMessage + "]"; - info += performForceStopVolume(actionDesc, message, monitor); + info += forceStopVolume(actionDesc, message, monitor); } else { // Stop volume success, but post stop volume fails, append the error message info += CoreConstants.NEWLINE + CoreConstants.NEWLINE + errorMessage; } } - showInfoDialog(actionDesc, info); + if (stoppedVolumes.size() == selectedVolumes.size()) { + showInfoDialog(actionDesc, info); + } else { + showWarningDialog(actionDesc, info); + } } } - private String performForceStopVolume(String actionDesc, String message, IProgressMonitor monitor) { + private String forceStopVolume(String actionDesc, String message, IProgressMonitor monitor) { boolean forceStop = showConfirmDialog(actionDesc, message + CoreConstants.NEWLINE + "Do you want to stop forcefully?"); if (!forceStop) { return ""; } - return performStopVolume(failedVolumes, true, monitor); + return stopVolume(failedVolumes, true, monitor); } - private String performStopVolume(List<Volume> volumes, Boolean force, IProgressMonitor monitor) { + private String stopVolume(List<Volume> volumes, Boolean force, IProgressMonitor monitor) { VolumesClient vc = new VolumesClient(); Volume newVolume = new Volume(); stoppedVolumes.clear(); - failedVolumeNames.clear(); failedVolumes.clear(); String errorMessage = ""; @@ -152,9 +151,8 @@ public class StopVolumeAction extends AbstractMonitoredActionDelegate { errorMessage += "Volume [" + volume.getName() + "] stopped, but following error occured: [" + e.getMessage() + "]"; } else { - failedVolumeNames.add(volume.getName()); failedVolumes.add(volume); - errorMessage += "Error [" + volume.getName() + "] : " + e.getMessage() + CoreConstants.NEWLINE; + errorMessage += "[" + volume.getName() + "] : " + e.getMessage() + CoreConstants.NEWLINE; } } diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/GlusterServersSummaryView.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/GlusterServersSummaryView.java index 5bedf4f6..afca5ad5 100644 --- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/GlusterServersSummaryView.java +++ b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/GlusterServersSummaryView.java @@ -197,8 +197,9 @@ public class GlusterServersSummaryView extends ViewPart { List<Alert> alerts = GlusterDataModelManager.getInstance().getModel().getCluster().getAlerts(); for (Alert alert : alerts) { - if (alert.getType() != ALERT_TYPES.OFFLINE_VOLUME_BRICKS_ALERT - && alert.getType() != ALERT_TYPES.OFFLINE_VOLUME_ALERT) { + if (alert.getType() == ALERT_TYPES.DISK_USAGE_ALERT || alert.getType() != ALERT_TYPES.OFFLINE_SERVERS_ALERT + || alert.getType() == ALERT_TYPES.MEMORY_USAGE_ALERT + || alert.getType() == ALERT_TYPES.CPU_USAGE_ALERT) { addAlertLabel(alertsSection, alert); } } diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/VolumesSummaryView.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/VolumesSummaryView.java index 9e65471c..cd937215 100644 --- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/VolumesSummaryView.java +++ b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/VolumesSummaryView.java @@ -125,17 +125,15 @@ public class VolumesSummaryView extends ViewPart { } @Override - public void alertsRemoved(Volume volume, Event event) { - super.alertsRemoved(volume, event); - guiHelper.clearSection(alertsSection); - populateAlertSection(); + public void alertRemoved(Alert alert) { + super.alertRemoved(alert); + updateAlertSection(); } @Override - public void alertsCreated(Volume volume, Event event) { - super.alertsCreated(volume, event); - guiHelper.clearSection(alertsSection); - populateAlertSection(); + public void alertCreated(Alert alert) { + super.alertCreated(alert); + updateAlertSection(); } @Override diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/ClusterListener.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/ClusterListener.java index 7e32fde7..eb8c191e 100644 --- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/ClusterListener.java +++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/ClusterListener.java @@ -51,7 +51,7 @@ public interface ClusterListener { public void aggregatedStatsChanged(); - public void alertsRemoved(Volume volume, Event event); + public void alertRemoved(Alert alert); - public void alertsCreated(Volume volume, Event event); + public void alertCreated(Alert alert); } diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/DefaultClusterListener.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/DefaultClusterListener.java index 4745d557..eb98090f 100644 --- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/DefaultClusterListener.java +++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/DefaultClusterListener.java @@ -107,12 +107,12 @@ public class DefaultClusterListener implements ClusterListener { } @Override - public void alertsRemoved(Volume volume, Event event) { + public void alertRemoved(Alert alert) { modelChanged(); } @Override - public void alertsCreated(Volume volume, Event event) { + public void alertCreated(Alert alert) { modelChanged(); } } |