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;
 	}