From 4be9e35f560accf7614285216c0bf46e036458ef Mon Sep 17 00:00:00 2001 From: Tim Date: Wed, 17 Aug 2011 20:46:07 +0530 Subject: Updated code to only print the error message in case of failure and exit with a non-zero status code Updated in clear_volume_directory.py, create_volume_directory.py, get_rrd_cpu_details.py, get_rrd_memory_details.py, get_rrd_net_details.py --- .../src/backend/clear_volume_directory.py | 3 +- .../src/backend/create_volume_directory.py | 50 ++++++++-------------- .../src/backend/get_rrd_cpu_details.py | 8 ++-- .../src/backend/get_rrd_memory_details.py | 8 ++-- .../src/backend/get_rrd_net_details.py | 8 ++-- 5 files changed, 29 insertions(+), 48 deletions(-) (limited to 'src') diff --git a/src/com.gluster.storage.management.gateway.scripts/src/backend/clear_volume_directory.py b/src/com.gluster.storage.management.gateway.scripts/src/backend/clear_volume_directory.py index 0f8248d8..a9da783b 100755 --- a/src/com.gluster.storage.management.gateway.scripts/src/backend/clear_volume_directory.py +++ b/src/com.gluster.storage.management.gateway.scripts/src/backend/clear_volume_directory.py @@ -43,8 +43,7 @@ def main(): if not options.todelete: sys.exit(0) - rv = Utils.runCommand("rm -fr %s" % newVolumeDirectoryName, root=True) != 0 - sys.exit(rv) + sys.exit(Utils.runCommand("rm -fr %s" % newVolumeDirectoryName, root=True)) if __name__ == "__main__": main() diff --git a/src/com.gluster.storage.management.gateway.scripts/src/backend/create_volume_directory.py b/src/com.gluster.storage.management.gateway.scripts/src/backend/create_volume_directory.py index 66354412..a4eb2627 100755 --- a/src/com.gluster.storage.management.gateway.scripts/src/backend/create_volume_directory.py +++ b/src/com.gluster.storage.management.gateway.scripts/src/backend/create_volume_directory.py @@ -11,56 +11,44 @@ if not p1 in sys.path: sys.path.append(p1) if not p2 in sys.path: sys.path.append(p2) -from XmlHandler import ResponseXml import DiskUtils import Utils -def createDirectory(disk, volumeName): + +def main(): + if len(sys.argv) != 3: + sys.stderr.write("usage: %s \n" % os.path.basename(sys.argv[0])) + sys.exit(-1) + + disk = sys.argv[1] + volumeName = sys.argv[2] + # Retrieving disk uuid diskUuid = DiskUtils.getUuidByDiskPartition(DiskUtils.getDevice(disk)) - rs = ResponseXml() if not diskUuid: Utils.log("failed to find disk:%s uuid" % disk) - rs.appendTagRoute("status.code", "-1") - rs.appendTagRoute("status.message", "Error: Failed to find disk uuid") - return rs.toprettyxml() + sys.stderr.write("failed to find disk:%s uuid\n" % disk) + sys.exit(1) # Retrieving disk mount point using disk uuid diskMountPoint = DiskUtils.getMountPointByUuid(diskUuid) if not os.path.exists(diskMountPoint): Utils.log("failed to retrieve disk:%s mount point" % disk) - rs.appendTagRoute("status.code", "-1") - rs.appendTagRoute("status.message", "Error: Failed to retrieve disk details") - return rs.toprettyxml() + sys.stderr.write("failed to retrieve disk:%s mount point\n" % disk) + sys.exit(2) # creating volume directory under disk mount point volumeDirectory = "%s/%s" % (diskMountPoint, volumeName) if os.path.exists(volumeDirectory): Utils.log("Volume directory:%s already exists" % (volumeDirectory)) - rs.appendTagRoute("status.code", "-2") - rs.appendTagRoute("status.message", "Volume directory already exists!") - return rs.toprettyxml() + sys.stderr.write("Volume directory:%s already exists\n" % (volumeDirectory)) + sys.exit(3) - rv = Utils.runCommand("mkdir %s" % volumeDirectory, output=True, root=True) - if rv["Status"] != 0: - rs.appendTagRoute("status.code", rv["Status"]) - rs.appendTagRoute("status.message", "Failed to create volume directory") - return rs.toprettyxml() - - rs.appendTagRoute("status.code", rv["Status"]) - rs.appendTagRoute("status.message", volumeDirectory) - return rs.toprettyxml() - -def main(): - if len(sys.argv) != 3: - sys.stderr.write("usage: %s \n" % os.path.basename(sys.argv[0])) - sys.exit(-1) - - disk = sys.argv[1] - volumeName = sys.argv[2] - print createDirectory(disk, volumeName) - sys.exit(0) + rv = Utils.runCommand("mkdir %s" % volumeDirectory, root=True) + if rv != 0: + sys.stderr.write("Failed to create volume directory\n") + sys.exit(rv) if __name__ == "__main__": main() diff --git a/src/com.gluster.storage.management.gateway.scripts/src/backend/get_rrd_cpu_details.py b/src/com.gluster.storage.management.gateway.scripts/src/backend/get_rrd_cpu_details.py index 774f8e4e..0a05a4d3 100755 --- a/src/com.gluster.storage.management.gateway.scripts/src/backend/get_rrd_cpu_details.py +++ b/src/com.gluster.storage.management.gateway.scripts/src/backend/get_rrd_cpu_details.py @@ -11,7 +11,6 @@ if not p1 in sys.path: sys.path.append(p1) if not p2 in sys.path: sys.path.append(p2) -from XmlHandler import ResponseXml import Utils CPU_RRD_FILE = "/var/lib/rrd/cpu.rrd" @@ -23,7 +22,6 @@ def main(): period = sys.argv[1] - rs = ResponseXml() command = "rrdtool xport --start -%s \ DEF:cpuuser=%s:user:AVERAGE \ DEF:cpusystem=%s:system:AVERAGE \ @@ -39,9 +37,9 @@ def main(): rv = Utils.runCommand(command, output=True, root=True) if rv["Status"] != 0: - rs.appendTagRoute("status.code", rv["Status"]) - rs.appendTagRoute("status.message", "Failed to get RRD data of CPU") - print rs.toxml() + sys.stderr.write("Failed to get RRD data of CPU\n") + sys.exit(rv["Status"]) + print rv["Stdout"] sys.exit(0) diff --git a/src/com.gluster.storage.management.gateway.scripts/src/backend/get_rrd_memory_details.py b/src/com.gluster.storage.management.gateway.scripts/src/backend/get_rrd_memory_details.py index a9272b1f..1e3c24f6 100755 --- a/src/com.gluster.storage.management.gateway.scripts/src/backend/get_rrd_memory_details.py +++ b/src/com.gluster.storage.management.gateway.scripts/src/backend/get_rrd_memory_details.py @@ -38,7 +38,6 @@ if not p1 in sys.path: if not p2 in sys.path: sys.path.append(p2) import syslog -from XmlHandler import ResponseXml import Utils MEMORY_RRD_FILE = "/var/lib/rrd/mem.rrd" @@ -50,7 +49,6 @@ def main(): period = sys.argv[1] - rs = ResponseXml() command = "rrdtool xport --start -%s \ DEF:free=%s:memfree:AVERAGE \ DEF:used=%s:memused:AVERAGE \ @@ -67,9 +65,9 @@ def main(): rv = Utils.runCommand(command, output=True, root=True) if rv["Status"] != 0: - rs.appendTagRoute("status.code", rv["Status"]) - rs.appendTagRoute("status.message", "Failed to get RRD data of memory usage") - print rs.toxml() + sys.stderr.write("Failed to get RRD data of memory usage\n") + sys.exit(rv["Status"]) + print rv["Stdout"] sys.exit(0) diff --git a/src/com.gluster.storage.management.gateway.scripts/src/backend/get_rrd_net_details.py b/src/com.gluster.storage.management.gateway.scripts/src/backend/get_rrd_net_details.py index f4a7a465..41674ef9 100755 --- a/src/com.gluster.storage.management.gateway.scripts/src/backend/get_rrd_net_details.py +++ b/src/com.gluster.storage.management.gateway.scripts/src/backend/get_rrd_net_details.py @@ -11,7 +11,6 @@ if not p1 in sys.path: sys.path.append(p1) if not p2 in sys.path: sys.path.append(p2) -from XmlHandler import ResponseXml import Utils def main(): @@ -22,7 +21,6 @@ def main(): device = sys.argv[1] period = sys.argv[2] - rs = ResponseXml() command = "rrdtool xport --start -%s \ DEF:received=/var/lib/rrd/network-%s.rrd:received:AVERAGE \ DEF:transmitted=/var/lib/rrd/network-%s.rrd:transmitted:AVERAGE \ @@ -33,9 +31,9 @@ def main(): rv = Utils.runCommand(command, output=True, root=True) if rv["Status"] != 0: - rs.appendTagRoute("status.code", rv["Status"]) - rs.appendTagRoute("status.message", "Failed to get RRD information of device %s" % device) - print rs.toxml() + sys.stderr.write("Failed to get RRD information of device %s\n" % device) + sys.exit(rv["Status"]) + print rv["Stdout"] sys.exit(0) -- cgit From 6e7eb3cce838a5405a4c02967fc3597aab1113ca Mon Sep 17 00:00:00 2001 From: Dhandapani Date: Wed, 17 Aug 2011 20:48:56 +0530 Subject: Splash images changes --- .../rootfiles/splash.png | Bin 106602 -> 121581 bytes .../splash.bmp | Bin 398896 -> 381054 bytes 2 files changed, 0 insertions(+), 0 deletions(-) (limited to 'src') diff --git a/src/com.gluster.storage.management.console.feature.webstart/rootfiles/splash.png b/src/com.gluster.storage.management.console.feature.webstart/rootfiles/splash.png index 25e2c99b..74983f8a 100644 Binary files a/src/com.gluster.storage.management.console.feature.webstart/rootfiles/splash.png and b/src/com.gluster.storage.management.console.feature.webstart/rootfiles/splash.png differ diff --git a/src/com.gluster.storage.management.console/splash.bmp b/src/com.gluster.storage.management.console/splash.bmp index cb190cd4..d4510414 100644 Binary files a/src/com.gluster.storage.management.console/splash.bmp and b/src/com.gluster.storage.management.console/splash.bmp differ -- cgit From cde02c615df96364a9efdcd8b03c2eb9651429ca Mon Sep 17 00:00:00 2001 From: Shireesh Anjal Date: Wed, 17 Aug 2011 21:44:38 +0530 Subject: Modified to show progress dialog on performing volume start/stop on multiple volumes, and while loading the gluster server summary view. --- .../management/console/ConsoleConstants.java | 1 + .../actions/AbstractMonitoredActionDelegate.java | 59 +++++++++++ .../console/actions/StartVolumeAction.java | 98 ++++++++++--------- .../console/actions/StopVolumeAction.java | 108 +++++++++++---------- .../management/console/utils/GUIHelper.java | 2 + .../console/views/GlusterServerSummaryView.java | 41 +++++++- 6 files changed, 207 insertions(+), 102 deletions(-) create mode 100644 src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/actions/AbstractMonitoredActionDelegate.java (limited to 'src') diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/ConsoleConstants.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/ConsoleConstants.java index 9dce2539..47293228 100644 --- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/ConsoleConstants.java +++ b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/ConsoleConstants.java @@ -22,5 +22,6 @@ package com.gluster.storage.management.console; * */ public class ConsoleConstants { + public static final String CONSOLE_TITLE = "Gluster Management Console"; public static final String TERMINAL_VIEW_ID = "org.eclipse.tm.terminal.view.TerminalView"; } diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/actions/AbstractMonitoredActionDelegate.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/actions/AbstractMonitoredActionDelegate.java new file mode 100644 index 00000000..bcbba8c8 --- /dev/null +++ b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/actions/AbstractMonitoredActionDelegate.java @@ -0,0 +1,59 @@ +/******************************************************************************* + * Copyright (c) 2011 Gluster, Inc. + * 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 + * . + *******************************************************************************/ +package com.gluster.storage.management.console.actions; + +import java.lang.reflect.InvocationTargetException; + +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; +import org.eclipse.jface.operation.IRunnableWithProgress; + +import com.gluster.storage.management.console.ConsoleConstants; +import com.gluster.storage.management.console.utils.GlusterLogger; + +/** + * Any action that can potentially run for a long time, and supports monitoring and progress dialog should extend from + * this class + */ +public abstract class AbstractMonitoredActionDelegate extends AbstractActionDelegate { + private GlusterLogger logger = GlusterLogger.getInstance(); + + /* (non-Javadoc) + * @see com.gluster.storage.management.console.actions.AbstractActionDelegate#performAction(org.eclipse.jface.action.IAction) + */ + @Override + protected void performAction(final IAction action) { + try { + new ProgressMonitorDialog(getShell()).run(false, false, new IRunnableWithProgress() { + + @Override + public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { + performAction(action, monitor); + } + }); + } catch (Exception e) { + String errMsg = "Exception while performing action [" + action.getDescription() + "] : [" + e.getMessage() + "]"; + logger.error(errMsg, e); + showErrorDialog(ConsoleConstants.CONSOLE_TITLE, errMsg); + } + } + + abstract void performAction(IAction action, IProgressMonitor monitor); +} 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 e3324a12..b0c9a72c 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 @@ -22,6 +22,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Set; +import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.action.IAction; import org.eclipse.jface.viewers.ISelection; import org.eclipse.swt.custom.BusyIndicator; @@ -34,7 +35,7 @@ import com.gluster.storage.management.core.constants.CoreConstants; import com.gluster.storage.management.core.model.Volume; import com.gluster.storage.management.core.model.Volume.VOLUME_STATUS; -public class StartVolumeAction extends AbstractActionDelegate { +public class StartVolumeAction extends AbstractMonitoredActionDelegate { //private Volume volume; private GlusterDataModelManager modelManager = GlusterDataModelManager.getInstance(); private List selectedVolumes = new ArrayList(); @@ -43,7 +44,7 @@ public class StartVolumeAction extends AbstractActionDelegate { private GUIHelper guiHelper = GUIHelper.getInstance(); @Override - protected void performAction(IAction action) { + protected void performAction(IAction action, IProgressMonitor monitor) { final String actionDesc = action.getDescription(); collectVolumeNames(); @@ -52,54 +53,59 @@ public class StartVolumeAction extends AbstractActionDelegate { showWarningDialog(actionDesc, "Volumes " + selectedVolumeNames + " already started!"); return; // Volume already started. Don't do anything. } - BusyIndicator.showWhile(Display.getDefault(), new Runnable() { - @Override - public void run() { - VolumesClient vc = new VolumesClient(); - Volume newVolume = new Volume(); - List startedVolumes = new ArrayList(); - List failedVolumes = new ArrayList(); - String errorMessage = ""; + + VolumesClient vc = new VolumesClient(); + Volume newVolume = new Volume(); + List startedVolumes = new ArrayList(); + List failedVolumes = new ArrayList(); + String errorMessage = ""; - for (Volume volume : selectedVolumes.toArray(new Volume[0])) { - if (volume.getStatus() == VOLUME_STATUS.ONLINE) { - continue; // skip if already started - } - try { - guiHelper.setStatusMessage("Starting volume [" + volume.getName() + "]"); - vc.startVolume(volume.getName()); - startedVolumes.add(volume.getName()); - } catch (Exception e) { - failedVolumes.add(volume.getName()); - // If any post volume start activity failed, update the volume status - if (vc.getVolume(volume.getName()).getStatus() == VOLUME_STATUS.ONLINE) { - modelManager.updateVolumeStatus(volume, VOLUME_STATUS.ONLINE); - } - errorMessage += e.getMessage(); - } - // Update the model by fetching latest volume info (NOT JUST STATUS) - try { - newVolume = vc.getVolume(volume.getName()); - modelManager.volumeChanged(volume, newVolume); - } catch (Exception e) { - errorMessage += "Updating volume info failed on UI. [" + e.getMessage() + "]"; - } + monitor.beginTask("Starting Selected Volumes...", selectedVolumes.size()); + for (Volume volume : selectedVolumes.toArray(new Volume[0])) { + if(monitor.isCanceled()) { + break; + } + if (volume.getStatus() == VOLUME_STATUS.ONLINE) { + monitor.worked(1); + continue; // skip if already started + } + try { + String message = "Starting volume [" + volume.getName() + "]"; + guiHelper.setStatusMessage(message); + monitor.setTaskName(message); + vc.startVolume(volume.getName()); + startedVolumes.add(volume.getName()); + } catch (Exception e) { + failedVolumes.add(volume.getName()); + // If any post volume start activity failed, update the volume status + if (vc.getVolume(volume.getName()).getStatus() == VOLUME_STATUS.ONLINE) { + modelManager.updateVolumeStatus(volume, VOLUME_STATUS.ONLINE); } + errorMessage += e.getMessage(); + } + // Update the model by fetching latest volume info (NOT JUST STATUS) + try { + newVolume = vc.getVolume(volume.getName()); + modelManager.volumeChanged(volume, newVolume); + } catch (Exception e) { + errorMessage += "Updating volume info failed on UI. [" + e.getMessage() + "]"; + } + monitor.worked(1); + } + monitor.done(); - // Display the success or failure info - if (startedVolumes.size() == 0) { // No volume(s) started successfully - showErrorDialog(actionDesc, "Following volumes " + failedVolumes + " could not be start!" - + CoreConstants.NEWLINE + "Error: [" + errorMessage + "]"); - } else { - String info = "Volumes " + startedVolumes + " started successfully!"; - if (errorMessage != "") { - info += CoreConstants.NEWLINE + CoreConstants.NEWLINE + "Volumes " + failedVolumes - + " failed to start! [" + errorMessage + "]"; - } - showInfoDialog(actionDesc, info); - } + // Display the success or failure info + if (startedVolumes.size() == 0) { // No volume(s) started successfully + showErrorDialog(actionDesc, "Following volumes " + failedVolumes + " could not be start!" + + CoreConstants.NEWLINE + "Error: [" + errorMessage + "]"); + } else { + String info = "Volumes " + startedVolumes + " started successfully!"; + if (errorMessage != "") { + info += CoreConstants.NEWLINE + CoreConstants.NEWLINE + "Volumes " + failedVolumes + + " failed to start! [" + errorMessage + "]"; } - }); + showInfoDialog(actionDesc, info); + } guiHelper.clearStatusMessage(); } 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 974534c5..a449b08a 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 @@ -22,6 +22,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Set; +import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.action.IAction; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.ISelection; @@ -36,7 +37,7 @@ import com.gluster.storage.management.core.constants.CoreConstants; import com.gluster.storage.management.core.model.Volume; import com.gluster.storage.management.core.model.Volume.VOLUME_STATUS; -public class StopVolumeAction extends AbstractActionDelegate { +public class StopVolumeAction extends AbstractMonitoredActionDelegate { private GlusterDataModelManager modelManager = GlusterDataModelManager.getInstance(); private List selectedVolumes = new ArrayList(); private List selectedVolumeNames = new ArrayList(); @@ -44,7 +45,7 @@ public class StopVolumeAction extends AbstractActionDelegate { private GUIHelper guiHelper = GUIHelper.getInstance(); @Override - protected void performAction(final IAction action) { + protected void performAction(final IAction action, IProgressMonitor monitor) { final String actionDesc = action.getDescription(); collectVolumeNames(); @@ -63,57 +64,62 @@ public class StopVolumeAction extends AbstractActionDelegate { return; } - - BusyIndicator.showWhile(Display.getDefault(), new Runnable() { - @Override - public void run() { - VolumesClient vc = new VolumesClient(); - List stoppedVolumes = new ArrayList(); - List failedVolumes = new ArrayList(); - String errorMessage = ""; - - Volume newVolume = new Volume(); - - for (Volume volume : selectedVolumes.toArray(new Volume[0])) { - if (volume.getStatus() == VOLUME_STATUS.OFFLINE) { - continue; // skip if already stopped - } - try { - guiHelper.setStatusMessage("Stopping volume [" + volume.getName() + "]"); - vc.stopVolume(volume.getName()); - // modelManager.updateVolumeStatus(volume, VOLUME_STATUS.OFFLINE); - stoppedVolumes.add(volume.getName()); - } catch (Exception e) { - failedVolumes.add(volume.getName()); - // If any post volume stop activity failed, update the volume status - if (vc.getVolume(volume.getName()).getStatus() == VOLUME_STATUS.OFFLINE) { - modelManager.updateVolumeStatus(volume, VOLUME_STATUS.OFFLINE); - } - errorMessage += e.getMessage(); - } - - // Update the model by fetching latest volume info (NOT JUST STATUS) - try { - newVolume = vc.getVolume(volume.getName()); - modelManager.volumeChanged(volume, newVolume); - } catch (Exception e) { - errorMessage += "Failed to update volume info on UI. [" + e.getMessage() + "]"; - } - } - // Display the success or failure info - if (stoppedVolumes.size() == 0) { // No volume(s) stopped successfully - showErrorDialog(actionDesc, "Volumes " + failedVolumes + " could not be stopped! " - + CoreConstants.NEWLINE + "Error: [" + errorMessage + "]"); - } else { - String info = "Volumes " + stoppedVolumes + " stopped successfully!"; - if (errorMessage != "") { - info += CoreConstants.NEWLINE + CoreConstants.NEWLINE + "Volumes " + failedVolumes - + " failed to stop! [" + errorMessage + "]"; - } - showInfoDialog(actionDesc, info); + VolumesClient vc = new VolumesClient(); + List stoppedVolumes = new ArrayList(); + List failedVolumes = new ArrayList(); + String errorMessage = ""; + + Volume newVolume = new Volume(); + + monitor.beginTask("Stopping Selected Volumes...", selectedVolumes.size()); + for (Volume volume : selectedVolumes.toArray(new Volume[0])) { + if(monitor.isCanceled()) { + break; + } + + if (volume.getStatus() == VOLUME_STATUS.OFFLINE) { + monitor.worked(1); + continue; // skip if already stopped + } + try { + String message = "Stopping volume [" + volume.getName() + "]"; + guiHelper.setStatusMessage(message); + monitor.setTaskName(message); + vc.stopVolume(volume.getName()); + // modelManager.updateVolumeStatus(volume, VOLUME_STATUS.OFFLINE); + stoppedVolumes.add(volume.getName()); + } catch (Exception e) { + failedVolumes.add(volume.getName()); + // If any post volume stop activity failed, update the volume status + if (vc.getVolume(volume.getName()).getStatus() == VOLUME_STATUS.OFFLINE) { + modelManager.updateVolumeStatus(volume, VOLUME_STATUS.OFFLINE); } + errorMessage += e.getMessage(); } - }); + + // Update the model by fetching latest volume info (NOT JUST STATUS) + try { + newVolume = vc.getVolume(volume.getName()); + modelManager.volumeChanged(volume, newVolume); + } catch (Exception e) { + errorMessage += "Failed to update volume info on UI. [" + e.getMessage() + "]"; + } + monitor.worked(1); + } + monitor.done(); + + // Display the success or failure info + if (stoppedVolumes.size() == 0) { // No volume(s) stopped successfully + showErrorDialog(actionDesc, "Volumes " + failedVolumes + " could not be stopped! " + CoreConstants.NEWLINE + + "Error: [" + errorMessage + "]"); + } else { + String info = "Volumes " + stoppedVolumes + " stopped successfully!"; + if (errorMessage != "") { + info += CoreConstants.NEWLINE + CoreConstants.NEWLINE + "Volumes " + failedVolumes + + " failed to stop! [" + errorMessage + "]"; + } + showInfoDialog(actionDesc, info); + } guiHelper.clearStatusMessage(); } diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/utils/GUIHelper.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/utils/GUIHelper.java index f46f9ddf..ab846e74 100644 --- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/utils/GUIHelper.java +++ b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/utils/GUIHelper.java @@ -475,6 +475,8 @@ public class GUIHelper { } public void setStatusMessage(String message) { + clearStatusMessage(); + Application.getApplication().getStatusLineManager().setMessage(message); Application.getApplication().getStatusLineManager().setMessage(message); } diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/GlusterServerSummaryView.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/GlusterServerSummaryView.java index 662ca16f..03c38df7 100644 --- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/GlusterServerSummaryView.java +++ b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/GlusterServerSummaryView.java @@ -20,11 +20,16 @@ */ package com.gluster.storage.management.console.views; +import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.List; import org.eclipse.birt.chart.util.CDateTime; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; import org.eclipse.jface.layout.TableColumnLayout; +import org.eclipse.jface.operation.IRunnableWithProgress; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.PropertyChangeEvent; @@ -50,16 +55,17 @@ import org.eclipse.ui.part.ViewPart; import com.gluster.storage.management.client.GlusterServersClient; import com.gluster.storage.management.console.Activator; +import com.gluster.storage.management.console.ConsoleConstants; import com.gluster.storage.management.console.GlusterDataModelManager; import com.gluster.storage.management.console.IImageKeys; import com.gluster.storage.management.console.NetworkInterfaceTableLabelProvider; import com.gluster.storage.management.console.preferences.PreferenceConstants; import com.gluster.storage.management.console.toolbar.GlusterToolbarManager; import com.gluster.storage.management.console.utils.ChartUtil; +import com.gluster.storage.management.console.utils.ChartUtil.ChartPeriodLinkListener; import com.gluster.storage.management.console.utils.ChartViewerComposite; import com.gluster.storage.management.console.utils.GUIHelper; import com.gluster.storage.management.console.utils.GlusterLogger; -import com.gluster.storage.management.console.utils.ChartUtil.ChartPeriodLinkListener; import com.gluster.storage.management.core.model.ClusterListener; import com.gluster.storage.management.core.model.DefaultClusterListener; import com.gluster.storage.management.core.model.Event; @@ -330,10 +336,35 @@ public class GlusterServerSummaryView extends ViewPart { createServerSummarySection(server, toolkit, form); if (server.getStatus() == SERVER_STATUS.ONLINE) { - createMemoryUsageSection(); - createNetworkUsageSection(); - createCPUUsageSection(); - createNetworkInterfacesSection(server, toolkit, form); + try { + new ProgressMonitorDialog(getSite().getShell()).run(false, false, new IRunnableWithProgress() { + + @Override + public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { + monitor.beginTask("Creating Server Summary View", 4); + monitor.setTaskName("Creating Memory Usage Section"); + createMemoryUsageSection(); + monitor.worked(1); + + monitor.setTaskName("Creating Network Usage Section"); + createNetworkUsageSection(); + monitor.worked(1); + + monitor.setTaskName("Creating CPU Usage Section"); + createCPUUsageSection(); + monitor.worked(1); + + monitor.setTaskName("Creating Network Interfaces Section"); + createNetworkInterfacesSection(server, toolkit, form); + monitor.worked(1); + monitor.done(); + } + }); + } catch (Exception e) { + String errMsg = "Exception while creating the Gluster Server Summary View : [" + e.getMessage() + "]"; + logger.error(errMsg, e); + MessageDialog.openError(getSite().getShell(), ConsoleConstants.CONSOLE_TITLE, errMsg); + } } parent.layout(); // IMP: lays out the form properly -- cgit From b6bb0eca7d0a861c6636b06d677dc7aa06c31a46 Mon Sep 17 00:00:00 2001 From: Shireesh Anjal Date: Wed, 17 Aug 2011 21:48:22 +0530 Subject: Source files (photoshop) for splash screen and login screen --- .../images/login-screen-with-text.psd | Bin 0 -> 4367373 bytes .../images/login-screen.psd | Bin 0 -> 1512790 bytes .../images/splash-screen.psd | Bin 0 -> 2004782 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/com.gluster.storage.management.console/images/login-screen-with-text.psd create mode 100644 src/com.gluster.storage.management.console/images/login-screen.psd create mode 100644 src/com.gluster.storage.management.console/images/splash-screen.psd (limited to 'src') diff --git a/src/com.gluster.storage.management.console/images/login-screen-with-text.psd b/src/com.gluster.storage.management.console/images/login-screen-with-text.psd new file mode 100644 index 00000000..f6e7ab35 Binary files /dev/null and b/src/com.gluster.storage.management.console/images/login-screen-with-text.psd differ diff --git a/src/com.gluster.storage.management.console/images/login-screen.psd b/src/com.gluster.storage.management.console/images/login-screen.psd new file mode 100644 index 00000000..a9bfc27e Binary files /dev/null and b/src/com.gluster.storage.management.console/images/login-screen.psd differ diff --git a/src/com.gluster.storage.management.console/images/splash-screen.psd b/src/com.gluster.storage.management.console/images/splash-screen.psd new file mode 100644 index 00000000..43544f41 Binary files /dev/null and b/src/com.gluster.storage.management.console/images/splash-screen.psd differ -- cgit