diff options
| author | Shireesh Anjal <shireesh@gluster.com> | 2011-06-01 21:01:28 +0530 |
|---|---|---|
| committer | Shireesh Anjal <shireesh@gluster.com> | 2011-06-03 17:09:42 +0530 |
| commit | a177b10b2b8e3e6a2371524909145fd4ac49cae9 (patch) | |
| tree | 915accbe5c8f5ae72a20e0977eff22103ab8ea5f /src | |
| parent | 5b1f9c2590624da39ae22cc5e4d08504b4d25df1 (diff) | |
Design changes - introducing cluster-server mapping on gateway
Diffstat (limited to 'src')
2 files changed, 29 insertions, 8 deletions
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 8afc23a1..3d9a5b12 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 @@ -28,7 +28,6 @@ import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.gluster.storage.management.core.constants.CoreConstants; @@ -38,11 +37,12 @@ import com.gluster.storage.management.core.model.Status; 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 static com.gluster.storage.management.core.constants.RESTConstants.RESOURCE_PATH_DISCOVERED_SERVERS; import com.sun.jersey.spi.resource.Singleton; @Component @Singleton -@Path("/discoveredservers") +@Path(RESOURCE_PATH_DISCOVERED_SERVERS) public class DiscoveredServersResource extends AbstractServersResource { private List<String> discoveredServerNames = new ArrayList<String>(); @@ -50,6 +50,20 @@ public class DiscoveredServersResource extends AbstractServersResource { return discoveredServerNames; } + public void setDiscoveredServerNames(List<String> discoveredServerNames) { + synchronized (discoveredServerNames) { + this.discoveredServerNames = discoveredServerNames; + } + } + + public void removeDiscoveredServer(String serverName) { + discoveredServerNames.remove(serverName); + } + + public void addDiscoveredServer(String serverName) { + discoveredServerNames.add(serverName); + } + @GET @Produces(MediaType.TEXT_XML) @SuppressWarnings("rawtypes") @@ -86,12 +100,6 @@ public class DiscoveredServersResource extends AbstractServersResource { return new ServerListResponse(status, discoveredServers); } - public void setDiscoveredServerNames(List<String> discoveredServerNames) { - synchronized (discoveredServerNames) { - this.discoveredServerNames = discoveredServerNames; - } - } - @Path("/{serverName}") @GET @Produces(MediaType.TEXT_XML) 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 b0b0c22e..608783a1 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 @@ -54,6 +54,7 @@ import com.gluster.storage.management.server.data.PersistenceDao; import com.gluster.storage.management.server.data.ServerInfo; import com.gluster.storage.management.server.utils.GlusterUtil; import com.gluster.storage.management.server.utils.SshUtil; +import com.sun.jersey.api.core.InjectParam; import com.sun.jersey.spi.resource.Singleton; @Component @@ -64,6 +65,9 @@ public class GlusterServersResource extends AbstractServersResource { public static final String HOSTNAMETAG = "hostname:"; private LRUCache<String, GlusterServer> clusterServerCache = new LRUCache<String, GlusterServer>(3); + @InjectParam + private DiscoveredServersResource discoveredServersResource; + @Autowired private PersistenceDao<ClusterInfo> clusterDao; @@ -250,10 +254,15 @@ public class GlusterServersResource extends AbstractServersResource { } try { + // add the cluster-server mapping addServerToCluster(clusterName, serverName); } catch (Exception e) { return new GlusterServerResponse(new Status(Status.STATUS_CODE_PART_SUCCESS, e.getMessage()), null); } + + // since the server is added to a cluster, it should not more be considered as a + // discovered server available to other clusters + discoveredServersResource.removeDiscoveredServer(serverName); // fetch server details GlusterServerResponse serverResponse = getGlusterServer(clusterName, serverName); @@ -375,6 +384,10 @@ public class GlusterServersResource extends AbstractServersResource { return new Status(Status.STATUS_CODE_PART_SUCCESS, e.getMessage()); } + // since the server is removed from the cluster, it is now available to be added to other clusters. + // Hence add it back to the discovered servers list. + discoveredServersResource.addDiscoveredServer(serverName); + return status; } |
