diff options
| author | Shireesh Anjal <shireesh@gluster.com> | 2011-03-09 18:14:39 +0530 |
|---|---|---|
| committer | Shireesh Anjal <shireesh@gluster.com> | 2011-03-09 18:14:39 +0530 |
| commit | 08fdcf4de0919b2f8b5e5c1232e7659b566a358b (patch) | |
| tree | f96b25c00a8f8d45f01c6b4ae913fe35c2a73fca | |
| parent | be766e623e6c79333cafa382888e9b9e64a7aa38 (diff) | |
renamed interface ServerResponse to Response
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 Binary files differnew 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 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 Binary files differnew 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 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> |
