diff options
| author | Shireesh Anjal <shireesh@gluster.com> | 2011-02-10 14:38:06 +0530 |
|---|---|---|
| committer | Shireesh Anjal <shireesh@gluster.com> | 2011-02-10 14:38:06 +0530 |
| commit | c3a08bc9a7587f98b096ae7b83f0fd04f6945919 (patch) | |
| tree | 6ec32b3ecd99e324548a71ead933f3ce2bae2e91 | |
| parent | 9438d94101e33638affc463953bd22d18ca0c6d6 (diff) | |
auto-discovery
9 files changed, 52 insertions, 63 deletions
diff --git a/com.gluster.storage.management.client/src/com/gluster/storage/management/client/ServerResource.java b/com.gluster.storage.management.client/src/com/gluster/storage/management/client/ServerResource.java deleted file mode 100644 index f7a37911..00000000 --- a/com.gluster.storage.management.client/src/com/gluster/storage/management/client/ServerResource.java +++ /dev/null @@ -1,51 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011 Gluster, Inc. <http://www.gluster.com> - * This file is part of Gluster Management Console. - * - * Gluster Management Console is free software; you can redistribute it and/or - * modify it under the terms of the GNU Affero General Public License as published - * by the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * Gluster Management Console is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License - * for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see - * <http://www.gnu.org/licenses/>. - *******************************************************************************/ -package com.gluster.storage.management.client;
-
-import java.net.URI;
-import java.util.List;
-
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.UriBuilder;
-
-import com.gluster.storage.management.core.model.ServerListResponse;
-import com.gluster.storage.management.core.model.Server;
-import com.sun.jersey.api.client.Client;
-import com.sun.jersey.api.client.WebResource;
-import com.sun.jersey.api.client.config.DefaultClientConfig;
-
-public class ServerResource {
- private final URI BASE_URI = UriBuilder.fromUri("http://localhost:8080/glustermc").build();
-
- public List<Server> discoverServers() {
- WebResource service = Client.create(new DefaultClientConfig()).resource(BASE_URI);
-
- @SuppressWarnings("unchecked")
- ServerListResponse<Server> response = service.path("resources").path("server").path("discover")
- .accept(MediaType.TEXT_XML).get(ServerListResponse.class);
-
- return response.getData();
- }
-
- public static void main(String[] args) {
- ServerResource ServerResource = new ServerResource();
- List<Server> discoveredServers = ServerResource.discoverServers();
- System.out.println(discoveredServers.size());
- }
-}
diff --git a/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/ServerListResponse.java b/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/ServerListResponse.java index d8a8666d..82f31b77 100644 --- a/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/ServerListResponse.java +++ b/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/ServerListResponse.java @@ -38,7 +38,7 @@ public class ServerListResponse<T extends Server> extends AbstractServerResponse public List<T> getData() {
return getServers();
}
-
+
public void setServers(List<T> data) {
this.servers = data;
}
diff --git a/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/ServerResponse.java b/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/ServerResponse.java index 1c443c46..a0d653fa 100644 --- a/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/ServerResponse.java +++ b/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/ServerResponse.java @@ -23,7 +23,7 @@ package com.gluster.storage.management.core.model; * Server will result in a response that must be an instance of a class
* implementing this interface.
*/
-public interface ServerResponse {
+public interface ServerResponse { /**
* @return Status of request processing
*/
diff --git a/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Status.java b/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Status.java index 753bdeae..64339b4a 100644 --- a/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Status.java +++ b/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Status.java @@ -23,21 +23,29 @@ import javax.xml.bind.annotation.XmlRootElement; import com.gluster.storage.management.core.utils.ProcessResult;
@XmlRootElement(name="status")
-public class Status {
+public class Status { + public static final int STATUS_CODE_SUCCESS = 0; + public static final int STATUS_CODE_FAILURE = 1; + public static final Status STATUS_SUCCESS = new Status(STATUS_CODE_SUCCESS, "Success"); + public static final Status STATUS_FAILURE = new Status(STATUS_CODE_FAILURE, "Failure"); + + //public static final Status +
@XmlElement(name="code", type=Integer.class)
private Integer code;
private String message;
- public Status() {
- }
-
+ public Status() { + } + public boolean isSuccess() {
- return code == 0;
+ return code == STATUS_CODE_SUCCESS;
}
- public Status(Integer executionStatus, String xmlData) {
- this.code = executionStatus;
+ public Status(Integer code, String message) {
+ this.code = code; + this.message = message;
}
public Status(ProcessResult result) {
diff --git a/com.gluster.storage.management.server/.classpath b/com.gluster.storage.management.server/.classpath index c96b5783..eb7e1019 100644 --- a/com.gluster.storage.management.server/.classpath +++ b/com.gluster.storage.management.server/.classpath @@ -14,5 +14,6 @@ <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/> <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/> <classpathentry combineaccessrules="false" kind="src" path="/com.gluster.storage.management.core"/> + <classpathentry combineaccessrules="false" kind="src" path="/com.gluster.storage.management.client"/> <classpathentry kind="output" path="WebContent/WEB-INF/classes"/> </classpath> diff --git a/com.gluster.storage.management.server/WebContent/WEB-INF/lib/com.gluster.storage.management.core_1.0.0.jar b/com.gluster.storage.management.server/WebContent/WEB-INF/lib/com.gluster.storage.management.core_1.0.0.jar Binary files differdeleted file mode 100644 index 2f689843..00000000 --- a/com.gluster.storage.management.server/WebContent/WEB-INF/lib/com.gluster.storage.management.core_1.0.0.jar +++ /dev/null diff --git a/com.gluster.storage.management.server/src/applicationContext.xml b/com.gluster.storage.management.server/src/applicationContext.xml index 90566c7f..a6d21e6d 100644 --- a/com.gluster.storage.management.server/src/applicationContext.xml +++ b/com.gluster.storage.management.server/src/applicationContext.xml @@ -17,6 +17,6 @@ </task:scheduled-tasks> <bean id="environment" class="java.lang.String"> - <constructor-arg value="aws"/> + <constructor-arg value="vmware"/> </bean> </beans>
\ No newline at end of file diff --git a/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/ServerResource.java b/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/ServerResource.java index 8fb85757..97b874e2 100644 --- a/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/ServerResource.java +++ b/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/ServerResource.java @@ -26,6 +26,9 @@ import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType;
import com.gluster.storage.management.core.utils.FileUtil;
+import com.gluster.storage.management.core.utils.MD5Crypt;
+import com.gluster.storage.management.core.utils.ProcessResult;
+import com.gluster.storage.management.core.utils.ProcessUtil;
@Path("/server")
public class ServerResource {
@@ -50,4 +53,20 @@ public class ServerResource { public String discoveredServers() {
return GetDiscoveredServers();
}
+
+ private String GetDetails() {
+ ProcessResult result = new ProcessUtil().executeCommand("get-server-details.py");
+ if (!result.isSuccess()) {
+ //TODO:Generate error message and return
+ }
+ return result.getOutput();
+ }
+
+ @Path("/details")
+ @GET
+ @Produces(MediaType.TEXT_XML)
+ public String serverDetails() {
+ return GetDetails();
+ }
+
}
diff --git a/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/ServerDiscoveryTask.java b/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/ServerDiscoveryTask.java index 6bc25e81..05337405 100644 --- a/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/ServerDiscoveryTask.java +++ b/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/ServerDiscoveryTask.java @@ -20,9 +20,14 @@ */ package com.gluster.storage.management.server.tasks; +import java.util.ArrayList; +import java.util.List; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import com.gluster.storage.management.server.resources.DiscoveredServersResource; + /** * Task for auto-discovery of servers eligible to be added to the Gluster cluster. This task runs periodically and keeps * the discovered server list at a common place. The server resource can then pick it and send to client whenever @@ -35,6 +40,9 @@ public class ServerDiscoveryTask { private static final String ENV_PHYCAL = "physical"; @Autowired + private DiscoveredServersResource discoveredServersResource; + + @Autowired private String environment; public void discoverServers() { @@ -44,8 +52,12 @@ public class ServerDiscoveryTask { * TODO: Flow should be as follows <br> * 1) Get the discovery policy specific for the environment <br> * 2) Execute discovery to get list of auto-discovered server <br> - * 3) Probe each one of them to fetch server details <br> - * 4) Store the details in a common place which can be read by the server resource <br> + * 3) Set the discovered servers list in the discovered servers resource <br> */ + + List<String> discoveredServers = new ArrayList<String>(); + discoveredServers.add("yserver1"); + + discoveredServersResource.setDiscoveredServerNames(discoveredServers); } }
\ No newline at end of file |
