diff options
Diffstat (limited to 'src')
11 files changed, 124 insertions, 198 deletions
diff --git a/src/com.gluster.storage.management.gui/plugin.xml b/src/com.gluster.storage.management.gui/plugin.xml index 250fa2e2..3955ed91 100644 --- a/src/com.gluster.storage.management.gui/plugin.xml +++ b/src/com.gluster.storage.management.gui/plugin.xml @@ -1389,10 +1389,17 @@ name="Gluster"> </page> <page + category="com.gluster.storage.management.gui.preferences.GlusterPreferencePage" class="com.gluster.storage.management.gui.preferences.AlertsPreferencePage" id="com.gluster.storage.management.gui.preferences.AlertsPreferencePage" name="Alerts"> </page> + <page + category="com.gluster.storage.management.gui.preferences.GlusterPreferencePage" + class="com.gluster.storage.management.gui.preferences.ChartsPreferencePage" + id="com.gluster.storage.management.gui.preferences.ChartsPreferencePage" + name="Charts"> + </page> </extension> <extension point="org.eclipse.core.runtime.preferences"> diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/ChangePasswordDialog.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/ChangePasswordDialog.java index d62c5dcb..00f2aab0 100644 --- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/ChangePasswordDialog.java +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/ChangePasswordDialog.java @@ -193,6 +193,7 @@ public class ChangePasswordDialog extends Dialog { @Override protected void createButtonsForButtonBar(Composite parent) { okButton = createButton(parent, IDialogConstants.OK_ID, "&Change", true); + okButton.setEnabled(false); createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false); setupDataBinding(); diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/ClusterSelectionDialog.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/ClusterSelectionDialog.java index 37381172..f5d2f6dd 100644 --- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/ClusterSelectionDialog.java +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/ClusterSelectionDialog.java @@ -200,6 +200,7 @@ public class ClusterSelectionDialog extends Dialog { private void createClusterRegisterComposite(Composite composite) { clusterRegisterComposite = new Composite(composite, SWT.NONE); GridLayout layout = new GridLayout(2, false); + layout.horizontalSpacing = 15; clusterRegisterComposite.setLayout(layout); createClusterNameLabel(clusterRegisterComposite); @@ -224,6 +225,7 @@ public class ClusterSelectionDialog extends Dialog { private void createClusterCreationComposite(Composite subComposite) { clusterCreationComposite = new Composite(subComposite, SWT.NONE); GridLayout layout = new GridLayout(2, false); + layout.horizontalSpacing = 15; clusterCreationComposite.setLayout(layout); createClusterNameLabel(clusterCreationComposite); 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 9c7988e3..401bdce0 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 @@ -222,11 +222,10 @@ public class LoginDialog extends Dialog { if (password.equalsIgnoreCase(CoreConstants.DEFAULT_PASSWORD)) { String oldSecurityTokeString = GlusterDataModelManager.getInstance().getSecurityToken(); ChangePasswordDialog dialog = new ChangePasswordDialog(getShell()); - dialog.open(); - if (GlusterDataModelManager.getInstance().getSecurityToken().equals(oldSecurityTokeString)) { - MessageDialog.openInformation(getShell(), "Change password Cancelled", - "Gateway could not be accessed with default password !" + "\n\n" + "Application will close."); + if (dialog.open() == Dialog.CANCEL) { + MessageDialog.openError(getShell(), "Change password Cancelled", + "Password must be changed on first login!" + "\n" + "Application will close."); cancelPressed(); return; } diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/ChartsPreferencePage.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/ChartsPreferencePage.java new file mode 100644 index 00000000..e1a54081 --- /dev/null +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/ChartsPreferencePage.java @@ -0,0 +1,70 @@ +/******************************************************************************* + * 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.preferences; + +import org.eclipse.jface.preference.ComboFieldEditor; +import org.eclipse.jface.preference.FieldEditorPreferencePage; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchPreferencePage; + +/** + * @author root + * + */ +public class ChartsPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage { + + public ChartsPreferencePage() { + } + + public ChartsPreferencePage(int style) { + super(style); + } + + public ChartsPreferencePage(String title, int style) { + super(title, style); + } + + public ChartsPreferencePage(String title, ImageDescriptor image, int style) { + super(title, image, style); + } + + /* (non-Javadoc) + * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench) + */ + @Override + public void init(IWorkbench workbench) { + } + + /* (non-Javadoc) + * @see org.eclipse.jface.preference.FieldEditorPreferencePage#createFieldEditors() + */ + @Override + protected void createFieldEditors() { + String[][] entryNamesAndValues = new String[][] { + { "1d", "1 day" }, { "1w", "1 week" }, { "1m", "1 month" }, { "1y", "1 year" } }; + addField(new ComboFieldEditor(PreferenceConstants.P_CPU_CHART_PERIOD, "CPU Usage chart period", entryNamesAndValues, + getFieldEditorParent())); + addField(new ComboFieldEditor(PreferenceConstants.P_MEM_CHART_PERIOD, "Memory Usage chart period", entryNamesAndValues, + getFieldEditorParent())); + addField(new ComboFieldEditor(PreferenceConstants.P_NETWORK_CHART_PERIOD, "Network Usage chart period", entryNamesAndValues, + getFieldEditorParent())); + } + +} diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/ClusterPreferencePage.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/ClusterPreferencePage.java deleted file mode 100644 index 14dbeba9..00000000 --- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/ClusterPreferencePage.java +++ /dev/null @@ -1,83 +0,0 @@ -/******************************************************************************* - * 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.preferences; - -import org.eclipse.jface.preference.*; -import org.eclipse.ui.IWorkbenchPreferencePage; -import org.eclipse.ui.IWorkbench; - -import com.gluster.storage.management.gui.Activator; - -/** - * This class represents a preference page that - * is contributed to the Preferences dialog. By - * subclassing <samp>FieldEditorPreferencePage</samp>, we - * can use the field support built into JFace that allows - * us to create a page that is small and knows how to - * save, restore and apply itself. - * <p> - * This page is used to modify preferences only. They - * are stored in the preference store that belongs to - * the main plug-in class. That way, preferences can - * be accessed directly via the preference store. - */ - -public class ClusterPreferencePage - extends FieldEditorPreferencePage - implements IWorkbenchPreferencePage { - - public ClusterPreferencePage() { - super(GRID); - setPreferenceStore(Activator.getDefault().getPreferenceStore()); - setDescription("A demonstration of a preference page implementation"); - } - - /** - * Creates the field editors. Field editors are abstractions of - * the common GUI blocks needed to manipulate various types - * of preferences. Each field editor knows how to save and - * restore itself. - */ - public void createFieldEditors() { - addField(new DirectoryFieldEditor(PreferenceConstants.P_PATH, - "&Directory preference:", getFieldEditorParent())); - addField( - new BooleanFieldEditor( - PreferenceConstants.P_BOOLEAN, - "&An example of a boolean preference", - getFieldEditorParent())); - - addField(new RadioGroupFieldEditor( - PreferenceConstants.P_CHOICE, - "An example of a multiple-choice preference", - 1, - new String[][] { { "&Choice 1", "choice1" }, { - "C&hoice 2", "choice2" } - }, getFieldEditorParent())); - addField( - new StringFieldEditor(PreferenceConstants.P_STRING, "A &text preference:", getFieldEditorParent())); - } - - /* (non-Javadoc) - * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench) - */ - public void init(IWorkbench workbench) { - } - -}
\ No newline at end of file diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/ConsolePreferencePage.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/ConsolePreferencePage.java deleted file mode 100644 index 2d49af9b..00000000 --- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/ConsolePreferencePage.java +++ /dev/null @@ -1,83 +0,0 @@ -/******************************************************************************* - * 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.preferences; - -import org.eclipse.jface.preference.*; -import org.eclipse.ui.IWorkbenchPreferencePage; -import org.eclipse.ui.IWorkbench; - -import com.gluster.storage.management.gui.Activator; - -/** - * This class represents a preference page that - * is contributed to the Preferences dialog. By - * subclassing <samp>FieldEditorPreferencePage</samp>, we - * can use the field support built into JFace that allows - * us to create a page that is small and knows how to - * save, restore and apply itself. - * <p> - * This page is used to modify preferences only. They - * are stored in the preference store that belongs to - * the main plug-in class. That way, preferences can - * be accessed directly via the preference store. - */ - -public class ConsolePreferencePage - extends FieldEditorPreferencePage - implements IWorkbenchPreferencePage { - - public ConsolePreferencePage() { - super(GRID); - setPreferenceStore(Activator.getDefault().getPreferenceStore()); - setDescription("A demonstration of a preference page implementation"); - } - - /** - * Creates the field editors. Field editors are abstractions of - * the common GUI blocks needed to manipulate various types - * of preferences. Each field editor knows how to save and - * restore itself. - */ - public void createFieldEditors() { - addField(new DirectoryFieldEditor(PreferenceConstants.P_PATH, - "&Directory preference:", getFieldEditorParent())); - addField( - new BooleanFieldEditor( - PreferenceConstants.P_BOOLEAN, - "&An example of a boolean preference", - getFieldEditorParent())); - - addField(new RadioGroupFieldEditor( - PreferenceConstants.P_CHOICE, - "An example of a multiple-choice preference", - 1, - new String[][] { { "&Choice 1", "choice1" }, { - "C&hoice 2", "choice2" } - }, getFieldEditorParent())); - addField( - new StringFieldEditor(PreferenceConstants.P_STRING, "A &text preference:", getFieldEditorParent())); - } - - /* (non-Javadoc) - * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench) - */ - public void init(IWorkbench workbench) { - } - -}
\ No newline at end of file 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 b44ca37b..46af10d3 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 @@ -31,10 +31,7 @@ public class PreferenceConstants { 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"; + public static final String P_CPU_CHART_PERIOD = "cpu.chart.period"; + public static final String P_MEM_CHART_PERIOD = "memory.chart.period"; + public static final String P_NETWORK_CHART_PERIOD = "network.chart.period"; } 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 ae04034b..f889a259 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 @@ -46,5 +46,10 @@ public class PreferenceInitializer extends AbstractPreferenceInitializer { // Default disk free space threshold store.setDefault(PreferenceConstants.P_DISK_SPACE_USAGE_THRESHOLD, 90); + + // Default period for server statistics charts + store.setDefault(PreferenceConstants.P_CPU_CHART_PERIOD, "1d"); + store.setDefault(PreferenceConstants.P_MEM_CHART_PERIOD, "1d"); + store.setDefault(PreferenceConstants.P_NETWORK_CHART_PERIOD, "1d"); } } 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 b9a9e5ae..8f2288ec 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 @@ -20,6 +20,7 @@ */ package com.gluster.storage.management.gui.views; +import java.util.ArrayList; import java.util.List; import org.eclipse.birt.chart.util.CDateTime; @@ -40,6 +41,7 @@ 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.GlusterServersClient; import com.gluster.storage.management.core.model.Alert; import com.gluster.storage.management.core.model.Cluster; import com.gluster.storage.management.core.model.EntityGroup; @@ -47,6 +49,8 @@ import com.gluster.storage.management.core.model.GlusterDataModel; import com.gluster.storage.management.core.model.GlusterServer; import com.gluster.storage.management.core.model.Server; import com.gluster.storage.management.core.model.Server.SERVER_STATUS; +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; @@ -244,34 +248,40 @@ public class ClusterSummaryView extends ViewPart { } private void createCPUUsageSection() { + ServerStats stats; + try { + stats = new GlusterServersClient().getAggregatedCPUStats(); + } catch(Exception e) { + return; + } + Composite section = guiHelper.createSection(form, toolkit, "CPU Usage (aggregated)", null, 1, false); if (cluster.getServers().size() == 0) { toolkit.createLabel(section, "This section will be populated after at least\none server is added to the storage cloud."); return; } -// ServerStats stats = new GlusterServersClient().getAggregatedCPUStats(); -// List<Calendar> timestamps = new ArrayList<Calendar>(); -// List<Double> data = new ArrayList<Double>(); -// for(ServerStatsRow row : stats.getRows()) { -// // in case of CPU usage, there are three elements in usage data: user, system and total. we use total. -// Double cpuUsage = row.getUsageData().get(2); -// if(!cpuUsage.isNaN()) { -// timestamps.add(new CDateTime(row.getTimestamp() * 1000)); -// data.add(cpuUsage); -// } -// } -// createLineChart(section, timestamps.toArray(new Calendar[0]), data.toArray(new Double[0])); + List<Calendar> timestamps = new ArrayList<Calendar>(); + List<Double> data = new ArrayList<Double>(); + for(ServerStatsRow row : stats.getRows()) { + // in case of CPU usage, there are three elements in usage data: user, system and total. we use total. + Double cpuUsage = row.getUsageData().get(2); + if(!cpuUsage.isNaN()) { + timestamps.add(new CDateTime(row.getTimestamp() * 1000)); + data.add(cpuUsage); + } + } + createLineChart(section, timestamps.toArray(new Calendar[0]), data.toArray(new Double[0]), "%"); - Calendar[] timestamps = new Calendar[] { new CDateTime(1000l*1310468100), new CDateTime(1000l*1310468400), new CDateTime(1000l*1310468700), - new CDateTime(1000l*1310469000), new CDateTime(1000l*1310469300), new CDateTime(1000l*1310469600), new CDateTime(1000l*1310469900), - new CDateTime(1000l*1310470200), new CDateTime(1000l*1310470500), new CDateTime(1000l*1310470800), new CDateTime(1000l*1310471100), - new CDateTime(1000l*1310471400), new CDateTime(1000l*1310471700), new CDateTime(1000l*1310472000), new CDateTime(1000l*1310472300), - new CDateTime(1000l*1310472600), new CDateTime(1000l*1310472900), new CDateTime(1000l*1310473200), new CDateTime(1000l*1310473500), - new CDateTime(1000l*1310473800) }; - - Double[] values = new Double[] { 10d, 11.23d, 17.92d, 18.69d, 78.62d, 89.11d, 92.43d, 89.31d, 57.39d, 18.46d, 10.44d, 16.28d, 13.51d, 17.53d, 12.21, 20d, 21.43d, 16.45d, 14.86d, 15.27d }; - createLineChart(section, timestamps, values, "%"); +// Calendar[] timestamps = new Calendar[] { new CDateTime(1000l*1310468100), new CDateTime(1000l*1310468400), new CDateTime(1000l*1310468700), +// new CDateTime(1000l*1310469000), new CDateTime(1000l*1310469300), new CDateTime(1000l*1310469600), new CDateTime(1000l*1310469900), +// new CDateTime(1000l*1310470200), new CDateTime(1000l*1310470500), new CDateTime(1000l*1310470800), new CDateTime(1000l*1310471100), +// new CDateTime(1000l*1310471400), new CDateTime(1000l*1310471700), new CDateTime(1000l*1310472000), new CDateTime(1000l*1310472300), +// new CDateTime(1000l*1310472600), new CDateTime(1000l*1310472900), new CDateTime(1000l*1310473200), new CDateTime(1000l*1310473500), +// new CDateTime(1000l*1310473800) }; +// +// Double[] values = new Double[] { 10d, 11.23d, 17.92d, 18.69d, 78.62d, 89.11d, 92.43d, 89.31d, 57.39d, 18.46d, 10.44d, 16.28d, 13.51d, 17.53d, 12.21, 20d, 21.43d, 16.45d, 14.86d, 15.27d }; +// createLineChart(section, timestamps, values, "%"); createChartLinks(section, 4); } diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/ServerUtil.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/ServerUtil.java index 31342329..871a2e9d 100644 --- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/ServerUtil.java +++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/ServerUtil.java @@ -237,7 +237,8 @@ public class ServerUtil { } private ServerStats getFirstOnlineServerCPUStats(List<String> serverNames, boolean removeServerOnError, boolean removeOnlineServer) { - for(String serverName : serverNames) { + for(int i = serverNames.size() - 1; i >= 0; i--) { + String serverName = serverNames.get(i); try { ServerStats stats = fetchCPUUsageData(serverName); if(removeOnlineServer) { |
