diff options
Diffstat (limited to 'src')
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()); - } - } } |
