From f1325467e8b041f28e3ce402312cca8700976caa Mon Sep 17 00:00:00 2001 From: Shireesh Anjal Date: Fri, 1 Apr 2011 19:08:10 +0530 Subject: Modified stop volume action to ask for user confirmation before proceeding with the action. --- .../gui/actions/AbstractActionDelegate.java | 43 ++++++++++++++- .../management/gui/actions/AddServerAction.java | 13 ++--- .../management/gui/actions/CreateVolumeAction.java | 2 +- .../management/gui/actions/DeleteVolumeAction.java | 2 +- .../management/gui/actions/EditVolumeAction.java | 2 +- .../management/gui/actions/MigrateDiskAction.java | 2 +- .../gui/actions/MigrateVolumeAction.java | 2 +- .../management/gui/actions/PreferencesAction.java | 2 +- .../gui/actions/RebalanceVolumeAction.java | 2 +- .../management/gui/actions/RemoveServerAction.java | 5 +- .../management/gui/actions/StartVolumeAction.java | 28 +++------- .../management/gui/actions/StopVolumeAction.java | 61 +++++++++++----------- 12 files changed, 93 insertions(+), 71 deletions(-) (limited to 'src') diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AbstractActionDelegate.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AbstractActionDelegate.java index 4aa387bc..adc98f98 100644 --- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AbstractActionDelegate.java +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AbstractActionDelegate.java @@ -19,9 +19,11 @@ 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.jface.viewers.StructuredSelection; -import org.eclipse.jface.viewers.TreeSelection; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.IWorkbenchWindowActionDelegate; @@ -36,6 +38,20 @@ public abstract class AbstractActionDelegate implements IWorkbenchWindowActionDe protected IWorkbenchWindow window; protected Entity selectedEntity; + @Override + public void run(final IAction action) { + // Real action code must be executed using Display#asyncExec. Otherwise the system can hang when opening new + // dialog boxes on linux platform + Display.getDefault().asyncExec(new Runnable() { + @Override + public void run() { + performAction(action); + } + }); + } + + abstract protected void performAction(IAction action); + @Override public void selectionChanged(IAction action, ISelection selection) { if (selection instanceof StructuredSelection) { @@ -46,7 +62,7 @@ public abstract class AbstractActionDelegate implements IWorkbenchWindowActionDe return; } - if(selectedEntity != null) { + if (selectedEntity != null) { this.selectedEntity = selectedEntity; } } @@ -56,4 +72,27 @@ public abstract class AbstractActionDelegate implements IWorkbenchWindowActionDe public void init(IWorkbenchWindow window) { this.window = window; } + + private Shell getShell() { + if(window == null) { + return Display.getDefault().getActiveShell(); + } + return window.getShell(); + } + + protected void showInfoDialog(final String title, final String message) { + MessageDialog.openInformation(getShell(), title, message); + } + + protected void showWarningDialog(final String title, final String message) { + MessageDialog.openWarning(getShell(), title, message); + } + + protected void showErrorDialog(final String title, final String message) { + MessageDialog.openError(getShell(), title, message); + } + + protected synchronized boolean showConfirmDialog(final String title, final String message) { + return MessageDialog.openQuestion(getShell(), title, message); + } } diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddServerAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddServerAction.java index 7957b6f0..fdb76a86 100644 --- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddServerAction.java +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddServerAction.java @@ -19,9 +19,7 @@ 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.GlusterServersClient; @@ -33,7 +31,8 @@ import com.gluster.storage.management.core.model.Volume; public class AddServerAction extends AbstractActionDelegate { @Override - public void run(IAction action) { + protected void performAction(IAction action) { + final String actionDesc = action.getDescription(); GlusterDataModelManager modelManager = GlusterDataModelManager.getInstance(); GlusterServersClient glusterServersClient = new GlusterServersClient(modelManager.getSecurityToken()); Server server = (Server) selectedEntity; @@ -41,12 +40,10 @@ public class AddServerAction extends AbstractActionDelegate { if (response.getStatus().isSuccess()) { modelManager.removeDiscoveredServer(server); modelManager.addGlusterServer(response.getGlusterServer()); - new MessageDialog(Display.getDefault().getActiveShell(), "Add Server", null, "Server [" + server.getName() - + "] added successfully!", MessageDialog.INFORMATION, new String[] { "OK" }, 0).open(); + showInfoDialog(actionDesc, "Server [" + server.getName() + "] added successfully!"); } else { - new MessageDialog(Display.getDefault().getActiveShell(), "Add Server", null, "Server [" + server.getName() - + " could not be added to cluster! Error: [" + response.getStatus().getMessage() + "]", - MessageDialog.ERROR, new String[] { "OK" }, 0).open(); + showErrorDialog(actionDesc, "Server [" + server.getName() + " could not be added to cluster! Error: [" + + response.getStatus().getMessage() + "]"); } } diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CreateVolumeAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CreateVolumeAction.java index 266db0af..9ec500bc 100644 --- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CreateVolumeAction.java +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CreateVolumeAction.java @@ -29,7 +29,7 @@ import com.gluster.storage.management.gui.dialogs.CreateVolumeWizard; public class CreateVolumeAction extends AbstractActionDelegate { @Override - public void run(IAction action) { + protected void performAction(IAction action) { Display.getDefault().asyncExec(new Runnable() { @Override diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/DeleteVolumeAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/DeleteVolumeAction.java index b4b92c31..82ac1663 100644 --- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/DeleteVolumeAction.java +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/DeleteVolumeAction.java @@ -22,7 +22,7 @@ import org.eclipse.jface.action.IAction; public class DeleteVolumeAction extends AbstractActionDelegate { @Override - public void run(IAction action) { + protected void performAction(IAction action) { System.out.println("Running [" + this.getClass().getSimpleName() + "]"); } diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/EditVolumeAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/EditVolumeAction.java index 6f3fdf24..0f7f14b7 100644 --- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/EditVolumeAction.java +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/EditVolumeAction.java @@ -22,7 +22,7 @@ import org.eclipse.jface.action.IAction; public class EditVolumeAction extends AbstractActionDelegate { @Override - public void run(IAction action) { + protected void performAction(IAction action) { System.out.println("Running [" + this.getClass().getSimpleName() + "]"); } diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/MigrateDiskAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/MigrateDiskAction.java index 75be4e6b..04ee39fb 100644 --- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/MigrateDiskAction.java +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/MigrateDiskAction.java @@ -32,7 +32,7 @@ public class MigrateDiskAction extends AbstractActionDelegate { private Disk disk; @Override - public void run(IAction action) { + protected void performAction(IAction action) { // MigrateDiskDialog dialog = new MigrateDiskDialog(window.getShell(), volume, disk); // dialog.create(); // dialog.open(); diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/MigrateVolumeAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/MigrateVolumeAction.java index 97f1c79b..aea7ea66 100644 --- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/MigrateVolumeAction.java +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/MigrateVolumeAction.java @@ -22,7 +22,7 @@ import org.eclipse.jface.action.IAction; public class MigrateVolumeAction extends AbstractActionDelegate { @Override - public void run(IAction action) { + protected void performAction(IAction action) { System.out.println("Running [" + this.getClass().getSimpleName() + "]"); } diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/PreferencesAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/PreferencesAction.java index f6fd88e4..9da1cbf1 100644 --- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/PreferencesAction.java +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/PreferencesAction.java @@ -29,7 +29,7 @@ public class PreferencesAction extends AbstractActionDelegate { } @Override - public void run(IAction action) { + protected void performAction(IAction action) { ActionFactory.PREFERENCES.create(window).run(); } diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RebalanceVolumeAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RebalanceVolumeAction.java index 65227b0b..5339beb0 100644 --- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RebalanceVolumeAction.java +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RebalanceVolumeAction.java @@ -22,7 +22,7 @@ import org.eclipse.jface.action.IAction; public class RebalanceVolumeAction extends AbstractActionDelegate { @Override - public void run(IAction action) { + protected void performAction(IAction action) { System.out.println("Running [" + this.getClass().getSimpleName() + "]"); } diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveServerAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveServerAction.java index d5d42363..b7ed0548 100644 --- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveServerAction.java +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveServerAction.java @@ -19,13 +19,10 @@ package com.gluster.storage.management.gui.actions; import org.eclipse.jface.action.IAction; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.ui.IWorkbenchWindow; -import org.eclipse.ui.IWorkbenchWindowActionDelegate; public class RemoveServerAction extends AbstractActionDelegate { @Override - public void run(IAction action) { + protected void performAction(IAction action) { System.out.println("Running [" + this.getClass().getSimpleName() + "]"); } diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StartVolumeAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StartVolumeAction.java index cc0fbe94..34080f76 100644 --- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StartVolumeAction.java +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StartVolumeAction.java @@ -19,9 +19,7 @@ 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; @@ -34,7 +32,7 @@ public class StartVolumeAction extends AbstractActionDelegate { private GlusterDataModelManager modelManager = GlusterDataModelManager.getInstance(); @Override - public void run(final IAction action) { + protected void performAction(IAction action) { if (volume.getStatus() == VOLUME_STATUS.ONLINE) { return; // Volume already online. Don't do anything. } @@ -42,23 +40,13 @@ public class StartVolumeAction extends AbstractActionDelegate { VolumesClient client = new VolumesClient(modelManager.getSecurityToken()); final Status status = client.startVolume(volume.getName()); final String actionDesc = action.getDescription(); - final Display display = Display.getDefault(); - display.asyncExec(new Runnable() { - - @Override - public void run() { - if (status.isSuccess()) { - new MessageDialog(display.getActiveShell(), actionDesc, null, "Volume [" - + volume.getName() + "] started successfully!", MessageDialog.INFORMATION, - new String[] { "OK" }, 0).open(); - modelManager.updateVolumeStatus(volume, VOLUME_STATUS.ONLINE); - } else { - new MessageDialog(display.getActiveShell(), actionDesc, null, "Volume [" - + volume.getName() + "] could not be started! Error: [" + status + "]", - MessageDialog.ERROR, new String[] { "OK" }, 0).open(); - } - } - }); + if (status.isSuccess()) { + showInfoDialog(actionDesc, "Volume [" + volume.getName() + "] started successfully!"); + modelManager.updateVolumeStatus(volume, VOLUME_STATUS.ONLINE); + } else { + showErrorDialog(actionDesc, "Volume [" + volume.getName() + "] could not be started! Error: [" + + status + "]"); + } } @Override diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StopVolumeAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StopVolumeAction.java index a89782f9..21ea4339 100644 --- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StopVolumeAction.java +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StopVolumeAction.java @@ -19,9 +19,7 @@ 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; @@ -32,42 +30,45 @@ import com.gluster.storage.management.core.model.Volume.VOLUME_STATUS; public class StopVolumeAction extends AbstractActionDelegate { private Volume volume; private GlusterDataModelManager modelManager = GlusterDataModelManager.getInstance(); - + @Override - public void run(IAction action) { - if(volume.getStatus() == VOLUME_STATUS.OFFLINE) { + protected void performAction(IAction action) { + final String actionDesc = action.getDescription(); + if (volume.getStatus() == VOLUME_STATUS.OFFLINE) { + showWarningDialog(actionDesc, "Volume [" + volume.getName() + "] is already offline!"); return; // Volume already offline. Don't do anything. } - - VolumesClient client = new VolumesClient(modelManager.getSecurityToken()); - final Status status = client.stopVolume(volume.getName()); - final String actionDesc = action.getDescription(); - final Display display = Display.getDefault(); - - display.asyncExec(new Runnable() { - - @Override - public void run() { - if (status.isSuccess()) { - new MessageDialog(Display.getCurrent().getActiveShell(), actionDesc, null, "Volume [" - + volume.getName() + "] stopped successfully!", MessageDialog.INFORMATION, new String[] { "OK" }, 0) - .open(); - modelManager.updateVolumeStatus(volume, VOLUME_STATUS.OFFLINE); - } else { - new MessageDialog(Display.getCurrent().getActiveShell(), actionDesc, null, "Volume [" - + volume.getName() + "] could not be stopped! Error: [" + status + "]", MessageDialog.ERROR, - new String[] { "OK" }, 0).open(); - } - } - }); + + boolean confirmed = showConfirmDialog(actionDesc, + "Are you sure you want to stop the volume [" + volume.getName() + "] ?"); + if (!confirmed) { + return; + } + + final Status status = stopVolume(); + if (status.isSuccess()) { + showInfoDialog(actionDesc, "Volume [" + volume.getName() + "] stopped successfully!"); + modelManager.updateVolumeStatus(volume, VOLUME_STATUS.OFFLINE); + } else { + showErrorDialog(actionDesc, "Volume [" + volume.getName() + "] could not be stopped! Error: [" + status + + "]"); + } + } + + private Status stopVolume() { + return new VolumesClient(modelManager.getSecurityToken()).stopVolume(volume.getName()); } @Override public void dispose() { } - - /* (non-Javadoc) - * @see com.gluster.storage.management.gui.actions.AbstractActionDelegate#selectionChanged(org.eclipse.jface.action.IAction, org.eclipse.jface.viewers.ISelection) + + /* + * (non-Javadoc) + * + * @see + * com.gluster.storage.management.gui.actions.AbstractActionDelegate#selectionChanged(org.eclipse.jface.action.IAction + * , org.eclipse.jface.viewers.ISelection) */ @Override public void selectionChanged(IAction action, ISelection selection) { -- cgit From 5b0bc49b37634aa8923c33b96dd3e4630447874c Mon Sep 17 00:00:00 2001 From: Shireesh Anjal Date: Tue, 5 Apr 2011 14:36:18 +0530 Subject: Story# 15 - Volume Options view. Also moved response classes from model package to a separate package --- .../management/client/DiscoveredServersClient.java | 6 +- .../management/client/GlusterServersClient.java | 6 +- .../management/client/RunningTaskClient.java | 2 +- .../storage/management/client/VolumesClient.java | 43 +++++++------ .../META-INF/MANIFEST.MF | 1 + .../management/core/model/AbstractResponse.java | 32 ---------- .../management/core/model/GenericResponse.java | 56 ---------------- .../core/model/GlusterServerListResponse.java | 71 --------------------- .../core/model/GlusterServerResponse.java | 32 ---------- .../core/model/RunningTaskListResponse.java | 43 ------------- .../management/core/model/ServerListResponse.java | 65 ------------------- .../management/core/model/StringListResponse.java | 45 ------------- .../management/core/response/AbstractResponse.java | 35 ++++++++++ .../management/core/response/GenericResponse.java | 58 +++++++++++++++++ .../core/response/GlusterServerListResponse.java | 74 ++++++++++++++++++++++ .../core/response/GlusterServerResponse.java | 35 ++++++++++ .../core/response/RunningTaskListResponse.java | 46 ++++++++++++++ .../core/response/ServerListResponse.java | 68 ++++++++++++++++++++ .../core/response/StringListResponse.java | 45 +++++++++++++ .../response/VolumeOptionInfoListResponse.java | 68 ++++++++++++++++++++ .../management/gui/actions/AddServerAction.java | 2 +- .../server/constants/VolumeOptionsDefaults.java | 20 +++--- .../resources/DiscoveredServersResource.java | 4 +- .../server/resources/GlusterServersResource.java | 6 +- .../server/resources/RunningTaskResource.java | 2 +- .../server/resources/ServerResource.java | 21 +++--- .../server/resources/VolumesResource.java | 13 ++-- 27 files changed, 496 insertions(+), 403 deletions(-) delete mode 100644 src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/AbstractResponse.java delete mode 100644 src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/GenericResponse.java delete mode 100644 src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/GlusterServerListResponse.java delete mode 100644 src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/GlusterServerResponse.java delete mode 100644 src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/RunningTaskListResponse.java delete mode 100644 src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/ServerListResponse.java delete mode 100644 src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/StringListResponse.java create mode 100644 src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/AbstractResponse.java create mode 100644 src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/GenericResponse.java create mode 100644 src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/GlusterServerListResponse.java create mode 100644 src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/GlusterServerResponse.java create mode 100644 src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/RunningTaskListResponse.java create mode 100644 src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/ServerListResponse.java create mode 100644 src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/StringListResponse.java create mode 100644 src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/VolumeOptionInfoListResponse.java (limited to 'src') diff --git a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/DiscoveredServersClient.java b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/DiscoveredServersClient.java index 0cc18037..84074115 100644 --- a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/DiscoveredServersClient.java +++ b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/DiscoveredServersClient.java @@ -22,11 +22,11 @@ import java.util.List; import javax.ws.rs.core.MultivaluedMap; -import com.gluster.storage.management.core.model.GenericResponse; import com.gluster.storage.management.core.model.Response; import com.gluster.storage.management.core.model.Server; -import com.gluster.storage.management.core.model.ServerListResponse; -import com.gluster.storage.management.core.model.StringListResponse; +import com.gluster.storage.management.core.response.GenericResponse; +import com.gluster.storage.management.core.response.ServerListResponse; +import com.gluster.storage.management.core.response.StringListResponse; import com.sun.jersey.core.util.MultivaluedMapImpl; public class DiscoveredServersClient extends AbstractClient { diff --git a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterServersClient.java b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterServersClient.java index 25fe3bbc..dfee988c 100644 --- a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterServersClient.java +++ b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterServersClient.java @@ -20,12 +20,12 @@ package com.gluster.storage.management.client; import java.util.List; -import com.gluster.storage.management.core.model.GenericResponse; import com.gluster.storage.management.core.model.GlusterServer; -import com.gluster.storage.management.core.model.GlusterServerListResponse; -import com.gluster.storage.management.core.model.GlusterServerResponse; import com.gluster.storage.management.core.model.Response; import com.gluster.storage.management.core.model.Server; +import com.gluster.storage.management.core.response.GenericResponse; +import com.gluster.storage.management.core.response.GlusterServerListResponse; +import com.gluster.storage.management.core.response.GlusterServerResponse; import com.sun.jersey.api.representation.Form; public class GlusterServersClient extends AbstractClient { diff --git a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/RunningTaskClient.java b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/RunningTaskClient.java index 9309cdc8..03d9fd71 100644 --- a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/RunningTaskClient.java +++ b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/RunningTaskClient.java @@ -5,7 +5,7 @@ import java.util.List; import com.gluster.storage.management.core.constants.RESTConstants; import com.gluster.storage.management.core.model.Response; import com.gluster.storage.management.core.model.RunningTask; -import com.gluster.storage.management.core.model.RunningTaskListResponse; +import com.gluster.storage.management.core.response.RunningTaskListResponse; public class RunningTaskClient extends AbstractClient { private static final String RESOURCE_NAME = RESTConstants.RESOURCE_PATH_RUNNING_TASKS; diff --git a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/VolumesClient.java b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/VolumesClient.java index 03e83a31..946c1fa3 100644 --- a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/VolumesClient.java +++ b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/VolumesClient.java @@ -20,15 +20,14 @@ */ package com.gluster.storage.management.client; -import java.util.ArrayList; import java.util.List; import com.gluster.storage.management.core.constants.RESTConstants; -import com.gluster.storage.management.core.model.Disk; -import com.gluster.storage.management.core.model.Disk.DISK_STATUS; -import com.gluster.storage.management.core.model.GenericResponse; import com.gluster.storage.management.core.model.Status; import com.gluster.storage.management.core.model.Volume; +import com.gluster.storage.management.core.model.VolumeOptionInfo; +import com.gluster.storage.management.core.response.GenericResponse; +import com.gluster.storage.management.core.response.VolumeOptionInfoListResponse; import com.sun.jersey.api.representation.Form; public class VolumesClient extends AbstractClient { @@ -67,24 +66,32 @@ public class VolumesClient extends AbstractClient { return performOperation(volumeName, RESTConstants.FORM_PARAM_VALUE_STOP); } + public List getVolumeOptionsDefaults() { + VolumeOptionInfoListResponse response = (VolumeOptionInfoListResponse) fetchSubResource( + RESTConstants.SUBRESOURCE_DEFAULT_OPTIONS, VolumeOptionInfoListResponse.class); + return response.getOptions(); + } public static void main(String[] args) { UsersClient usersClient = new UsersClient(); if (usersClient.authenticate("gluster", "gluster")) { - VolumesClient VC = new VolumesClient(usersClient.getSecurityToken()); - List disks = new ArrayList(); - Disk diskElement = new Disk(); - diskElement.setName("sda1"); - diskElement.setStatus(DISK_STATUS.READY); - disks.add(diskElement); - diskElement.setName("sda2"); - diskElement.setStatus(DISK_STATUS.READY); - disks.add(diskElement); - - Volume vol = new Volume("vol1", null, Volume.VOLUME_TYPE.PLAIN_DISTRIBUTE, Volume.TRANSPORT_TYPE.ETHERNET, - Volume.VOLUME_STATUS.ONLINE); - // vol.setDisks(disks); - System.out.println(VC.createVolume(vol)); + VolumesClient client = new VolumesClient(usersClient.getSecurityToken()); +// List disks = new ArrayList(); +// Disk diskElement = new Disk(); +// diskElement.setName("sda1"); +// diskElement.setStatus(DISK_STATUS.READY); +// disks.add(diskElement); +// diskElement.setName("sda2"); +// diskElement.setStatus(DISK_STATUS.READY); +// disks.add(diskElement); +// +// Volume vol = new Volume("vol1", null, Volume.VOLUME_TYPE.PLAIN_DISTRIBUTE, Volume.TRANSPORT_TYPE.ETHERNET, +// Volume.VOLUME_STATUS.ONLINE); +// // vol.setDisks(disks); +// System.out.println(client.createVolume(vol)); + for (VolumeOptionInfo option : client.getVolumeOptionsDefaults()) { + System.out.println(option.getName() + "-" + option.getDescription() + "-" + option.getDefaultValue()); + } } } } diff --git a/src/com.gluster.storage.management.core/META-INF/MANIFEST.MF b/src/com.gluster.storage.management.core/META-INF/MANIFEST.MF index b5a2a830..a32970c8 100644 --- a/src/com.gluster.storage.management.core/META-INF/MANIFEST.MF +++ b/src/com.gluster.storage.management.core/META-INF/MANIFEST.MF @@ -8,5 +8,6 @@ Bundle-RequiredExecutionEnvironment: JavaSE-1.6 Export-Package: com.gluster.storage.management.core.constants, com.gluster.storage.management.core.exceptions, com.gluster.storage.management.core.model, + com.gluster.storage.management.core.response, com.gluster.storage.management.core.utils Require-Bundle: org.eclipse.core.runtime;bundle-version="3.6.0" diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/AbstractResponse.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/AbstractResponse.java deleted file mode 100644 index be552bdc..00000000 --- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/AbstractResponse.java +++ /dev/null @@ -1,32 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011 Gluster, Inc. - * 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 - * . - *******************************************************************************/ -package com.gluster.storage.management.core.model; - -public abstract class AbstractResponse implements Response { - private Status status; - - @Override - public Status getStatus() { - return status; - } - - public void setStatus(Status status) { - this.status = status; - } -} \ No newline at end of file diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/GenericResponse.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/GenericResponse.java deleted file mode 100644 index efeed34b..00000000 --- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/GenericResponse.java +++ /dev/null @@ -1,56 +0,0 @@ -/** - * GenericServerResponse.java - * - * Copyright (c) 2011 Gluster, Inc. - * 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 - * . - */ -package com.gluster.storage.management.core.model; - -import javax.xml.bind.annotation.XmlRootElement; - -@XmlRootElement(name = "response") -public class GenericResponse extends AbstractResponse { - private T data; - private Status status; - - @Override - public Status getStatus() { - return status; - } - - public void setStatus(Status status) { - this.status = status; - } - - public GenericResponse(Status status, T data) { - setStatus(status); - this.data = data; - } - - public GenericResponse() { - } - - @Override - public T getData() { - return data; - } - - public void setData(T data) { - this.data = data; - } - -} diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/GlusterServerListResponse.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/GlusterServerListResponse.java deleted file mode 100644 index 479dcc09..00000000 --- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/GlusterServerListResponse.java +++ /dev/null @@ -1,71 +0,0 @@ -/** - * GlusterServerListResponse.java - * - * Copyright (c) 2011 Gluster, Inc. - * 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 - * . - */ -package com.gluster.storage.management.core.model; - -import java.util.ArrayList; -import java.util.List; - -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlElementWrapper; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlTransient; - -/** - * - */ -@XmlRootElement(name = "response") -public class GlusterServerListResponse extends AbstractResponse { - private List servers = new ArrayList(); - - public GlusterServerListResponse() { - } - - public GlusterServerListResponse(Status status, List servers) { - setStatus(status); - setServers(servers); - } - - @XmlElementWrapper(name = "servers") - @XmlElement(name = "server", type=GlusterServer.class) - public List getServers() { - return servers; - } - - /** - * @param servers - * the servers to set - */ - public void setServers(List servers) { - this.servers = servers; - } - - /* - * (non-Javadoc) - * - * @see com.gluster.storage.management.core.model.Response#getData() - */ - @Override - @XmlTransient - public List getData() { - return getServers(); - } -} - diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/GlusterServerResponse.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/GlusterServerResponse.java deleted file mode 100644 index e00b8288..00000000 --- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/GlusterServerResponse.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.gluster.storage.management.core.model; - -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlTransient; - -@XmlRootElement(name = "response") -public class GlusterServerResponse extends AbstractResponse { - private GlusterServer glusterServer; - - public GlusterServerResponse() { - } - - public GlusterServerResponse(Status status, GlusterServer server) { - setStatus(status); - setGlusterServer(server); - } - - public GlusterServer getGlusterServer() { - return glusterServer; - } - - public void setGlusterServer(GlusterServer glusterServer) { - this.glusterServer = glusterServer; - } - - @XmlTransient - @Override - public GlusterServer getData() { - return getGlusterServer(); - } - -} diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/RunningTaskListResponse.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/RunningTaskListResponse.java deleted file mode 100644 index 79949c90..00000000 --- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/RunningTaskListResponse.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.gluster.storage.management.core.model; - -import java.util.ArrayList; -import java.util.List; - -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlElementWrapper; -import javax.xml.bind.annotation.XmlRootElement; - -@XmlRootElement(name = "response") -public class RunningTaskListResponse extends AbstractResponse { - private List runningTasks = new ArrayList(); - - public RunningTaskListResponse() { - - } - - - public RunningTaskListResponse(Status status, List runningTasks) { - setStatus(status); - setRunningTasks(runningTasks); - } - - @XmlElementWrapper(name = "runningTasks") - @XmlElement(name = "runningTask", type=RunningTask.class) - public List getRunningTasks() { - return runningTasks; - } - - /** - * @param runningTasks - * the runningTasks to set - */ - public void setRunningTasks(List runningTasks) { - this.runningTasks = runningTasks; - } - - @Override - public Object getData() { - return getRunningTasks(); - } - -} diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/ServerListResponse.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/ServerListResponse.java deleted file mode 100644 index 56f33992..00000000 --- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/ServerListResponse.java +++ /dev/null @@ -1,65 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011 Gluster, Inc. - * 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 - * . - *******************************************************************************/ -package com.gluster.storage.management.core.model; - -import java.util.ArrayList; -import java.util.List; - -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlElementWrapper; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlTransient; - -@XmlRootElement(name = "response") -public class ServerListResponse extends AbstractResponse { - private List servers = new ArrayList(); - - public ServerListResponse() { - } - - public ServerListResponse(Status status, List servers) { - setStatus(status); - setServers(servers); - } - - @XmlElementWrapper(name = "servers") - @XmlElement(name = "server", type=Server.class) - public List getServers() { - return servers; - } - - /** - * @param servers - * the servers to set - */ - public void setServers(List servers) { - this.servers = servers; - } - - /* - * (non-Javadoc) - * - * @see com.gluster.storage.management.core.model.Response#getData() - */ - @Override - @XmlTransient - public List getData() { - return getServers(); - } -} diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/StringListResponse.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/StringListResponse.java deleted file mode 100644 index 3304692d..00000000 --- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/StringListResponse.java +++ /dev/null @@ -1,45 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011 Gluster, Inc. - * 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 - * . - *******************************************************************************/ -package com.gluster.storage.management.core.model; - -import java.util.ArrayList; -import java.util.List; - -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlElementWrapper; -import javax.xml.bind.annotation.XmlRootElement; - -@XmlRootElement(name = "response") -public class StringListResponse extends AbstractResponse { - private List data = new ArrayList(); - - public StringListResponse() { - } - - public StringListResponse(List data) { - this.data = data; - } - - @Override - @XmlElementWrapper(name = "list") - @XmlElement(name = "value", type = String.class) - public List getData() { - return data; - } -} \ No newline at end of file diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/AbstractResponse.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/AbstractResponse.java new file mode 100644 index 00000000..9a6a48f5 --- /dev/null +++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/AbstractResponse.java @@ -0,0 +1,35 @@ +/******************************************************************************* + * Copyright (c) 2011 Gluster, Inc. + * 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 + * . + *******************************************************************************/ +package com.gluster.storage.management.core.response; + +import com.gluster.storage.management.core.model.Response; +import com.gluster.storage.management.core.model.Status; + +public abstract class AbstractResponse implements Response { + private Status status; + + @Override + public Status getStatus() { + return status; + } + + public void setStatus(Status status) { + this.status = status; + } +} \ No newline at end of file diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/GenericResponse.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/GenericResponse.java new file mode 100644 index 00000000..6c8e87b5 --- /dev/null +++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/GenericResponse.java @@ -0,0 +1,58 @@ +/** + * GenericServerResponse.java + * + * Copyright (c) 2011 Gluster, Inc. + * 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 + * . + */ +package com.gluster.storage.management.core.response; + +import javax.xml.bind.annotation.XmlRootElement; + +import com.gluster.storage.management.core.model.Status; + +@XmlRootElement(name = "response") +public class GenericResponse extends AbstractResponse { + private T data; + private Status status; + + @Override + public Status getStatus() { + return status; + } + + public void setStatus(Status status) { + this.status = status; + } + + public GenericResponse(Status status, T data) { + setStatus(status); + this.data = data; + } + + public GenericResponse() { + } + + @Override + public T getData() { + return data; + } + + public void setData(T data) { + this.data = data; + } + +} diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/GlusterServerListResponse.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/GlusterServerListResponse.java new file mode 100644 index 00000000..4c291a33 --- /dev/null +++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/GlusterServerListResponse.java @@ -0,0 +1,74 @@ +/** + * GlusterServerListResponse.java + * + * Copyright (c) 2011 Gluster, Inc. + * 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 + * . + */ +package com.gluster.storage.management.core.response; + +import java.util.ArrayList; +import java.util.List; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlElementWrapper; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlTransient; + +import com.gluster.storage.management.core.model.GlusterServer; +import com.gluster.storage.management.core.model.Status; + +/** + * + */ +@XmlRootElement(name = "response") +public class GlusterServerListResponse extends AbstractResponse { + private List servers = new ArrayList(); + + public GlusterServerListResponse() { + } + + public GlusterServerListResponse(Status status, List servers) { + setStatus(status); + setServers(servers); + } + + @XmlElementWrapper(name = "servers") + @XmlElement(name = "server", type=GlusterServer.class) + public List getServers() { + return servers; + } + + /** + * @param servers + * the servers to set + */ + public void setServers(List servers) { + this.servers = servers; + } + + /* + * (non-Javadoc) + * + * @see com.gluster.storage.management.core.model.Response#getData() + */ + @Override + @XmlTransient + public List getData() { + return getServers(); + } +} + diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/GlusterServerResponse.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/GlusterServerResponse.java new file mode 100644 index 00000000..7af9b240 --- /dev/null +++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/GlusterServerResponse.java @@ -0,0 +1,35 @@ +package com.gluster.storage.management.core.response; + +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlTransient; + +import com.gluster.storage.management.core.model.GlusterServer; +import com.gluster.storage.management.core.model.Status; + +@XmlRootElement(name = "response") +public class GlusterServerResponse extends AbstractResponse { + private GlusterServer glusterServer; + + public GlusterServerResponse() { + } + + public GlusterServerResponse(Status status, GlusterServer server) { + setStatus(status); + setGlusterServer(server); + } + + public GlusterServer getGlusterServer() { + return glusterServer; + } + + public void setGlusterServer(GlusterServer glusterServer) { + this.glusterServer = glusterServer; + } + + @XmlTransient + @Override + public GlusterServer getData() { + return getGlusterServer(); + } + +} diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/RunningTaskListResponse.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/RunningTaskListResponse.java new file mode 100644 index 00000000..73dc074a --- /dev/null +++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/RunningTaskListResponse.java @@ -0,0 +1,46 @@ +package com.gluster.storage.management.core.response; + +import java.util.ArrayList; +import java.util.List; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlElementWrapper; +import javax.xml.bind.annotation.XmlRootElement; + +import com.gluster.storage.management.core.model.RunningTask; +import com.gluster.storage.management.core.model.Status; + +@XmlRootElement(name = "response") +public class RunningTaskListResponse extends AbstractResponse { + private List runningTasks = new ArrayList(); + + public RunningTaskListResponse() { + + } + + + public RunningTaskListResponse(Status status, List runningTasks) { + setStatus(status); + setRunningTasks(runningTasks); + } + + @XmlElementWrapper(name = "runningTasks") + @XmlElement(name = "runningTask", type=RunningTask.class) + public List getRunningTasks() { + return runningTasks; + } + + /** + * @param runningTasks + * the runningTasks to set + */ + public void setRunningTasks(List runningTasks) { + this.runningTasks = runningTasks; + } + + @Override + public Object getData() { + return getRunningTasks(); + } + +} diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/ServerListResponse.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/ServerListResponse.java new file mode 100644 index 00000000..16059b15 --- /dev/null +++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/ServerListResponse.java @@ -0,0 +1,68 @@ +/******************************************************************************* + * Copyright (c) 2011 Gluster, Inc. + * 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 + * . + *******************************************************************************/ +package com.gluster.storage.management.core.response; + +import java.util.ArrayList; +import java.util.List; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlElementWrapper; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlTransient; + +import com.gluster.storage.management.core.model.Server; +import com.gluster.storage.management.core.model.Status; + +@XmlRootElement(name = "response") +public class ServerListResponse extends AbstractResponse { + private List servers = new ArrayList(); + + public ServerListResponse() { + } + + public ServerListResponse(Status status, List servers) { + setStatus(status); + setServers(servers); + } + + @XmlElementWrapper(name = "servers") + @XmlElement(name = "server", type=Server.class) + public List getServers() { + return servers; + } + + /** + * @param servers + * the servers to set + */ + public void setServers(List servers) { + this.servers = servers; + } + + /* + * (non-Javadoc) + * + * @see com.gluster.storage.management.core.model.Response#getData() + */ + @Override + @XmlTransient + public List getData() { + return getServers(); + } +} diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/StringListResponse.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/StringListResponse.java new file mode 100644 index 00000000..f94884b9 --- /dev/null +++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/StringListResponse.java @@ -0,0 +1,45 @@ +/******************************************************************************* + * Copyright (c) 2011 Gluster, Inc. + * 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 + * . + *******************************************************************************/ +package com.gluster.storage.management.core.response; + +import java.util.ArrayList; +import java.util.List; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlElementWrapper; +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement(name = "response") +public class StringListResponse extends AbstractResponse { + private List data = new ArrayList(); + + public StringListResponse() { + } + + public StringListResponse(List data) { + this.data = data; + } + + @Override + @XmlElementWrapper(name = "list") + @XmlElement(name = "value", type = String.class) + public List getData() { + return data; + } +} \ No newline at end of file diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/VolumeOptionInfoListResponse.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/VolumeOptionInfoListResponse.java new file mode 100644 index 00000000..629ccbee --- /dev/null +++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/VolumeOptionInfoListResponse.java @@ -0,0 +1,68 @@ +/******************************************************************************* + * Copyright (c) 2011 Gluster, Inc. + * 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 + * . + *******************************************************************************/ +package com.gluster.storage.management.core.response; + +import java.util.ArrayList; +import java.util.List; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlElementWrapper; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlTransient; + +import com.gluster.storage.management.core.model.Status; +import com.gluster.storage.management.core.model.VolumeOptionInfo; + +@XmlRootElement(name = "response") +public class VolumeOptionInfoListResponse extends AbstractResponse { + private List options = new ArrayList(); + + public VolumeOptionInfoListResponse() { + } + + public VolumeOptionInfoListResponse(Status status, List options) { + setStatus(status); + setOptions(options); + } + + @XmlElementWrapper(name = "volumeOptionDefaults") + @XmlElement(name = "volumeOption", type=VolumeOptionInfo.class) + public List getOptions() { + return options; + } + + /** + * @param options + * the options to set + */ + public void setOptions(List options) { + this.options = options; + } + + /* + * (non-Javadoc) + * + * @see com.gluster.storage.management.core.model.Response#getData() + */ + @Override + @XmlTransient + public List getData() { + return getOptions(); + } +} diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddServerAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddServerAction.java index fdb76a86..7d76d0ec 100644 --- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddServerAction.java +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddServerAction.java @@ -25,9 +25,9 @@ import com.gluster.storage.management.client.GlusterDataModelManager; import com.gluster.storage.management.client.GlusterServersClient; import com.gluster.storage.management.core.model.Entity; import com.gluster.storage.management.core.model.EntityGroup; -import com.gluster.storage.management.core.model.GlusterServerResponse; import com.gluster.storage.management.core.model.Server; import com.gluster.storage.management.core.model.Volume; +import com.gluster.storage.management.core.response.GlusterServerResponse; public class AddServerAction extends AbstractActionDelegate { @Override diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/constants/VolumeOptionsDefaults.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/constants/VolumeOptionsDefaults.java index 384038f4..4093a4ee 100644 --- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/constants/VolumeOptionsDefaults.java +++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/constants/VolumeOptionsDefaults.java @@ -23,25 +23,23 @@ package com.gluster.storage.management.server.constants; import java.util.ArrayList; import java.util.List; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlElementWrapper; -import javax.xml.bind.annotation.XmlRootElement; +import org.springframework.stereotype.Component; import com.gluster.storage.management.core.constants.CoreConstants; import com.gluster.storage.management.core.model.VolumeOptionInfo; -@XmlRootElement +@Component public class VolumeOptionsDefaults { - @XmlElementWrapper(name = "volumeOptions") - @XmlElement(name = "volumeOption", type = VolumeOptionInfo.class) public List options; - + public VolumeOptionsDefaults() { } - - public VolumeOptionsDefaults getDefaults() { - options = getVolumeOptionsInfo(); - return this; + + /** + * @return list of volume option information objects + */ + public List getDefaults() { + return getVolumeOptionsInfo(); } /** diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/DiscoveredServersResource.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/DiscoveredServersResource.java index 5987857a..c1ddffd1 100644 --- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/DiscoveredServersResource.java +++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/DiscoveredServersResource.java @@ -32,9 +32,9 @@ import org.springframework.stereotype.Component; import com.gluster.storage.management.core.model.Response; import com.gluster.storage.management.core.model.Server; -import com.gluster.storage.management.core.model.ServerListResponse; import com.gluster.storage.management.core.model.Status; -import com.gluster.storage.management.core.model.StringListResponse; +import com.gluster.storage.management.core.response.ServerListResponse; +import com.gluster.storage.management.core.response.StringListResponse; import com.sun.jersey.spi.resource.Singleton; @Component diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/GlusterServersResource.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/GlusterServersResource.java index 6204bf9b..e8adceb7 100644 --- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/GlusterServersResource.java +++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/GlusterServersResource.java @@ -30,13 +30,13 @@ import javax.ws.rs.core.MediaType; import org.springframework.stereotype.Component; -import com.gluster.storage.management.core.model.GenericResponse; import com.gluster.storage.management.core.model.GlusterServer; import com.gluster.storage.management.core.model.GlusterServer.SERVER_STATUS; -import com.gluster.storage.management.core.model.GlusterServerListResponse; -import com.gluster.storage.management.core.model.GlusterServerResponse; import com.gluster.storage.management.core.model.Server; import com.gluster.storage.management.core.model.Status; +import com.gluster.storage.management.core.response.GenericResponse; +import com.gluster.storage.management.core.response.GlusterServerListResponse; +import com.gluster.storage.management.core.response.GlusterServerResponse; import com.gluster.storage.management.core.utils.GlusterUtil; import com.gluster.storage.management.core.utils.ProcessResult; import com.sun.jersey.spi.resource.Singleton; diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/RunningTaskResource.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/RunningTaskResource.java index 2cec4c36..f38989de 100644 --- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/RunningTaskResource.java +++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/RunningTaskResource.java @@ -33,9 +33,9 @@ import org.springframework.stereotype.Component; import static com.gluster.storage.management.core.constants.RESTConstants.RESOURCE_PATH_RUNNING_TASKS; import com.gluster.storage.management.core.model.Response; import com.gluster.storage.management.core.model.RunningTask; -import com.gluster.storage.management.core.model.RunningTaskListResponse; import com.gluster.storage.management.core.model.RunningTaskStatus; import com.gluster.storage.management.core.model.Status; +import com.gluster.storage.management.core.response.RunningTaskListResponse; import com.gluster.storage.management.server.runningtasks.managers.RunningTaskManager; @Component diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/ServerResource.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/ServerResource.java index 97b874e2..08e8c9a6 100644 --- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/ServerResource.java +++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/ServerResource.java @@ -18,17 +18,16 @@ *******************************************************************************/ package com.gluster.storage.management.server.resources; -import java.io.File; - -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.core.MediaType; - -import com.gluster.storage.management.core.utils.FileUtil; -import com.gluster.storage.management.core.utils.MD5Crypt; -import com.gluster.storage.management.core.utils.ProcessResult; -import com.gluster.storage.management.core.utils.ProcessUtil; +import java.io.File; + +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; + +import com.gluster.storage.management.core.utils.FileUtil; +import com.gluster.storage.management.core.utils.ProcessResult; +import com.gluster.storage.management.core.utils.ProcessUtil; @Path("/server") public class ServerResource { 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 dfa5a5cc..7f276dd6 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 @@ -27,8 +27,6 @@ import static com.gluster.storage.management.core.constants.RESTConstants.PATH_P import static com.gluster.storage.management.core.constants.RESTConstants.RESOURCE_PATH_VOLUMES; import static com.gluster.storage.management.core.constants.RESTConstants.SUBRESOURCE_DEFAULT_OPTIONS; -import java.util.Map; - import javax.ws.rs.Consumes; import javax.ws.rs.FormParam; import javax.ws.rs.GET; @@ -39,18 +37,23 @@ import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; -import com.gluster.storage.management.core.model.GenericResponse; import com.gluster.storage.management.core.model.Status; import com.gluster.storage.management.core.model.Volume; +import com.gluster.storage.management.core.response.GenericResponse; +import com.gluster.storage.management.core.response.VolumeOptionInfoListResponse; import com.gluster.storage.management.core.utils.GlusterUtil; import com.gluster.storage.management.core.utils.ProcessResult; import com.gluster.storage.management.server.constants.VolumeOptionsDefaults; +import com.sun.jersey.api.core.InjectParam; import com.sun.jersey.spi.resource.Singleton; @Singleton @Path(RESOURCE_PATH_VOLUMES) public class VolumesResource { private final GlusterUtil glusterUtil = new GlusterUtil(); + + @InjectParam + private VolumeOptionsDefaults volumeOptionsDefaults; @POST @Consumes(MediaType.TEXT_XML) @@ -85,9 +88,9 @@ public class VolumesResource { @GET @Path(SUBRESOURCE_DEFAULT_OPTIONS) @Produces(MediaType.TEXT_XML) - public VolumeOptionsDefaults getDefaultOptions() { + public VolumeOptionInfoListResponse getDefaultOptions() { // TODO: Fetch all volume options with their default values from GlusterFS // whenever such a CLI command is made available in GlusterFS - return new VolumeOptionsDefaults().getDefaults(); + return new VolumeOptionInfoListResponse(Status.STATUS_SUCCESS, volumeOptionsDefaults.getDefaults()); } } \ No newline at end of file -- cgit