summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorShireesh Anjal <shireesh@gluster.com>2011-06-24 19:49:55 +0530
committerShireesh Anjal <shireesh@gluster.com>2011-06-27 10:13:09 +0530
commit724d32f78992490e107af147c82cba616d9ddf15 (patch)
treef33b14159600df7bd51da8a487a99e323309fe1e /src
parenta1897fb17ba8fdb99ce2320584440afa08755fe7 (diff)
Introduced preference store
Diffstat (limited to 'src')
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/ClusterSelectionDialog.java50
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/LoginDialog.java13
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/GlusterPreferencePage.java43
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/PreferenceConstants.java1
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/PreferenceInitializer.java7
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/UsersResource.java2
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/VolumesResource.java9
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/SshUtil.java4
8 files changed, 92 insertions, 37 deletions
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 342c72e6..82df0c46 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
@@ -20,9 +20,12 @@ package com.gluster.storage.management.gui.dialogs;
import java.util.List;
+import org.eclipse.core.runtime.preferences.ConfigurationScope;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.fieldassist.ControlDecoration;
+import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.StackLayout;
import org.eclipse.swt.events.ModifyEvent;
@@ -40,8 +43,14 @@ import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
+import org.osgi.service.prefs.BackingStoreException;
+import com.gluster.storage.management.core.constants.CoreConstants;
+import com.gluster.storage.management.core.exceptions.GlusterRuntimeException;
+import com.gluster.storage.management.gui.Activator;
+import com.gluster.storage.management.gui.Application;
import com.gluster.storage.management.gui.IImageKeys;
+import com.gluster.storage.management.gui.preferences.PreferenceConstants;
import com.gluster.storage.management.gui.utils.GUIHelper;
/**
@@ -73,10 +82,13 @@ public class ClusterSelectionDialog extends Dialog {
private String clusterName;
private CLUSTER_MODE clusterMode;
private String serverName;
+ private Button dontAskAgainButton;
+ IPreferenceStore preferenceStore;
public ClusterSelectionDialog(Shell parentShell, List<String> clusters) {
super(parentShell);
this.clusters = clusters;
+ preferenceStore = Activator.getDefault().getPreferenceStore();
}
@Override
@@ -109,6 +121,20 @@ public class ClusterSelectionDialog extends Dialog {
clusterNameCombo = new Combo(composite, SWT.READ_ONLY);
clusterNameCombo.setItems(clusters.toArray(new String[0]));
clusterNameCombo.select(0);
+
+ String clusterName = preferenceStore.getString(PreferenceConstants.P_DEFAULT_CLUSTER_NAME);
+ if(clusterName != null && !clusterName.isEmpty()) {
+ selectCluster(clusterName);
+ }
+ }
+
+ public void selectCluster(String clusterName) {
+ for(int i = 0; i < clusters.size(); i++) {
+ if(clusterNameCombo.getItem(i).equals(clusterName)) {
+ clusterNameCombo.select(i);
+ break;
+ }
+ }
}
private void configureDialogLayout(Composite composite) {
@@ -231,9 +257,26 @@ public class ClusterSelectionDialog extends Dialog {
clusterSelectionComposite.setLayout(layout);
createClusterNameLabel(clusterSelectionComposite);
createClusterNameCombo(clusterSelectionComposite);
+
+ createPreferenceCheckboxes(clusterSelectionComposite);
+
stackLayout.topControl = clusterSelectionComposite;
}
+ private void createPreferenceCheckboxes(Composite composite) {
+ GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, false);
+ layoutData.verticalIndent = 5;
+ layoutData.horizontalSpan = 2;
+
+ dontAskAgainButton = new Button(composite, SWT.CHECK);
+ dontAskAgainButton.setLayoutData(layoutData);
+ dontAskAgainButton.setText("&Don't ask again");
+ dontAskAgainButton.setEnabled(true);
+ dontAskAgainButton.setSelection(false);
+ dontAskAgainButton.setToolTipText("Always manage the selected cluster without showing this dialog box."
+ + "This preference can later be changed from the \"Settings\" menu.");
+ }
+
private void createRadioButtons() {
{
if (clusters.size() > 0) {
@@ -371,6 +414,13 @@ public class ClusterSelectionDialog extends Dialog {
if(selectButton != null && selectButton.getSelection()) {
clusterMode = CLUSTER_MODE.SELECT;
clusterName = clusterNameCombo.getText();
+
+ if(dontAskAgainButton.getSelection()) {
+ preferenceStore.setValue(PreferenceConstants.P_SHOW_CLUSTER_SELECTION_DIALOG, false);
+ preferenceStore.setValue(PreferenceConstants.P_DEFAULT_CLUSTER_NAME, clusterName);
+ } else {
+ preferenceStore.setValue(PreferenceConstants.P_SHOW_CLUSTER_SELECTION_DIALOG, true);
+ }
} else if(createButton.getSelection()) {
clusterMode = CLUSTER_MODE.CREATE;
clusterName = newClusterNameText.getText().trim();
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 5cdb2648..c23a96c5 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
@@ -28,6 +28,7 @@ import org.eclipse.jface.databinding.swt.WidgetProperties;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.TraverseEvent;
@@ -47,6 +48,7 @@ import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.client.UsersClient;
import com.gluster.storage.management.core.model.ConnectionDetails;
import com.gluster.storage.management.core.model.Status;
+import com.gluster.storage.management.gui.Activator;
import com.gluster.storage.management.gui.Application;
import com.gluster.storage.management.gui.IImageKeys;
import com.gluster.storage.management.gui.dialogs.ClusterSelectionDialog.CLUSTER_MODE;
@@ -212,20 +214,21 @@ public class LoginDialog extends Dialog {
ClustersClient clustersClient = new ClustersClient(usersClient.getSecurityToken());
- IEclipsePreferences preferences = new ConfigurationScope().getNode(Application.PLUGIN_ID);
- boolean showClusterSelectionDialog = preferences.getBoolean(
- PreferenceConstants.P_SHOW_CLUSTER_SELECTION_DIALOG, true);
+ IPreferenceStore preferenceStore = Activator.getDefault().getPreferenceStore();
+ boolean showClusterSelectionDialog = preferenceStore.getBoolean(PreferenceConstants.P_SHOW_CLUSTER_SELECTION_DIALOG);
+ CLUSTER_MODE mode;
String clusterName = null;
if (!showClusterSelectionDialog) {
- clusterName = preferences.get(PreferenceConstants.P_DEFAULT_CLUSTER_NAME, null);
+ clusterName = preferenceStore.getString(PreferenceConstants.P_DEFAULT_CLUSTER_NAME);
if (clusterName == null || clusterName.isEmpty()) {
// Cluster name not available in preferences. Hence we must show the cluster selection dialog.
showClusterSelectionDialog = true;
+ } else {
+ mode = CLUSTER_MODE.SELECT;
}
}
- CLUSTER_MODE mode;
String serverName = null;
if (showClusterSelectionDialog) {
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 23b2cff2..c88d6e98 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,10 +18,16 @@
*******************************************************************************/
package com.gluster.storage.management.gui.preferences;
-import org.eclipse.jface.preference.*;
-import org.eclipse.ui.IWorkbenchPreferencePage;
+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.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+import com.gluster.storage.management.client.ClustersClient;
import com.gluster.storage.management.gui.Activator;
/**
@@ -37,15 +43,16 @@ import com.gluster.storage.management.gui.Activator;
* the main plug-in class. That way, preferences can
* be accessed directly via the preference store.
*/
-
public class GlusterPreferencePage
extends FieldEditorPreferencePage
implements IWorkbenchPreferencePage {
+
+ private List<String> clusterNames;
public GlusterPreferencePage() {
super(GRID);
setPreferenceStore(Activator.getDefault().getPreferenceStore());
- setDescription("A demonstration of a preference page implementation");
+ setDescription("Gluster Management Console");
}
/**
@@ -55,29 +62,29 @@ public class GlusterPreferencePage
* 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",
+ PreferenceConstants.P_SHOW_CLUSTER_SELECTION_DIALOG,
+ "&Show Cluster Selection Dialog on Login:",
getFieldEditorParent()));
+
+ String[][] clusterNamesArr = new String[clusterNames.size()][2];
+ for(int i = 0; i < clusterNames.size(); i++) {
+ String clusterName = clusterNames.get(i);;
+ clusterNamesArr[i][0] = clusterName;
+ clusterNamesArr[i][1] = clusterName;
+ }
- 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()));
+ addField(new ComboFieldEditor(PreferenceConstants.P_DEFAULT_CLUSTER_NAME, "Default &Cluster to manage:",
+ clusterNamesArr, getFieldEditorParent()));
+ addField(new IntegerFieldEditor(PreferenceConstants.P_DATA_REFRESH_INTERVAL, "&Data Refresh Interval:",
+ getFieldEditorParent()));
}
/* (non-Javadoc)
* @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
*/
public void init(IWorkbench workbench) {
+ clusterNames = new ClustersClient().getClusterNames();
}
-
} \ 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 8b5a8cfd..260aadb6 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
@@ -25,6 +25,7 @@ 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_REFRESH_INTERVAL = "data.refresh.interval";
// TODO: Remove after proper preferences are added
public static final String P_PATH = "pathPreference";
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 74ace130..1a4104ac 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
@@ -35,10 +35,7 @@ public class PreferenceInitializer extends AbstractPreferenceInitializer {
*/
public void initializeDefaultPreferences() {
IPreferenceStore store = Activator.getDefault().getPreferenceStore();
- store.setDefault(PreferenceConstants.P_BOOLEAN, true);
- store.setDefault(PreferenceConstants.P_CHOICE, "choice2");
- store.setDefault(PreferenceConstants.P_STRING,
- "Default value");
+
+ store.setDefault(PreferenceConstants.P_SHOW_CLUSTER_SELECTION_DIALOG, true);
}
-
}
diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/UsersResource.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/UsersResource.java
index 1b1f0d72..0ccb4263 100644
--- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/UsersResource.java
+++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/UsersResource.java
@@ -32,12 +32,10 @@ import javax.ws.rs.core.Response;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.encoding.PasswordEncoder;
-import org.springframework.security.core.AuthenticationException;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.provisioning.JdbcUserDetailsManager;
import org.springframework.stereotype.Component;
-import com.gluster.storage.management.core.model.Status;
import com.sun.jersey.spi.resource.Singleton;
@Singleton
diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/VolumesResource.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/VolumesResource.java
index 5d1f38e9..c7e18aaa 100644
--- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/VolumesResource.java
+++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/VolumesResource.java
@@ -23,8 +23,9 @@ package com.gluster.storage.management.server.resources;
import static com.gluster.storage.management.core.constants.RESTConstants.FORM_PARAM_ACCESS_PROTOCOLS;
import static com.gluster.storage.management.core.constants.RESTConstants.FORM_PARAM_AUTO_COMMIT;
import static com.gluster.storage.management.core.constants.RESTConstants.FORM_PARAM_BRICKS;
-import static com.gluster.storage.management.core.constants.RESTConstants.FORM_PARAM_CLUSTER_NAME;
import static com.gluster.storage.management.core.constants.RESTConstants.FORM_PARAM_OPERATION;
+import static com.gluster.storage.management.core.constants.RESTConstants.FORM_PARAM_OPTION_KEY;
+import static com.gluster.storage.management.core.constants.RESTConstants.FORM_PARAM_OPTION_VALUE;
import static com.gluster.storage.management.core.constants.RESTConstants.FORM_PARAM_REPLICA_COUNT;
import static com.gluster.storage.management.core.constants.RESTConstants.FORM_PARAM_SOURCE;
import static com.gluster.storage.management.core.constants.RESTConstants.FORM_PARAM_STRIPE_COUNT;
@@ -33,7 +34,6 @@ import static com.gluster.storage.management.core.constants.RESTConstants.FORM_P
import static com.gluster.storage.management.core.constants.RESTConstants.FORM_PARAM_VOLUME_NAME;
import static com.gluster.storage.management.core.constants.RESTConstants.FORM_PARAM_VOLUME_OPTIONS;
import static com.gluster.storage.management.core.constants.RESTConstants.FORM_PARAM_VOLUME_TYPE;
-import static com.gluster.storage.management.core.constants.RESTConstants.*;
import static com.gluster.storage.management.core.constants.RESTConstants.PATH_PARAM_CLUSTER_NAME;
import static com.gluster.storage.management.core.constants.RESTConstants.PATH_PARAM_VOLUME_NAME;
import static com.gluster.storage.management.core.constants.RESTConstants.QUERY_PARAM_BRICKS;
@@ -44,13 +44,13 @@ import static com.gluster.storage.management.core.constants.RESTConstants.QUERY_
import static com.gluster.storage.management.core.constants.RESTConstants.QUERY_PARAM_LINE_COUNT;
import static com.gluster.storage.management.core.constants.RESTConstants.QUERY_PARAM_LOG_SEVERITY;
import static com.gluster.storage.management.core.constants.RESTConstants.QUERY_PARAM_TO_TIMESTAMP;
-import static com.gluster.storage.management.core.constants.RESTConstants.QUERY_PARAM_VOLUME_NAME;
import static com.gluster.storage.management.core.constants.RESTConstants.RESOURCE_BRICKS;
import static com.gluster.storage.management.core.constants.RESTConstants.RESOURCE_DEFAULT_OPTIONS;
import static com.gluster.storage.management.core.constants.RESTConstants.RESOURCE_DOWNLOAD;
import static com.gluster.storage.management.core.constants.RESTConstants.RESOURCE_LOGS;
import static com.gluster.storage.management.core.constants.RESTConstants.RESOURCE_OPTIONS;
import static com.gluster.storage.management.core.constants.RESTConstants.RESOURCE_PATH_CLUSTERS;
+import static com.gluster.storage.management.core.constants.RESTConstants.RESOURCE_TASKS;
import static com.gluster.storage.management.core.constants.RESTConstants.RESOURCE_VOLUMES;
import static com.gluster.storage.management.core.constants.RESTConstants.TASK_START;
import static com.gluster.storage.management.core.constants.RESTConstants.TASK_STOP;
@@ -91,15 +91,12 @@ import com.gluster.storage.management.core.model.Volume.VOLUME_TYPE;
import com.gluster.storage.management.core.model.VolumeLogMessage;
import com.gluster.storage.management.core.response.GenericResponse;
import com.gluster.storage.management.core.response.LogMessageListResponse;
-import com.gluster.storage.management.core.response.TaskResponse;
import com.gluster.storage.management.core.response.VolumeListResponse;
import com.gluster.storage.management.core.response.VolumeOptionInfoListResponse;
import com.gluster.storage.management.core.utils.DateUtil;
import com.gluster.storage.management.core.utils.FileUtil;
-import com.gluster.storage.management.core.utils.GlusterCoreUtil;
import com.gluster.storage.management.core.utils.ProcessUtil;
import com.gluster.storage.management.server.constants.VolumeOptionsDefaults;
-import com.gluster.storage.management.server.data.ClusterInfo;
import com.gluster.storage.management.server.services.ClusterService;
import com.gluster.storage.management.server.utils.GlusterUtil;
import com.gluster.storage.management.server.utils.ServerUtil;
diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/SshUtil.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/SshUtil.java
index 5f8b88f6..d15142e6 100644
--- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/SshUtil.java
+++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/SshUtil.java
@@ -259,7 +259,9 @@ public class SshUtil {
// Wait for program to come out either
// a) gracefully with an exit status, OR
// b) because of a termination signal
- int condition = session.waitForCondition(ChannelCondition.EXIT_SIGNAL | ChannelCondition.EXIT_STATUS, 5000);
+ // c) command takes to long to exit (timeout)
+ int condition = session.waitForCondition(ChannelCondition.EXIT_SIGNAL | ChannelCondition.EXIT_STATUS
+ | ChannelCondition.TIMEOUT, 5000);
StringBuilder output = new StringBuilder();
try {