summaryrefslogtreecommitdiffstats
path: root/src/com.gluster.storage.management.gui
diff options
context:
space:
mode:
authorDhandapani <dhandapani@gluster.com>2011-05-13 14:20:20 +0530
committerDhandapani <dhandapani@gluster.com>2011-05-13 14:20:20 +0530
commit0c598a2af4f5b930fcdb4acf364e7640d7802315 (patch)
tree6e9f0dd24244b3de1cc649df45f5eb091c4d3de4 /src/com.gluster.storage.management.gui
parent182879f6050cf88ab4651d604cab9412fad30436 (diff)
Story #20: Remove Server UI, Client and Resource changes
Diffstat (limited to 'src/com.gluster.storage.management.gui')
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveServerAction.java62
1 files changed, 61 insertions, 1 deletions
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 b7ed0548..a202f18c 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
@@ -18,16 +18,76 @@
*******************************************************************************/
package com.gluster.storage.management.gui.actions;
+import java.util.ArrayList;
+import java.util.List;
+
import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+
+import com.gluster.storage.management.client.GlusterDataModelManager;
+import com.gluster.storage.management.client.GlusterServersClient;
+import com.gluster.storage.management.core.model.Cluster;
+import com.gluster.storage.management.core.model.Server;
+import com.gluster.storage.management.core.model.Status;
+import com.gluster.storage.management.core.model.Volume;
+import com.gluster.storage.management.core.utils.StringUtil;
public class RemoveServerAction extends AbstractActionDelegate {
+
+ private Server server;
+ private GlusterDataModelManager modelManager = GlusterDataModelManager.getInstance();
+
@Override
protected void performAction(IAction action) {
- System.out.println("Running [" + this.getClass().getSimpleName() + "]");
+ final String actionDesc = action.getDescription();
+ boolean confirmed = showConfirmDialog(actionDesc,
+ "Are you sure you want to remove this server [" + server.getName() + "] ?");
+ if (!confirmed) {
+ return;
+ }
+
+ List<String> configuredVolumes = getServerVolumeNames(server.getName());
+
+ if (configuredVolumes.size() > 0) {
+ String volumes = StringUtil.ListToString(configuredVolumes, ", ");
+ showErrorDialog(actionDesc, "Server cannot be removed. The following volumes are configured.\n" + volumes);
+ return;
+ }
+
+ GlusterServersClient client = new GlusterServersClient(modelManager.getSecurityToken());
+ Status status = client.removeServer(server.getName());
+
+ if (status.isSuccess()) {
+ showInfoDialog(actionDesc, "Server removed successfully");
+ } else {
+ showErrorDialog(actionDesc, "Server could not be removed. Error: [" + status + "]");
+ }
+ }
+
+ private List<String> getServerVolumeNames(String serverName) {
+ Cluster cluster = GlusterDataModelManager.getInstance().getModel().getCluster();
+ List<String> volumeNames = new ArrayList<String>();
+ for(Volume volume : cluster.getVolumes()) {
+ for(String brick : volume.getDisks()) {
+ if (serverName.equals(brick.split(":")[0])) {
+ volumeNames.add(volume.getName());
+ break;
+ }
+ }
+ }
+ return volumeNames;
}
@Override
public void dispose() {
System.out.println("Disposing [" + this.getClass().getSimpleName() + "]");
}
+
+ @Override
+ public void selectionChanged(IAction action, ISelection selection) {
+ super.selectionChanged(action, selection);
+ if (selectedEntity instanceof Server) {
+ server = (Server) selectedEntity;
+ }
+ }
}