diff options
| author | Shireesh Anjal <shireesh@gluster.com> | 2011-06-01 21:01:28 +0530 |
|---|---|---|
| committer | Shireesh Anjal <shireesh@gluster.com> | 2011-06-02 19:56:58 +0530 |
| commit | 9f9a2c2850f4b2d1b5ac2ad44750e0b82282e4b2 (patch) | |
| tree | 864bbf245f34cc2ab34846d6ea342088c1e7c416 /src | |
| parent | ec38505c37bd8482ebe7b8d00611629790877cbe (diff) | |
Design changes - introducing cluster-server mapping on gateway
Diffstat (limited to 'src')
| -rw-r--r-- | src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/GlusterServersResource.java | 48 |
1 files changed, 38 insertions, 10 deletions
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 15992608..562b630f 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 @@ -240,26 +240,45 @@ public class GlusterServersResource extends AbstractServersResource { try { addServerToCluster(clusterName, serverName); - } catch (Exception e){ - return new GlusterServerResponse(new Status(Status.STATUS_CODE_PART_SUCCESS, - "Exception while trying to save cluster-server mapping [" + clusterName + "][" + serverName - + "]: [" + e.getMessage() + "]"), serverResponse.getGlusterServer()); + } catch (Exception e) { + return new GlusterServerResponse(new Status(Status.STATUS_CODE_PART_SUCCESS, e.getMessage()), + serverResponse.getGlusterServer()); } return serverResponse; } private void addServerToCluster(String clusterName, String serverName) { - ClusterInfo cluster; EntityTransaction txn = clusterDao.startTransaction(); - // Inside a transaction, we must fetch the ClusterInfo object again. - cluster = getCluster(clusterName); + ClusterInfo cluster = getCluster(clusterName); cluster.addServer(new ServerInfo(serverName)); try { + clusterDao.update(cluster); txn.commit(); } catch (Exception e) { txn.rollback(); - throw new GlusterRuntimeException("Couldn't commit transaction! Error: " + e.getMessage(), e); + throw new GlusterRuntimeException("Couldn't create cluster-server mapping [" + clusterName + "][" + + serverName + "]! Error: " + e.getMessage(), e); + } + } + + private void removeServerFromCluster(String clusterName, String serverName) { + EntityTransaction txn = clusterDao.startTransaction(); + ClusterInfo cluster = getCluster(clusterName); + List<ServerInfo> servers = cluster.getServers(); + for(ServerInfo server : servers) { + if(server.getName().equals(serverName)) { + servers.remove(server); + break; + } + } + try { + clusterDao.update(cluster); + txn.commit(); + } catch(Exception e) { + txn.rollback(); + throw new GlusterRuntimeException("Couldn't unmap server [" + serverName + "] from cluster [" + clusterName + + "]! Error: " + e.getMessage(), e); } } @@ -274,6 +293,7 @@ public class GlusterServersResource extends AbstractServersResource { @DELETE @Produces(MediaType.TEXT_XML) + @Path("{" + PATH_PARAM_SERVER_NAME + "}") public Status removeServer(@PathParam(PATH_PARAM_CLUSTER_NAME) String clusterName, @PathParam(PATH_PARAM_SERVER_NAME) String serverName) { GlusterServer onlineServer = getOnlineServer(clusterName); @@ -291,10 +311,18 @@ public class GlusterServersResource extends AbstractServersResource { return new Status(Status.STATUS_CODE_FAILURE, "No online server found in cluster [" + clusterName + "]"); } - return glusterUtil.removeServer(onlineServer.getName(), serverName); + status = glusterUtil.removeServer(onlineServer.getName(), serverName); + } + + if (status.isSuccess()) { + try { + removeServerFromCluster(clusterName, serverName); + } catch (Exception e) { + return new Status(Status.STATUS_CODE_PART_SUCCESS, e.getMessage()); + } } - // TODO: Remove the server from cluster-server mapping + return status; } private void setGlusterUtil(GlusterUtil glusterUtil) { |
