You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@libcloud.apache.org by wo...@apache.org on 2010/08/03 03:11:27 UTC
svn commit: r981715 - in /incubator/libcloud/sandbox/java/trunk: ./
src/base/ src/drivers/ src/drivers/ibm/ src/drivers/rackspace/
Author: woodser
Date: Tue Aug 3 01:11:26 2010
New Revision: 981715
URL: http://svn.apache.org/viewvc?rev=981715&view=rev
Log:
- Example.java file to parallel Python example.py; shows how to interact with factory and drivers.
- Updated Providers.java to suppress class conversion warnings.
- Updated IBM driver to point to GA release.
Added:
incubator/libcloud/sandbox/java/trunk/src/drivers/Example.java
Removed:
incubator/libcloud/sandbox/java/trunk/src/drivers/ibm/Main.java
incubator/libcloud/sandbox/java/trunk/src/drivers/rackspace/Main.java
Modified:
incubator/libcloud/sandbox/java/trunk/.project
incubator/libcloud/sandbox/java/trunk/src/base/Node.java
incubator/libcloud/sandbox/java/trunk/src/base/Providers.java
incubator/libcloud/sandbox/java/trunk/src/drivers/ibm/IBMConnection.java
incubator/libcloud/sandbox/java/trunk/src/drivers/ibm/IBMDriver.java
Modified: incubator/libcloud/sandbox/java/trunk/.project
URL: http://svn.apache.org/viewvc/incubator/libcloud/sandbox/java/trunk/.project?rev=981715&r1=981714&r2=981715&view=diff
==============================================================================
--- incubator/libcloud/sandbox/java/trunk/.project (original)
+++ incubator/libcloud/sandbox/java/trunk/.project Tue Aug 3 01:11:26 2010
@@ -1,17 +1,23 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>libcloud-java</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.jdt.core.javanature</nature>
- </natures>
-</projectDescription>
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>libcloud-java</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.wst.common.project.facet.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
+ </natures>
+</projectDescription>
Modified: incubator/libcloud/sandbox/java/trunk/src/base/Node.java
URL: http://svn.apache.org/viewvc/incubator/libcloud/sandbox/java/trunk/src/base/Node.java?rev=981715&r1=981714&r2=981715&view=diff
==============================================================================
--- incubator/libcloud/sandbox/java/trunk/src/base/Node.java (original)
+++ incubator/libcloud/sandbox/java/trunk/src/base/Node.java Tue Aug 3 01:11:26 2010
@@ -8,8 +8,6 @@ import base.interfaces.INodeDriver;
public class Node implements INode {
- private String uuid;
-
private String id;
private String name;
Modified: incubator/libcloud/sandbox/java/trunk/src/base/Providers.java
URL: http://svn.apache.org/viewvc/incubator/libcloud/sandbox/java/trunk/src/base/Providers.java?rev=981715&r1=981714&r2=981715&view=diff
==============================================================================
--- incubator/libcloud/sandbox/java/trunk/src/base/Providers.java (original)
+++ incubator/libcloud/sandbox/java/trunk/src/base/Providers.java Tue Aug 3 01:11:26 2010
@@ -4,7 +4,17 @@ import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.util.EnumMap;
+/*
+ * Manages provider information and provides a driver factory.
+ */
public class Providers {
+
+ // Maps providers to the driver packages.
+ private static EnumMap<Provider, String> providerMap;
+
+ /*
+ * List of available drivers.
+ */
public static enum Provider {
DUMMY,
EC2_US_EAST,
@@ -25,8 +35,9 @@ public class Providers {
DREAMHOST;
}
- private static EnumMap<Provider, String> providerMap;
-
+ /*
+ * Initializes the map bewteen providers (enum) and their driver packages.
+ */
private static void initProviderMap()
{
providerMap = new EnumMap<Provider, String>(Provider.class);
@@ -53,22 +64,39 @@ public class Providers {
providerMap.put(Provider.DREAMHOST, "");
}
- public static Class get_driver(Provider p)
+ /*
+ * Retrieves the driver for the given provider.
+ *
+ * @param p defines the provider to retrieve the driver for
+ *
+ * @return Class<NodeDriver> is the provider's corresponding driver class
+ */
+ @SuppressWarnings("unchecked")
+ public static Class<NodeDriver> getDriver(Provider p)
{
if (providerMap == null)
initProviderMap();
+ @SuppressWarnings("rawtypes")
Class driverClass = null;
try {
String classname = providerMap.get(p);
- driverClass = Class.forName(classname);
+ driverClass = Class.forName(classname).asSubclass(NodeDriver.class);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return driverClass;
}
- public static NodeDriver constructDriver(Class<? extends NodeDriver> myClass, Object ... args) {
+ /*
+ * Constructs a driver from the given driver class and constructor arguments.
+ *
+ * @param driverClass is the class of the driver to construct
+ * @param args are the arguments to the driver's constructor
+ *
+ * @return NodeDriver is the initialized driver. Typecast this to the specific driver type.
+ */
+ public static NodeDriver constructDriver(Class<? extends NodeDriver> driverClass, Object ... args) {
// Convert arguments to class array
Class<?>[] classArgs = new Class[args.length];
for (int i = 0; i < args.length; i++) {
@@ -77,7 +105,7 @@ public class Providers {
try {
// Get constructor and create instance
- Constructor<?> constructor = myClass.getConstructor(classArgs);
+ Constructor<?> constructor = driverClass.getConstructor(classArgs);
return (NodeDriver)constructor.newInstance(args);
} catch (SecurityException e) {
e.printStackTrace();
Added: incubator/libcloud/sandbox/java/trunk/src/drivers/Example.java
URL: http://svn.apache.org/viewvc/incubator/libcloud/sandbox/java/trunk/src/drivers/Example.java?rev=981715&view=auto
==============================================================================
--- incubator/libcloud/sandbox/java/trunk/src/drivers/Example.java (added)
+++ incubator/libcloud/sandbox/java/trunk/src/drivers/Example.java Tue Aug 3 01:11:26 2010
@@ -0,0 +1,37 @@
+package drivers;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import base.NodeDriver;
+import base.Providers;
+import base.Providers.Provider;
+import drivers.ibm.IBMDriver;
+
+/*
+ * Illustrates how to interact with libcloud in Java.
+ */
+public class Example {
+
+ /*
+ * Entry point of execution.
+ */
+ public static void main(String[] args) {
+ // Fetch driver(s).
+ Class<NodeDriver> ibmClass = Providers.getDriver(Provider.IBM);
+ IBMDriver ibmDriver = (IBMDriver)Providers.constructDriver(ibmClass, "your_username", "your_password");
+
+ // Insert driver(s) into array for generic processing.
+ List<NodeDriver> drivers = new ArrayList<NodeDriver>();
+ drivers.add(ibmDriver);
+
+ // Process drivers.
+ for (NodeDriver driver : drivers) {
+ System.out.println(driver.getName() + ':');
+ System.out.println("\tNodes: " + driver.listNodes());
+ System.out.println("\tImages: " + driver.listImages());
+ System.out.println("\tSizes: " + driver.listSizes());
+ System.out.println("\tLocations: " + driver.listLocations());
+ }
+ }
+}
Modified: incubator/libcloud/sandbox/java/trunk/src/drivers/ibm/IBMConnection.java
URL: http://svn.apache.org/viewvc/incubator/libcloud/sandbox/java/trunk/src/drivers/ibm/IBMConnection.java?rev=981715&r1=981714&r2=981715&view=diff
==============================================================================
--- incubator/libcloud/sandbox/java/trunk/src/drivers/ibm/IBMConnection.java (original)
+++ incubator/libcloud/sandbox/java/trunk/src/drivers/ibm/IBMConnection.java Tue Aug 3 01:11:26 2010
@@ -9,7 +9,7 @@ import base.interfaces.INodeDriver;
public class IBMConnection extends ConnectionUserAndKey {
- private static final String DEFAULT_HOST = "www-180.ibm.com";
+ private static final String DEFAULT_HOST = "www-147.ibm.com";
private static final boolean DEFAULT_SECURE = true;
public IBMConnection(String userId, String key, INodeDriver driver) {
Modified: incubator/libcloud/sandbox/java/trunk/src/drivers/ibm/IBMDriver.java
URL: http://svn.apache.org/viewvc/incubator/libcloud/sandbox/java/trunk/src/drivers/ibm/IBMDriver.java?rev=981715&r1=981714&r2=981715&view=diff
==============================================================================
--- incubator/libcloud/sandbox/java/trunk/src/drivers/ibm/IBMDriver.java (original)
+++ incubator/libcloud/sandbox/java/trunk/src/drivers/ibm/IBMDriver.java Tue Aug 3 01:11:26 2010
@@ -29,7 +29,7 @@ public class IBMDriver extends NodeDrive
private static final String NAME = "IBM Developer Cloud";
- private static final String REST_BASE = "/cloud/enterprise/beta/api/rest/20090403/";
+ private static final String REST_BASE = "/computecloud/enterprise/api/rest/20100331";
private static final Map<Integer, NodeState> NODE_STATE_MAP = new HashMap<Integer, NodeState>();
@@ -77,7 +77,7 @@ public class IBMDriver extends NodeDrive
String encoded = connection.encodeDataMap(data);
Map<String, String> headers = new HashMap<String, String>();
headers.put("Content-Type", "application/x-www-form-urlencoded");
- IResponse response = connection.request("POST", REST_BASE + "instances", headers, null, encoded);
+ IResponse response = connection.request("POST", REST_BASE + "/instances", headers, null, encoded);
IBMHandler handler = new IBMHandler(response);
return parseNodes((Document)handler.getParsedObject()).get(0);
}
@@ -87,7 +87,7 @@ public class IBMDriver extends NodeDrive
headers.put("Content-Type", "application/x-www-form-urlencoded");
Map<String, String> data = new HashMap<String, String>();
data.put("state", "restart");
- IResponse response = connection.request("PUT", REST_BASE + "instances/"
+ IResponse response = connection.request("PUT", REST_BASE + "/instances/"
+ node.getId(), headers, null, connection.encodeDataMap(data));
new IBMHandler(response);
return response.getStatus() == 200;
@@ -95,27 +95,27 @@ public class IBMDriver extends NodeDrive
public boolean destroyNode(INode node) {
IResponse response = connection.request("DELETE", REST_BASE
- + "instances/" + node.getId(), null, null, "");
+ + "/instances/" + node.getId(), null, null, "");
new IBMHandler(response);
return response.getStatus() == 200;
}
public List<NodeImage> listImages() {
- IResponse response = connection.request("GET", REST_BASE + "images",
+ IResponse response = connection.request("GET", REST_BASE + "/offerings/image",
null, null, "");
IBMHandler rh = new IBMHandler(response);
return parseImages((Document) rh.getParsedObject());
}
public List<NodeLocation> listLocations() {
- IResponse response = connection.request("GET", REST_BASE + "locations",
+ IResponse response = connection.request("GET", REST_BASE + "/locations",
null, null, "");
IBMHandler rh = new IBMHandler(response);
return parseLocations((Document) rh.getParsedObject());
}
public List<INode> listNodes() {
- IResponse response = connection.request("GET", REST_BASE + "instances",
+ IResponse response = connection.request("GET", REST_BASE + "/instances",
null, null, "");
IBMHandler rh = new IBMHandler(response);
return parseNodes((Document) rh.getParsedObject());
@@ -123,9 +123,13 @@ public class IBMDriver extends NodeDrive
public List<NodeSize> listSizes() {
List<NodeSize> sizes = new ArrayList<NodeSize>();
- sizes.add(new NodeSize("SMALL", "SMALL", -1, -1, -1, -1, this));
- sizes.add(new NodeSize("MEDIUM", "MEDIUM", -1, -1, -1, -1, this));
- sizes.add(new NodeSize("LARGE", "LARGE", -1, -1, -1, -1, this));
+ sizes.add(new NodeSize("BRZ32.1/2048/175", "Bronze 32 bit", -1, -1, -1, -1, this));
+ sizes.add(new NodeSize("BRZ64.2/4096/850", "Bronze 64 bit", -1, -1, -1, -1, this));
+ sizes.add(new NodeSize("SLV32.2/4096/350", "Silver 32 bit", -1, -1, -1, -1, this));
+ sizes.add(new NodeSize("SLV64.4/8192/1024", "Silver 64 bit", -1, -1, -1, -1, this));
+ sizes.add(new NodeSize("GLD32.4/4096/350", "Bronze 32 bit", -1, -1, -1, -1, this));
+ sizes.add(new NodeSize("GLD64.8/16384/1024", "Gold 64 bit", -1, -1, -1, -1, this));
+ sizes.add(new NodeSize("PLT64.16/16384/2045", "Platinum 64 bit", -1, -1, -1, -1, this));
return sizes;
}