diff options
| author | Shireesh Anjal <shireesh@gluster.com> | 2011-02-10 14:39:22 +0530 |
|---|---|---|
| committer | Shireesh Anjal <shireesh@gluster.com> | 2011-02-10 14:39:22 +0530 |
| commit | 0653bd1dfa727cbeb29a5f1723841b532ac13172 (patch) | |
| tree | 8d9daf249ee3d55a3649038bc27a010d77a2ab1c /com.gluster.storage.management.client/src/com/gluster | |
| parent | c3a08bc9a7587f98b096ae7b83f0fd04f6945919 (diff) | |
auto-discovery
Diffstat (limited to 'com.gluster.storage.management.client/src/com/gluster')
2 files changed, 89 insertions, 0 deletions
diff --git a/com.gluster.storage.management.client/src/com/gluster/storage/management/client/DiscoveredServersClient.java b/com.gluster.storage.management.client/src/com/gluster/storage/management/client/DiscoveredServersClient.java new file mode 100644 index 00000000..22801b1b --- /dev/null +++ b/com.gluster.storage.management.client/src/com/gluster/storage/management/client/DiscoveredServersClient.java @@ -0,0 +1,73 @@ +/******************************************************************************* + * 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.client.utils.ClientUtil; +import com.gluster.storage.management.core.model.Server; +import com.gluster.storage.management.core.model.ServerDetailsResponse; +import com.gluster.storage.management.core.model.ServerListResponse; +import com.sun.jersey.api.client.Client; +import com.sun.jersey.api.client.WebResource; +import com.sun.jersey.api.client.WebResource.Builder; +import com.sun.jersey.api.client.config.DefaultClientConfig; + +public class DiscoveredServersClient { + private final URI BASE_URI = UriBuilder.fromUri("http://localhost:8080/glustermc").build(); + + public List<Server> getDiscoveredServers() { + 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(); + } + + private Builder getServerBuilder(String serverName) { + WebResource service = Client.create(new DefaultClientConfig()).resource( + new ClientUtil().getServerBaseURI(serverName)); + + return service.path("resources").path("server").path("details") + .accept(MediaType.TEXT_XML); + } + + public Server getServer(String serverName) { + return getServerBuilder(serverName).get(ServerDetailsResponse.class).getData(); + } + + public String getServerXML(String serverName) { + return getServerBuilder(serverName).get(String.class); + } + + public static void main(String[] args) { + DiscoveredServersClient ServerResource = new DiscoveredServersClient(); + List<Server> discoveredServers = ServerResource.getDiscoveredServers(); + System.out.println(discoveredServers.size()); + + Server serverDetails = ServerResource.getServer("localhost"); + System.out.println(serverDetails.getName()); + } +} diff --git a/com.gluster.storage.management.client/src/com/gluster/storage/management/client/utils/ClientUtil.java b/com.gluster.storage.management.client/src/com/gluster/storage/management/client/utils/ClientUtil.java new file mode 100644 index 00000000..7b7971ef --- /dev/null +++ b/com.gluster.storage.management.client/src/com/gluster/storage/management/client/utils/ClientUtil.java @@ -0,0 +1,16 @@ +package com.gluster.storage.management.client.utils; + +import java.net.URI; + +import javax.ws.rs.core.UriBuilder; + +public class ClientUtil { + private static final String SERVER_PORT = "8080"; + private static final String WEB_CONTEXT = "/glustermc"; + private static final String WEB_RESOURCE_BASE_PATH = "/resources"; + + public URI getServerBaseURI(String serverName) { + return UriBuilder.fromUri("http://" + serverName + ":" + SERVER_PORT + WEB_CONTEXT + WEB_RESOURCE_BASE_PATH) + .build(); + } +} |
