summaryrefslogtreecommitdiffstats
path: root/com.gluster.storage.management.server/src
diff options
context:
space:
mode:
authorShireesh Anjal <shireesh@gluster.com>2011-03-14 21:30:21 +0530
committerShireesh Anjal <shireesh@gluster.com>2011-03-14 21:30:21 +0530
commit685135f3fc4dce58e975d225e19336cde9382e3d (patch)
tree5d733bc0bb9ae74a2d62468f191e0042b86ef86c /com.gluster.storage.management.server/src
parentd20cf95b122f7b08614da2e4e14267e34b8262dd (diff)
Introduced abstract servers resource
Diffstat (limited to 'com.gluster.storage.management.server/src')
-rw-r--r--com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/AbstractServersResource.java79
-rw-r--r--com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/DiscoveredServersResource.java10
-rw-r--r--com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/GlusterServersResource.java58
-rw-r--r--com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/ServerDiscoveryTask.java1
4 files changed, 111 insertions, 37 deletions
diff --git a/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/AbstractServersResource.java b/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/AbstractServersResource.java
new file mode 100644
index 00000000..004160a7
--- /dev/null
+++ b/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/AbstractServersResource.java
@@ -0,0 +1,79 @@
+/**
+ * AbstractServersResource.java
+ *
+ * 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.server.resources;
+
+import com.gluster.storage.management.core.model.Disk;
+import com.gluster.storage.management.core.model.NetworkInterface;
+import com.gluster.storage.management.core.model.Server;
+
+/**
+ * Abstract resource class for servers. Abstracts basic server related functionality like "get server details".
+ */
+public class AbstractServersResource {
+ // TODO: Used for generating dummy ip address. To be removed after implementing actual logic for fetching server
+ // details
+ private static int ipCount = 1;
+
+ /**
+ * Fetch details of the given server. The server name must be populated in the object before calling this method.
+ *
+ * @param server
+ * Server whose details are to be fetched
+ */
+ protected void fetchServerDetails(Server server) {
+ String serverName = server.getName();
+
+ // TODO: Fetch the server details and populate in the object.
+ // For now, populating dummy data.
+ populateDummyData(server);
+ }
+
+ /**
+ * @param server
+ */
+ private void populateDummyData(Server server) {
+ server.setNumOfCPUs((int) (Math.ceil(Math.random() * 8)));
+ server.setCpuUsage(Math.random() * 100);
+ server.setTotalMemory(Math.ceil(Math.random() * 8));
+ server.setMemoryInUse(Math.random() * server.getTotalMemory());
+ addDummyDisks(server);
+ addDummyNetworkInterfaces(server, (int) Math.ceil(Math.random() * 4));
+ }
+
+ private void addDummyNetworkInterfaces(Server server, int interfaceCount) {
+ for (int i = 0; i < interfaceCount; i++) {
+ server.addNetworkInterface(new NetworkInterface("eth" + i, server, "192.168.1." + ipCount++,
+ "255.255.255.0", "192.168.1.1"));
+ }
+ }
+
+ /**
+ * @param server
+ */
+ private void addDummyDisks(Server server) {
+ double dummyDiskSpace = Math.random() * 500;
+ server.addDisk(new Disk(server, "sda", dummyDiskSpace, Math.random() * dummyDiskSpace, Disk.DISK_STATUS.READY));
+ dummyDiskSpace = Math.random() * 500;
+ server.addDisk(new Disk(server, "sdb", dummyDiskSpace, Math.random() * dummyDiskSpace, Disk.DISK_STATUS.READY));
+ dummyDiskSpace = Math.random() * 500;
+ server.addDisk(new Disk(server, "sdc", dummyDiskSpace, Math.random() * dummyDiskSpace, Disk.DISK_STATUS.READY));
+ }
+}
diff --git a/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/DiscoveredServersResource.java b/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/DiscoveredServersResource.java
index 63b5cdff..82d0551d 100644
--- a/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/DiscoveredServersResource.java
+++ b/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/DiscoveredServersResource.java
@@ -40,7 +40,7 @@ import com.sun.jersey.spi.resource.Singleton;
@Component
@Singleton
@Path("/discoveredservers")
-public class DiscoveredServersResource {
+public class DiscoveredServersResource extends AbstractServersResource {
private List<String> discoveredServerNames = new ArrayList<String>();
public List<String> getDiscoveredServerNames() {
@@ -50,7 +50,6 @@ public class DiscoveredServersResource {
@GET
@Produces(MediaType.TEXT_XML)
public Response getDiscoveredServers(@QueryParam("details") Boolean getDetails) {
- System.out.println(getDetails);
if(getDetails != null && getDetails == true) {
return new ServerListResponse<Server>(Status.STATUS_SUCCESS, getDiscoveredServerDetails());
}
@@ -61,9 +60,7 @@ public class DiscoveredServersResource {
List<Server> discoveredServers = new ArrayList<Server>();
List<String> serverNames = getDiscoveredServerNames();
for (String serverName : serverNames) {
- // TODO. Dummy data for now.
- Server server = new Server(serverName, null, 4, 58.3d, 4d, 2.87d);
- discoveredServers.add(server);
+ discoveredServers.add(getDiscoveredServer(serverName));
}
return discoveredServers;
}
@@ -78,7 +75,8 @@ public class DiscoveredServersResource {
@GET
@Produces(MediaType.TEXT_XML)
public Server getDiscoveredServer(@PathParam("serverName") String serverName) {
- Server server = new Server(serverName, null, 4, 58.3d, 4d, 2.87d);
+ Server server = new Server(serverName);
+ fetchServerDetails(server);
return server;
}
diff --git a/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/GlusterServersResource.java b/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/GlusterServersResource.java
index e160bc2f..342444f1 100644
--- a/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/GlusterServersResource.java
+++ b/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/GlusterServersResource.java
@@ -32,60 +32,57 @@ import javax.ws.rs.core.MediaType;
import org.springframework.stereotype.Component;
import com.gluster.storage.management.core.model.GenericResponse;
+import com.gluster.storage.management.core.model.GlusterServer;
import com.gluster.storage.management.core.model.Server;
import com.gluster.storage.management.core.model.ServerListResponse;
import com.gluster.storage.management.core.model.Status;
import com.gluster.storage.management.core.utils.GlusterUtil;
import com.gluster.storage.management.core.utils.ProcessResult;
-import com.gluster.storage.management.core.utils.ProcessUtil;
import com.sun.jersey.spi.resource.Singleton;
@Component
@Singleton
@Path("/cluster/servers")
-public class GlusterServersResource {
+public class GlusterServersResource extends AbstractServersResource {
private GlusterUtil glusterUtil = new GlusterUtil();
public static final String HOSTNAMETAG = "hostname:";
- private List<Server> getServerDetails() {
- List<Server> glusterServers = new ArrayList<Server>();
- List<String> serverNames = glusterUtil.getGlusterServerNames();
- for (String serverName : serverNames) {
- // TODO: With the new design of dedicated management server, this logic has to change.
- // GlusterServersClient client = new GlusterServersClient(serverName);
- // Server server = client.getServer("me");
- // glusterServers.add(server);
+ private List<GlusterServer> getServerDetails() {
+ List<GlusterServer> glusterServers = new ArrayList<GlusterServer>();
+ for (String serverName : glusterUtil.getGlusterServerNames()) {
+ glusterServers.add(getGlusterServer(serverName));
}
return glusterServers;
}
@GET
@Produces(MediaType.TEXT_XML)
- public ServerListResponse<Server> getServers() {
- return new ServerListResponse<Server>(Status.STATUS_SUCCESS, getServerDetails());
+ public ServerListResponse<GlusterServer> getGlusterServers() {
+ return new ServerListResponse<GlusterServer>(Status.STATUS_SUCCESS, getServerDetails());
}
@GET
@Path("{serverName}")
@Produces(MediaType.TEXT_XML)
- public String getGlusterServer(@PathParam("serverName") String serverName) {
- // TODO: With new design of dedicated management server, this concept won't work. Need to change.
- if (serverName.equals("me")) {
- return getThisServer();
- }
-
- // TODO: With the new design of dedicated management server, this logic has to change.
- // Fetch details of given server by sending a REST request to that server
- // return new GlusterServersClient(serverName).getServerXML("me");
- return null;
+ public GlusterServer getGlusterServer(@PathParam("serverName") String serverName) {
+ GlusterServer server = new GlusterServer(serverName);
+ fetchServerDetails(server);
+ return server;
}
- public String getThisServer() {
- ProcessResult result = new ProcessUtil().executeCommand("get-server-details.py");
- if (!result.isSuccess()) {
- // TODO:Generate error message and return
- }
- return result.getOutput();
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * com.gluster.storage.management.server.resources.AbstractServersResource#fetchServerDetails(com.gluster.storage
+ * .management.core.model.Server)
+ */
+ @Override
+ protected void fetchServerDetails(Server server) {
+ // fetch standard server details like cpu, disk, memory details
+ super.fetchServerDetails(server);
+
+ // TODO: Fetch gluster server details like status
}
@POST
@@ -94,9 +91,10 @@ public class GlusterServersResource {
ProcessResult result = glusterUtil.addServer(serverName);
if (!result.isSuccess()) {
- return new GenericResponse<String>(Status.STATUS_FAILURE, "Add server failed: [" + result.getOutput() + "]");
+ return new GenericResponse<String>(Status.STATUS_FAILURE, "Add server failed: ]" + result.getExitValue()
+ + "][" + result.getOutput() + "]");
}
- return new GenericResponse<String>(Status.STATUS_SUCCESS, "Server added successfully!");
+ return new GenericResponse<String>(Status.STATUS_SUCCESS, "Server [" + serverName + "] added successfully!");
}
public static void main(String[] args) {
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 9a2a7e47..9fcb28e6 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
@@ -61,7 +61,6 @@ public class ServerDiscoveryTask {
private String environment;
public void discoverServers() {
- System.out.println("Starting auto-discovery in [" + environment + "] environment");
List<String> serverNameList = new ArrayList<String>();
ProcessResult result = serverUtil.executeGlusterScript(true, environment + SCRIPT_NAME_SFX, new ArrayList<String>());