summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDhandapani <dhandapani@gluster.com>2011-05-13 14:26:11 +0530
committerDhandapani <dhandapani@gluster.com>2011-05-13 14:26:11 +0530
commitf99eb9e6db62992e29369d0cc57b6ff55bc0b395 (patch)
tree1d4cf0198ef5c795ecdb78cc64cc736ea3808d21
parent4829b2a9aff7537dc6b2b6bea76b70c20cde53b0 (diff)
parent0c598a2af4f5b930fcdb4acf364e7640d7802315 (diff)
Merge branch 'remove-server'
-rw-r--r--src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/AbstractClient.java8
-rw-r--r--src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterServersClient.java5
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveServerAction.java62
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/GlusterServersResource.java10
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/GlusterUtil.java5
5 files changed, 81 insertions, 9 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 a077c721..4f95ea5b 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
@@ -216,12 +216,12 @@ public abstract class AbstractClient {
.post(responseClass, requestObject);
}
- @SuppressWarnings("unchecked")
- protected Object deleteResource(Class responseClass, Form form) {
- return resource.header(HTTP_HEADER_AUTH, authHeader).delete(responseClass);
+ @SuppressWarnings({ "unchecked", "rawtypes" })
+ protected Object deleteResource(Class responseClass, String resourceName) {
+ return resource.queryParam("serverName", resourceName).header(HTTP_HEADER_AUTH, authHeader).delete(responseClass);
}
- @SuppressWarnings("unchecked")
+ @SuppressWarnings({ "unchecked", "rawtypes" })
protected Object deleteSubResource(String subResourceName, Class responseClass,
MultivaluedMap<String, String> queryParams) {
return resource.path(subResourceName).queryParams(queryParams).header(HTTP_HEADER_AUTH, authHeader)
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 8ae64016..f3acb2f7 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
@@ -23,6 +23,7 @@ import java.util.List;
import com.gluster.storage.management.core.model.GlusterServer;
import com.gluster.storage.management.core.model.Response;
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;
@@ -60,6 +61,10 @@ public class GlusterServersClient extends AbstractClient {
form.add("serverName", discoveredServer.getName());
return (GlusterServerResponse)postRequest(GlusterServerResponse.class, form);
}
+
+ public Status removeServer(String serverName) {
+ return (Status) deleteResource(Status.class, serverName);
+ }
public static void main(String[] args) {
UsersClient usersClient = new UsersClient();
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;
+ }
+ }
}
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 c1f0435c..4f2850ee 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
@@ -20,12 +20,14 @@ package com.gluster.storage.management.server.resources;
import java.util.List;
+import javax.ws.rs.DELETE;
import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import org.springframework.stereotype.Component;
@@ -34,10 +36,8 @@ 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.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.ProcessResult;
import com.gluster.storage.management.server.utils.GlusterUtil;
import com.sun.jersey.spi.resource.Singleton;
@@ -101,6 +101,12 @@ public class GlusterServersResource extends AbstractServersResource {
}
return new GlusterServerResponse(Status.STATUS_SUCCESS, getGlusterServer(serverName));
}
+
+ @DELETE
+ @Produces(MediaType.TEXT_XML)
+ public Status removeServer(@QueryParam("serverName") String serverName) {
+ return glusterUtil.removeServer(serverName);
+ }
public static void main(String[] args) {
GlusterServersResource glusterServersResource = new GlusterServersResource();
diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/GlusterUtil.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/GlusterUtil.java
index 14117aff..7299a135 100644
--- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/GlusterUtil.java
+++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/GlusterUtil.java
@@ -486,6 +486,9 @@ public class GlusterUtil {
return new Status(processUtil.executeCommand(command));
}
+ public Status removeServer(String serverName) {
+ return new Status(processUtil.executeCommand("gluster", "peer", "detach", serverName));
+ }
public static void main(String args[]) {
// List<String> names = new GlusterUtil().getGlusterServerNames();
@@ -496,6 +499,4 @@ public class GlusterUtil {
Status status = new GlusterUtil().addBricks("Volume3", disks);
System.out.println(status);
}
-
-
}