summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShireesh Anjal <shireesh@gluster.com>2011-07-07 21:31:07 +0530
committerShireesh Anjal <shireesh@gluster.com>2011-07-07 23:03:05 +0530
commitc4a9e5c5a2db7210b44124dd45f81654cf3714ba (patch)
tree73a88470159391388c72b732e8705d78288ea417
parent3a0363633bacf93bf81eb8f3917ecea9d1adfc22 (diff)
Task#111 - Auto-refresh of data in views
-rw-r--r--src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/AbstractClient.java1
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Volume.java4
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/VolumeOption.java9
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/VolumeOptions.java18
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/Application.java1
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/VolumeOptionsContentProvider.java47
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/OptionKeyEditingSupport.java9
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/OptionValueEditingSupport.java6
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/VolumeOptionsPage.java23
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/ServerUtil.java17
10 files changed, 89 insertions, 46 deletions
diff --git a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/AbstractClient.java b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/AbstractClient.java
index 3c6a2d40..3a2592f0 100644
--- a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/AbstractClient.java
+++ b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/AbstractClient.java
@@ -128,7 +128,6 @@ public abstract class AbstractClient {
* Expected class of the response
* @return Object of responseClass received as a result of the GET request
*/
- @SuppressWarnings({ "unchecked", "rawtypes" })
private <T> T fetchResource(WebResource res, MultivaluedMap<String, String> queryParams, Class<T> responseClass) {
try {
return res.queryParams(queryParams)
diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Volume.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Volume.java
index fe05c517..7a53b88f 100644
--- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Volume.java
+++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Volume.java
@@ -196,6 +196,10 @@ public class Volume extends Entity {
options.put(key, value);
}
+ public void setOptions(VolumeOptions options) {
+ this.options = options;
+ }
+
public void setOptions(LinkedHashMap<String, String> options) {
List<VolumeOption> volumeOptions = new ArrayList<VolumeOption>();
for(Entry<String, String> entry : options.entrySet()) {
diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/VolumeOption.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/VolumeOption.java
index 4b54b010..6eb0c1bf 100644
--- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/VolumeOption.java
+++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/VolumeOption.java
@@ -20,11 +20,13 @@ package com.gluster.storage.management.core.model;
import javax.xml.bind.annotation.XmlRootElement;
+import com.gluster.storage.management.core.utils.StringUtil;
+
/**
*
*/
@XmlRootElement(name="option")
-public class VolumeOption {
+public class VolumeOption implements Filterable {
private String key;
private String value;
@@ -56,4 +58,9 @@ public class VolumeOption {
public String toString() {
return key + "=" + value;
}
+
+ @Override
+ public boolean filter(String filterString, boolean caseSensitive) {
+ return StringUtil.filterString(getKey() + getValue(), filterString, caseSensitive);
+ }
}
diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/VolumeOptions.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/VolumeOptions.java
index bda01075..4040a4e7 100644
--- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/VolumeOptions.java
+++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/VolumeOptions.java
@@ -49,7 +49,12 @@ public class VolumeOptions {
}
public void put(String key, String value) {
- options.add(new VolumeOption(key, value));
+ VolumeOption option = getOption(key);
+ if(option != null) {
+ option.setValue(value);
+ } else {
+ options.add(new VolumeOption(key, value));
+ }
}
@XmlElement(name="option", type=VolumeOption.class)
@@ -66,7 +71,16 @@ public class VolumeOptions {
}
public boolean remove(String key) {
- return options.remove(get(key));
+ return options.remove(getOption(key));
+ }
+
+ public VolumeOption getOption(String key) {
+ for(VolumeOption option : options) {
+ if(option.getKey().equals(key)) {
+ return option;
+ }
+ }
+ return null;
}
public int size() {
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/Application.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/Application.java
index bff46096..2c49a1e2 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/Application.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/Application.java
@@ -114,6 +114,7 @@ public class Application implements IApplication {
final long JOB_INTERVAL = preferenceStore.getLong(PreferenceConstants.P_DATA_SYNC_INTERVAL) * 1000;
syncJob = new DataSyncJob("Syncing cluster data in background");
+ syncJob.setPriority(Job.DECORATE);
syncJob.schedule(JOB_INTERVAL);
syncJob.addJobChangeListener(new JobChangeAdapter() {
@Override
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/VolumeOptionsContentProvider.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/VolumeOptionsContentProvider.java
new file mode 100644
index 00000000..7d91c156
--- /dev/null
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/VolumeOptionsContentProvider.java
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * 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 org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+
+import com.gluster.storage.management.core.model.VolumeOptions;
+
+/**
+ * @author root
+ *
+ */
+public class VolumeOptionsContentProvider implements IStructuredContentProvider {
+
+ @Override
+ public void dispose() {
+ }
+
+ @Override
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ }
+
+ @Override
+ public Object[] getElements(Object inputElement) {
+ if (inputElement instanceof VolumeOptions) {
+ return ((VolumeOptions) inputElement).getOptions().toArray();
+ }
+ return null;
+ }
+}
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 924c5cc8..a139a106 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
@@ -5,7 +5,6 @@ package com.gluster.storage.management.gui.views.pages;
import java.util.ArrayList;
import java.util.List;
-import java.util.Map.Entry;
import org.eclipse.jface.viewers.CellEditor;
import org.eclipse.jface.viewers.ColumnViewer;
@@ -53,14 +52,13 @@ public class OptionKeyEditingSupport extends EditingSupport {
return keys.toArray(new String[0]);
}
- @SuppressWarnings("unchecked")
@Override
protected void setValue(final Object element, final Object value) {
- Entry<String, String> oldEntry = (Entry<String, String>)element;
+ VolumeOption oldEntry = (VolumeOption)element;
Integer newValue = (Integer)value;
String newKey = allowedKeys[newValue];
- if (((Entry<String, String>)element).getKey().equals(newKey)) {
+ if (((VolumeOption)element).getKey().equals(newKey)) {
// selected value is same as old one.
return;
}
@@ -114,10 +112,9 @@ public class OptionKeyEditingSupport extends EditingSupport {
return null;
}
- @SuppressWarnings("unchecked")
@Override
protected boolean canEdit(Object element) {
- Entry<String, String> entry = (Entry<String, String>)element;
+ VolumeOption entry = (VolumeOption)element;
return (entry.getKey().isEmpty() || entry.getValue().isEmpty());
}
}
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 b349ab78..78da6935 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
@@ -4,7 +4,6 @@
package com.gluster.storage.management.gui.views.pages;
import java.util.List;
-import java.util.Map.Entry;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.CellEditor;
@@ -37,7 +36,6 @@ public class OptionValueEditingSupport extends EditingSupport {
this.cellEditor = new TextCellEditor((Composite) viewer.getControl());
}
- @SuppressWarnings("unchecked")
@Override
protected void setValue(final Object element, final Object value) {
final VolumeOption entry = (VolumeOption)element;
@@ -69,7 +67,6 @@ public class OptionValueEditingSupport extends EditingSupport {
VolumesClient client = new VolumesClient();
try {
client.setVolumeOption(volume.getName(), optionKey, optionValue);
- entry.setValue((String)value);
GlusterDataModelManager.getInstance().setVolumeOption(volume, optionKey, optionValue);
} catch(Exception e) {
MessageDialog.openError(Display.getDefault().getActiveShell(), "Set Volume Option", e.getMessage());
@@ -95,10 +92,9 @@ public class OptionValueEditingSupport extends EditingSupport {
return "";
}
- @SuppressWarnings("unchecked")
@Override
protected Object getValue(Object element) {
- Entry<String, String> entry = (Entry<String, String>) element;
+ VolumeOption entry = (VolumeOption) element;
return entry.getValue().isEmpty() ? getDefaultValue(entry.getKey()) : entry.getValue();
}
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 b131999b..ff94d7e0 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
@@ -19,11 +19,9 @@
package com.gluster.storage.management.gui.views.pages;
import java.util.List;
-import java.util.Map.Entry;
import org.apache.commons.lang.WordUtils;
import org.eclipse.jface.layout.TableColumnLayout;
-import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.ColumnLabelProvider;
import org.eclipse.jface.viewers.ColumnLayoutData;
import org.eclipse.jface.viewers.ColumnViewerToolTipSupport;
@@ -60,6 +58,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.VolumeOptionsContentProvider;
import com.gluster.storage.management.gui.VolumeOptionsTableLabelProvider;
import com.gluster.storage.management.gui.utils.GUIHelper;
@@ -159,7 +158,6 @@ public class VolumeOptionsPage extends Composite {
});
clusterListener = new DefaultClusterListener() {
- @SuppressWarnings("unchecked")
@Override
public void volumeChanged(Volume volume, Event event) {
super.volumeChanged(volume, event);
@@ -171,8 +169,8 @@ public class VolumeOptionsPage extends Composite {
}
if (event.getEventType() == EVENT_TYPE.VOLUME_OPTION_SET) {
- Entry<String, String> eventEntry = (Entry<String, String>) event.getEventData();
- if (isNewOption(volume, eventEntry.getKey())) {
+ String key = (String)event.getEventData();
+ if (isNewOption(volume, key)) {
// option has been set successfully by the user. re-enable the add button and search filter
// textbox
setAddButtonsEnabled(true);
@@ -188,7 +186,7 @@ public class VolumeOptionsPage extends Composite {
tableViewer.refresh();
} else {
// existing volume option value changed. update that element.
- tableViewer.update(eventEntry, null);
+ tableViewer.update(volume.getOptions().get(key), null);
}
}
}
@@ -201,7 +199,7 @@ public class VolumeOptionsPage extends Composite {
}
// if this is the last option in the volume options, it must be the new option
- return optionKey.equals(volume.getOptions().getOptions().get(volume.getOptions().size() - 1));
+ return optionKey.equals(volume.getOptions().getOptions().get(volume.getOptions().size() - 1).getKey());
}
};
@@ -285,10 +283,9 @@ public class VolumeOptionsPage extends Composite {
valueColumn.getColumn()
.setText(OPTIONS_TABLE_COLUMN_NAMES[OPTIONS_TABLE_COLUMN_INDICES.OPTION_VALUE.ordinal()]);
valueColumn.setLabelProvider(new ColumnLabelProvider() {
- @SuppressWarnings("unchecked")
@Override
public String getText(Object element) {
- return ((Entry<String, String>) element).getValue();
+ return ((VolumeOption) element).getValue();
}
});
@@ -302,16 +299,14 @@ public class VolumeOptionsPage extends Composite {
keyColumn = new TableViewerColumn(tableViewer, SWT.NONE);
keyColumn.getColumn().setText(OPTIONS_TABLE_COLUMN_NAMES[OPTIONS_TABLE_COLUMN_INDICES.OPTION_KEY.ordinal()]);
keyColumn.setLabelProvider(new ColumnLabelProvider() {
- @SuppressWarnings("unchecked")
@Override
public String getText(Object element) {
- return ((Entry<String, String>) element).getKey();
+ return ((VolumeOption) element).getKey();
}
- @SuppressWarnings("unchecked")
@Override
public String getToolTipText(Object element) {
- String key = ((Entry<String, String>) element).getKey();
+ String key = ((VolumeOption) element).getKey();
if (key.isEmpty()) {
return "Click to select a volume option key";
}
@@ -333,7 +328,7 @@ public class VolumeOptionsPage extends Composite {
private void createOptionsTableViewer(Composite parent) {
tableViewer = new TableViewer(parent, SWT.FLAT | SWT.FULL_SELECTION | SWT.SINGLE);
tableViewer.setLabelProvider(new VolumeOptionsTableLabelProvider());
- tableViewer.setContentProvider(new ArrayContentProvider());
+ tableViewer.setContentProvider(new VolumeOptionsContentProvider());
tableViewer.getTable().setLinesVisible(true);
setupOptionsTable(parent);
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 e8073765..ae4bc919 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
@@ -21,16 +21,12 @@
package com.gluster.storage.management.server.utils;
import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
import javax.servlet.ServletContext;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
-import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import org.springframework.beans.factory.annotation.Autowired;
@@ -41,8 +37,6 @@ import com.gluster.storage.management.core.exceptions.ConnectionException;
import com.gluster.storage.management.core.exceptions.GlusterRuntimeException;
import com.gluster.storage.management.core.model.Server;
import com.gluster.storage.management.core.model.Status;
-import com.gluster.storage.management.core.model.VolumeOption;
-import com.gluster.storage.management.core.model.VolumeOptions;
import com.gluster.storage.management.core.response.GenericResponse;
import com.gluster.storage.management.core.utils.ProcessResult;
import com.gluster.storage.management.core.utils.ProcessUtil;
@@ -222,15 +216,4 @@ public class ServerUtil {
public Status getDiskForDir(String serverName, String brickDir) {
return (Status) executeOnServer(true, serverName, REMOTE_SCRIPT_GET_DISK_FOR_DIR + " " + brickDir, Status.class);
}
-
- public static void main(String args[]) throws Exception {
- //String diskStr = "<server><name>devserver1</name><domainname/><dns1>10.1.10.1</dns1><dns2>8.8.4.4</dns2><networkInterfaces><networkInterface><name>eth0</name><hwAddr>00:50:56:82:00:1d</hwAddr><speed>1000</speed><model>ETHERNET</model><onboot>yes</onboot><bootProto>none</bootProto><ipAddress>10.1.12.41</ipAddress><netMask>255.255.255.0</netMask><defaultGateway>10.1.12.1</defaultGateway></networkInterface></networkInterfaces><numOfCPUs>2</numOfCPUs><cpuUsage>0.0</cpuUsage><totalMemory>2010.5234375</totalMemory><memoryInUse>1267.6015625</memoryInUse><status>ONLINE</status><uuid/><disks><disk><name>sdd</name><description>VMware Virtual disk</description><uuid/><status>UNINITIALIZED</status><init>false</init><type>false</type><interface>pci</interface><fsType/><fsVersion/><mountPoint/><size>10240</size><spaceInUse/><partitions><partition><name>sdd1</name><uuid/><status>UNINITIALIZED</status><init>false</init><type>false</type><interface/><fsType/><mountPoint/><size>10236</size><spaceInUse/></partition></partitions></disk><disk><name>sda</name><description>VMware Virtual disk</description><uuid/><status>UNINITIALIZED</status><init>false</init><type>false</type><interface>pci</interface><fsType/><fsVersion/><mountPoint/><size>10240</size><spaceInUse>2019</spaceInUse><partitions><partition><name>sda1</name><uuid>345d880e-822a-4e46-a518-75cc48b1869f</uuid><status>INITIALIZED</status><init>true</init><type>false</type><interface/><fsType>ext3</fsType><mountPoint>/boot</mountPoint><size>125</size><spaceInUse>11</spaceInUse></partition><partition><name>sda2</name><uuid/><status>UNINITIALIZED</status><init>false</init><type>false</type><interface/><fsType>swap</fsType><mountPoint/><size>125</size><spaceInUse/></partition><partition><name>sda3</name><uuid>f94a0b2a-5ebc-4c13-a618-0328af97a31e</uuid><status>INITIALIZED</status><init>true</init><type>false</type><interface/><fsType>ext3</fsType><mountPoint>/</mountPoint><size>9985</size><spaceInUse>2008</spaceInUse></partition></partitions></disk><disk><name>sdb</name><description>VMware Virtual disk</description><uuid>97ee7ea3-d235-424c-bdda-f5b697f204a2</uuid><status>READY</status><init>true</init><type>true</type><interface>pci</interface><fsType>ext3</fsType><fsVersion>1.0</fsVersion><mountPoint>/export/sdb</mountPoint><size>1024</size><spaceInUse>427</spaceInUse><partitions/></disk><disk><name>sdc</name><description>VMware Virtual disk</description><uuid>87679044-6395-42fb-a80d-41c3b648f248</uuid><status>READY</status><init>true</init><type>true</type><interface>pci</interface><fsType>ext3</fsType><fsVersion>1.0</fsVersion><mountPoint>/export/sdc</mountPoint><size>8192</size><spaceInUse>602</spaceInUse><partitions/></disk></disks></server>";
- String diskStr = "<options><option><key>auth.allow</key><value>*</value></option><option><key>cluster.stripe-block-size</key><value>*:128KB</value></option></options>";
- //diskStr = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><options><option><key>auth.allow</key><value>*</value></option><option><key>cluster.stripe-block-size</key><value>*:128KB</value></option></options>";
- VolumeOptions disk = (VolumeOptions)new ServerUtil().unmarshal(VolumeOptions.class, diskStr, false);
- System.out.println(disk.size());
- for(VolumeOption option : disk.getOptions()) {
- System.out.println(option.toString());
- }
- }
}