summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShireesh Anjal <shireesh@gluster.com>2011-03-09 18:14:39 +0530
committerShireesh Anjal <shireesh@gluster.com>2011-03-09 18:14:39 +0530
commit08fdcf4de0919b2f8b5e5c1232e7659b566a358b (patch)
treef96b25c00a8f8d45f01c6b4ae913fe35c2a73fca
parentbe766e623e6c79333cafa382888e9b9e64a7aa38 (diff)
renamed interface ServerResponse to Response
-rw-r--r--com.gluster.storage.management.client/.classpath1
-rw-r--r--com.gluster.storage.management.client/META-INF/MANIFEST.MF3
-rw-r--r--com.gluster.storage.management.client/src/com/gluster/storage/management/client/DiscoveredServersClient.java8
-rw-r--r--com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterServersClient.java8
-rw-r--r--com.gluster.storage.management.client/src/com/gluster/storage/management/client/VolumesClient.java79
-rw-r--r--com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/AbstractServerResponse.java2
-rw-r--r--com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/GenericResponse.java51
-rw-r--r--com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Response.java (renamed from com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/ServerResponse.java)4
-rw-r--r--com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/ServerDetailsResponse.java19
-rw-r--r--com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/ServerListResponse.java28
-rw-r--r--com.gluster.storage.management.server/WebContent/WEB-INF/lib/plugins/com.gluster.storage.management.client_1.0.0.jarbin0 -> 513103 bytes
-rw-r--r--com.gluster.storage.management.server/WebContent/WEB-INF/lib/plugins/com.gluster.storage.management.core_1.0.0.jarbin0 -> 50608 bytes
-rw-r--r--com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/DiscoveredServersResource.java5
-rw-r--r--com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/GlusterServersResource.java5
-rw-r--r--com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/VolumesResource.java49
-rw-r--r--com.sun.jersey/.project28
16 files changed, 234 insertions, 56 deletions
diff --git a/com.gluster.storage.management.client/.classpath b/com.gluster.storage.management.client/.classpath
index 764d68c9..bb63c982 100644
--- a/com.gluster.storage.management.client/.classpath
+++ b/com.gluster.storage.management.client/.classpath
@@ -5,5 +5,6 @@
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/com.gluster.storage.management.core"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/com.gluster.storage.management.client/META-INF/MANIFEST.MF b/com.gluster.storage.management.client/META-INF/MANIFEST.MF
index 48cb74f5..8d63767c 100644
--- a/com.gluster.storage.management.client/META-INF/MANIFEST.MF
+++ b/com.gluster.storage.management.client/META-INF/MANIFEST.MF
@@ -5,7 +5,8 @@ Bundle-SymbolicName: com.gluster.storage.management.client
Bundle-Version: 1.0.0
Bundle-Vendor: GLUSTER
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Require-Bundle: com.gluster.storage.management.core;bundle-version="1.0.0"
+Require-Bundle: com.gluster.storage.management.core;bundle-version="1.0.0",
+ org.eclipse.equinox.common;bundle-version="3.6.0"
Export-Package: com.gluster.storage.management.client
Bundle-ClassPath: .,
lib/jersey-1.5/jersey-client-1.5.jar,
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
index a22c3f45..35008135 100644
--- 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
@@ -20,8 +20,8 @@ package com.gluster.storage.management.client;
import java.util.List;
+import com.gluster.storage.management.core.model.GenericResponse;
import com.gluster.storage.management.core.model.Server;
-import com.gluster.storage.management.core.model.ServerDetailsResponse;
import com.gluster.storage.management.core.model.ServerListResponse;
public class DiscoveredServersClient extends AbstractClient {
@@ -39,13 +39,13 @@ public class DiscoveredServersClient extends AbstractClient {
public List<Server> getDiscoveredServers() {
@SuppressWarnings("unchecked")
ServerListResponse<Server> response = (ServerListResponse<Server>) fetchResource(ServerListResponse.class);
- return response.getData();
+ return response.getServers();
}
public Server getServer(String serverName) {
@SuppressWarnings("unchecked")
- ServerDetailsResponse<Server> response = (ServerDetailsResponse<Server>) fetchSubResource(serverName,
- ServerDetailsResponse.class);
+ GenericResponse<Server> response = (GenericResponse<Server>) fetchSubResource(serverName,
+ GenericResponse.class);
return response.getData();
}
diff --git a/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterServersClient.java b/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterServersClient.java
index c07e155f..9f1d5ce3 100644
--- a/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterServersClient.java
+++ b/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterServersClient.java
@@ -20,8 +20,8 @@ package com.gluster.storage.management.client;
import java.util.List;
+import com.gluster.storage.management.core.model.GenericResponse;
import com.gluster.storage.management.core.model.Server;
-import com.gluster.storage.management.core.model.ServerDetailsResponse;
import com.gluster.storage.management.core.model.ServerListResponse;
public class GlusterServersClient extends AbstractClient {
@@ -39,13 +39,13 @@ public class GlusterServersClient extends AbstractClient {
public List<Server> getServers() {
@SuppressWarnings("unchecked")
ServerListResponse<Server> response = (ServerListResponse<Server>) fetchResource(ServerListResponse.class);
- return response.getData();
+ return response.getServers();
}
public Server getServer(String serverName) {
@SuppressWarnings("unchecked")
- ServerDetailsResponse<Server> response = (ServerDetailsResponse<Server>) fetchSubResource(serverName,
- ServerDetailsResponse.class);
+ GenericResponse<Server> response = (GenericResponse<Server>) fetchSubResource(serverName,
+ GenericResponse.class);
return response.getData();
}
diff --git a/com.gluster.storage.management.client/src/com/gluster/storage/management/client/VolumesClient.java b/com.gluster.storage.management.client/src/com/gluster/storage/management/client/VolumesClient.java
new file mode 100644
index 00000000..2efe7ef0
--- /dev/null
+++ b/com.gluster.storage.management.client/src/com/gluster/storage/management/client/VolumesClient.java
@@ -0,0 +1,79 @@
+/**
+ * VolumesClient.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.client;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.ws.rs.core.MediaType;
+
+import com.gluster.storage.management.core.model.Disk;
+import com.gluster.storage.management.core.model.Disk.DISK_STATUS;
+import com.gluster.storage.management.core.model.GenericResponse;
+import com.gluster.storage.management.core.model.Volume;
+
+public class VolumesClient extends AbstractClient {
+ private static final String RESOURCE_NAME = "cluster/volumes";
+
+ public VolumesClient(String serverName, String user, String password) {
+ super(serverName, user, password);
+ }
+
+ @Override
+ public String getResourceName() {
+ return RESOURCE_NAME;
+ }
+
+ public String createVolume(Volume volume) {
+
+ GenericResponse<String> response = (GenericResponse<String>) resource
+ .path("createvolume")
+ .type(MediaType.APPLICATION_XML)
+ .accept(MediaType.APPLICATION_XML)
+ .post(GenericResponse.class, volume);
+
+ System.out.println("Response : " + response.getData());
+
+ return response.getData();
+
+ }
+
+ /**
+ * @param args
+ */
+ public static void main(String[] args) {
+ VolumesClient VC = new VolumesClient("localhost", "gluster", "gluster");
+ List<Disk> disks = new ArrayList<Disk>();
+ Disk diskElement = new Disk();
+ diskElement.setName("sda1");
+ diskElement.setStatus(DISK_STATUS.READY);
+ disks.add(diskElement);
+ diskElement.setName("sda2");
+ diskElement.setStatus(DISK_STATUS.READY);
+ disks.add(diskElement);
+
+ Volume vol = new Volume("vol1", null,
+ Volume.VOLUME_TYPE.PLAIN_DISTRIBUTE,
+ Volume.TRANSPORT_TYPE.ETHERNET, Volume.VOLUME_STATUS.ONLINE);
+ vol.setDisks(disks);
+ System.out.println(VC.createVolume(vol));
+ }
+}
diff --git a/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/AbstractServerResponse.java b/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/AbstractServerResponse.java
index 97d1abfe..c03194dd 100644
--- a/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/AbstractServerResponse.java
+++ b/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/AbstractServerResponse.java
@@ -18,7 +18,7 @@
*******************************************************************************/
package com.gluster.storage.management.core.model;
-public abstract class AbstractServerResponse implements ServerResponse {
+public abstract class AbstractServerResponse implements Response {
private Status status;
@Override
diff --git a/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/GenericResponse.java b/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/GenericResponse.java
new file mode 100644
index 00000000..776a0b6c
--- /dev/null
+++ b/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/GenericResponse.java
@@ -0,0 +1,51 @@
+/**
+ * GenericServerResponse.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.core.model;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement(name="response")
+public class GenericResponse<T> implements Response<T> {
+ private T data;
+ private Status status;
+
+ @Override
+ public Status getStatus() {
+ return status;
+ }
+
+ public void setStatus(Status status) {
+ this.status = status;
+ }
+
+ public GenericResponse(Status status, T data) {
+ setStatus(status);
+ this.data = data;
+ }
+
+ /* (non-Javadoc)
+ * @see com.gluster.storage.management.core.model.ServerResponse#getData()
+ */
+ @Override
+ public T getData() {
+ return 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/Response.java
index a0d653fa..96ea8497 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/Response.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 Response<T> {
/**
* @return Status of request processing
*/
@@ -33,5 +33,5 @@ public interface ServerResponse {
* @return Data associated with the response. e.g. A "discover servers"
* request will return the list of discovered servers.
*/
- public Object getData();
+ public T getData();
}
diff --git a/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/ServerDetailsResponse.java b/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/ServerDetailsResponse.java
deleted file mode 100644
index ee8d6d8a..00000000
--- a/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/ServerDetailsResponse.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.gluster.storage.management.core.model;
-
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-
-@XmlRootElement(name="response")
-public class ServerDetailsResponse<T extends Server> extends AbstractServerResponse {
- @XmlElement(name="server", type=Server.class)
- private Server server;
-
- public Server getServer() {
- return server;
- }
-
- @Override
- public Server getData() {
- return getServer();
- }
-}
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 82f31b77..6899f67d 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
@@ -18,28 +18,22 @@
*******************************************************************************/
package com.gluster.storage.management.core.model;
-import java.util.List;
-
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlElementWrapper;
-import javax.xml.bind.annotation.XmlRootElement;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElementWrapper;
+import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name="response")
-public class ServerListResponse<T extends Server> extends AbstractServerResponse {
- private List<T> servers;
+public class ServerListResponse<T extends Server> extends GenericResponse {
+ public ServerListResponse(Status status, List<T> servers) {
+ super(status, servers);
+ }
+ @SuppressWarnings("unchecked")
@XmlElementWrapper(name="servers")
@XmlElement(name="server", type=Server.class)
public List<T> getServers() {
- return servers;
- }
-
- @Override
- public List<T> getData() {
- return getServers();
- }
-
- public void setServers(List<T> data) {
- this.servers = data;
+ return (List<T>)getData();
}
}
diff --git a/com.gluster.storage.management.server/WebContent/WEB-INF/lib/plugins/com.gluster.storage.management.client_1.0.0.jar b/com.gluster.storage.management.server/WebContent/WEB-INF/lib/plugins/com.gluster.storage.management.client_1.0.0.jar
new file mode 100644
index 00000000..56222cbf
--- /dev/null
+++ b/com.gluster.storage.management.server/WebContent/WEB-INF/lib/plugins/com.gluster.storage.management.client_1.0.0.jar
Binary files differ
diff --git a/com.gluster.storage.management.server/WebContent/WEB-INF/lib/plugins/com.gluster.storage.management.core_1.0.0.jar b/com.gluster.storage.management.server/WebContent/WEB-INF/lib/plugins/com.gluster.storage.management.core_1.0.0.jar
new file mode 100644
index 00000000..d321e76c
--- /dev/null
+++ b/com.gluster.storage.management.server/WebContent/WEB-INF/lib/plugins/com.gluster.storage.management.core_1.0.0.jar
Binary files differ
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 92f2fa5d..7e0221ac 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
@@ -59,10 +59,7 @@ public class DiscoveredServersResource {
@GET
@Produces(MediaType.TEXT_XML)
public ServerListResponse<Server> getDiscoveredServers() {
- ServerListResponse<Server> response = new ServerListResponse<Server>();
- response.setServers(getDiscoveredServerDetails());
- response.setStatus(Status.STATUS_SUCCESS);
- return response;
+ return new ServerListResponse<Server>(Status.STATUS_SUCCESS, getDiscoveredServerDetails());
}
private List<Server> getDiscoveredServerDetails() {
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 fabda818..5559f4ad 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
@@ -59,10 +59,7 @@ public class GlusterServersResource {
@GET
@Produces(MediaType.TEXT_XML)
public ServerListResponse<Server> getServers() {
- ServerListResponse<Server> response = new ServerListResponse<Server>();
- response.setServers(getServerDetails());
- response.setStatus(Status.STATUS_SUCCESS);
- return response;
+ return new ServerListResponse<Server>(Status.STATUS_SUCCESS, getServerDetails());
}
@GET
diff --git a/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/VolumesResource.java b/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/VolumesResource.java
new file mode 100644
index 00000000..a6017217
--- /dev/null
+++ b/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/VolumesResource.java
@@ -0,0 +1,49 @@
+/**
+ * VolumesResource.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 javax.ws.rs.Consumes;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+
+import com.gluster.storage.management.core.model.GenericResponse;
+import com.gluster.storage.management.core.model.Status;
+import com.gluster.storage.management.core.model.Volume;
+import com.gluster.storage.management.core.utils.ProcessResult;
+import com.gluster.storage.management.core.utils.ProcessUtil;
+
+@Path("/cluster")
+public class VolumesResource {
+
+ @POST
+ @Path("/createvolume")
+ @Consumes(MediaType.APPLICATION_XML)
+ @Produces(MediaType.APPLICATION_XML)
+ public GenericResponse createVolume(Volume volume) {
+ ProcessResult result = new ProcessUtil().executeCommand("create-volume.py");
+ if (!result.isSuccess()) {
+ return new GenericResponse(Status.STATUS_FAILURE, "Volume creation failed: [" + result.getOutput() + "]");
+ }
+ return new GenericResponse(Status.STATUS_SUCCESS, "Volume created successfully!");
+ }
+}
diff --git a/com.sun.jersey/.project b/com.sun.jersey/.project
new file mode 100644
index 00000000..52ec5691
--- /dev/null
+++ b/com.sun.jersey/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>com.sun.jersey</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>