summaryrefslogtreecommitdiffstats
path: root/com.gluster.storage.management.gui/src/com/gluster
diff options
context:
space:
mode:
authorShireesh Anjal <shireesh@gluster.com>2011-03-22 17:53:14 +0530
committerShireesh Anjal <shireesh@gluster.com>2011-03-22 17:53:14 +0530
commitc0767db8bf79afd62cdb750558ab7db1a227838f (patch)
tree86e64122f70f8a03a3a9dbe677ac1be89948490a /com.gluster.storage.management.gui/src/com/gluster
parent97964bbc552cf0c3a86d0dff8ba00d930f60fd5d (diff)
story#21 Start Volume
Diffstat (limited to 'com.gluster.storage.management.gui/src/com/gluster')
-rw-r--r--com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StartVolumeAction.java24
-rw-r--r--com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/NavigationView.java15
-rw-r--r--com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumeSummaryView.java31
3 files changed, 64 insertions, 6 deletions
diff --git a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StartVolumeAction.java b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StartVolumeAction.java
index 6dbe6315..dec94f12 100644
--- a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StartVolumeAction.java
+++ b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StartVolumeAction.java
@@ -19,21 +19,39 @@
package com.gluster.storage.management.gui.actions;
import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.swt.widgets.Display;
+import com.gluster.storage.management.client.GlusterDataModelManager;
+import com.gluster.storage.management.client.VolumesClient;
+import com.gluster.storage.management.core.model.Status;
import com.gluster.storage.management.core.model.Volume;
import com.gluster.storage.management.core.model.Volume.VOLUME_STATUS;
public class StartVolumeAction extends AbstractActionDelegate {
+ private Volume volume;
+ GlusterDataModelManager modelManager = GlusterDataModelManager.getInstance();
@Override
public void run(IAction action) {
- System.out.println("Running [" + this.getClass().getSimpleName() + "]");
+ VolumesClient client = new VolumesClient(modelManager.getServerName(), modelManager.getSecurityToken());
+ Status status = client.startVolume(volume.getName());
+ if (status.isSuccess()) {
+ new MessageDialog(Display.getDefault().getActiveShell(), "Create Volume", null, "Volume ["
+ + volume.getName() + "] started successfully!", MessageDialog.INFORMATION, new String[] { "OK" }, 0)
+ .open();
+ modelManager.updateVolumeStatus(volume, VOLUME_STATUS.ONLINE);
+ } else {
+ new MessageDialog(Display.getDefault().getActiveShell(), "Create Volume", null, "Volume ["
+ + volume.getName() + "] could not be started! Error: [" + status + "]", MessageDialog.ERROR,
+ new String[] { "OK" }, 0).open();
+ }
}
@Override
public void dispose() {
- System.out.println("Disposing [" + this.getClass().getSimpleName() + "]");
+
}
/*
@@ -48,7 +66,7 @@ public class StartVolumeAction extends AbstractActionDelegate {
super.selectionChanged(action, selection);
if (selectedEntity instanceof Volume) {
- Volume volume = (Volume) selectedEntity;
+ volume = (Volume) selectedEntity;
action.setEnabled(volume.getStatus() == VOLUME_STATUS.OFFLINE);
}
}
diff --git a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/NavigationView.java b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/NavigationView.java
index 8618c1da..35b5cd7a 100644
--- a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/NavigationView.java
+++ b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/NavigationView.java
@@ -37,8 +37,10 @@ import org.eclipse.ui.part.ViewPart;
import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.core.model.DefaultClusterListener;
import com.gluster.storage.management.core.model.Entity;
+import com.gluster.storage.management.core.model.Event;
import com.gluster.storage.management.core.model.GlusterDataModel;
import com.gluster.storage.management.core.model.GlusterServer;
+import com.gluster.storage.management.core.model.Volume;
import com.gluster.storage.management.gui.toolbar.GlusterToolbarManager;
import com.gluster.storage.management.gui.views.navigator.ClusterAdapterFactory;
@@ -86,6 +88,19 @@ public class NavigationView extends ViewPart implements ISelectionListener {
public void serverAdded(GlusterServer server) {
treeViewer.refresh();
}
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * com.gluster.storage.management.core.model.DefaultClusterListener#volumeChanged(com.gluster.storage.management
+ * .core.model.Volume, com.gluster.storage.management.core.model.Event)
+ */
+ @Override
+ public void volumeChanged(Volume volume, Event event) {
+ treeViewer.refresh();
+ selectEntity(volume); // this makes sure that the toolbar buttons get updated accoring to new status
+ }
});
}
diff --git a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumeSummaryView.java b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumeSummaryView.java
index 99ac0e0b..396c5419 100644
--- a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumeSummaryView.java
+++ b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumeSummaryView.java
@@ -16,11 +16,17 @@ import org.eclipse.ui.forms.widgets.Hyperlink;
import org.eclipse.ui.forms.widgets.ScrolledForm;
import org.eclipse.ui.part.ViewPart;
+import com.gluster.storage.management.client.GlusterDataModelManager;
+import com.gluster.storage.management.core.model.DefaultClusterListener;
+import com.gluster.storage.management.core.model.Event;
+import com.gluster.storage.management.core.model.Event.EVENT_TYPE;
+import com.gluster.storage.management.core.model.GlusterServer;
import com.gluster.storage.management.core.model.Volume;
import com.gluster.storage.management.core.model.Volume.NAS_PROTOCOL;
import com.gluster.storage.management.core.model.Volume.VOLUME_TYPE;
import com.gluster.storage.management.core.utils.NumberUtil;
import com.gluster.storage.management.gui.IImageKeys;
+import com.gluster.storage.management.gui.toolbar.GlusterToolbarManager;
import com.gluster.storage.management.gui.utils.GUIHelper;
public class VolumeSummaryView extends ViewPart {
@@ -29,6 +35,7 @@ public class VolumeSummaryView extends ViewPart {
private final FormToolkit toolkit = new FormToolkit(Display.getCurrent());
private ScrolledForm form;
private Volume volume;
+ private CLabel lblStatusValue;
@Override
public void createPartControl(Composite parent) {
@@ -37,6 +44,20 @@ public class VolumeSummaryView extends ViewPart {
}
createSections(parent);
+
+ // Refresh the navigation tree whenever there is a change to the data model
+ GlusterDataModelManager.getInstance().addClusterListener(new DefaultClusterListener() {
+ /* (non-Javadoc)
+ * @see com.gluster.storage.management.core.model.DefaultClusterListener#volumeChanged(com.gluster.storage.management.core.model.Volume, com.gluster.storage.management.core.model.Event)
+ */
+ @Override
+ public void volumeChanged(Volume volume, Event event) {
+ if(event.getEventType() == EVENT_TYPE.VOLUME_STATUS_CHANGED) {
+ updateVolumeStatusLabel();
+ new GlusterToolbarManager(getSite().getWorkbenchWindow()).updateToolbar(volume);
+ }
+ }
+ });
}
private void createSections(Composite parent) {
@@ -192,12 +213,16 @@ public class VolumeSummaryView extends ViewPart {
private void createStatusField(Composite section) {
toolkit.createLabel(section, "Status: ", SWT.NONE);
- CLabel lblStatusValue = new CLabel(section, SWT.NONE);
+ lblStatusValue = new CLabel(section, SWT.NONE);
+ updateVolumeStatusLabel();
+
+ toolkit.createLabel(section, "", SWT.NONE); // dummy
+ }
+
+ private void updateVolumeStatusLabel() {
lblStatusValue.setText(volume.getStatusStr());
lblStatusValue.setImage(volume.getStatus() == Volume.VOLUME_STATUS.ONLINE ? guiHelper
.getImage(IImageKeys.STATUS_ONLINE) : guiHelper.getImage(IImageKeys.STATUS_OFFLINE));
-
- toolkit.createLabel(section, "", SWT.NONE); // dummy
}
private void createTransportTypeField(Composite section) {