summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorShireesh Anjal <shireesh@gluster.com>2011-06-01 21:01:28 +0530
committerShireesh Anjal <shireesh@gluster.com>2011-06-03 17:09:42 +0530
commita177b10b2b8e3e6a2371524909145fd4ac49cae9 (patch)
tree915accbe5c8f5ae72a20e0977eff22103ab8ea5f /src
parent5b1f9c2590624da39ae22cc5e4d08504b4d25df1 (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/DiscoveredServersResource.java24
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/GlusterServersResource.java13
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;
}