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/09/23 18:33:24 UTC
svn commit: r1000529 -
/incubator/libcloud/sandbox/java/trunk/src/libcloud/providers/rackspace/RackspaceDriver.java
Author: woodser
Date: Thu Sep 23 16:33:24 2010
New Revision: 1000529
URL: http://svn.apache.org/viewvc?rev=1000529&view=rev
Log:
RackspaceDriver improvement from Robert Yokota.
https://issues.apache.org/jira/browse/LIBCLOUD-53
Modified:
incubator/libcloud/sandbox/java/trunk/src/libcloud/providers/rackspace/RackspaceDriver.java
Modified: incubator/libcloud/sandbox/java/trunk/src/libcloud/providers/rackspace/RackspaceDriver.java
URL: http://svn.apache.org/viewvc/incubator/libcloud/sandbox/java/trunk/src/libcloud/providers/rackspace/RackspaceDriver.java?rev=1000529&r1=1000528&r2=1000529&view=diff
==============================================================================
--- incubator/libcloud/sandbox/java/trunk/src/libcloud/providers/rackspace/RackspaceDriver.java (original)
+++ incubator/libcloud/sandbox/java/trunk/src/libcloud/providers/rackspace/RackspaceDriver.java Thu Sep 23 16:33:24 2010
@@ -65,7 +65,14 @@ public class RackspaceDriver extends Nod
String xml = "<server xmlns=\"http://docs.rackspacecloud.com/servers/api/v1.0\" name=\"" + name
+ "\" imageId=\"" + image.id
- + "\" flavorId=\"" + size.id + "\" />";
+ + "\" flavorId=\"" + size.id + "\">";
+
+ if (auth != null && auth.secret != null) {
+ xml += "<personality><file path=\"/root/.ssh/authorized_keys\">"
+ + auth.secret + "</file></personality>";
+ }
+
+ xml += "</server>";
IResponse response = connection.request("POST", "/servers.xml", null, null, xml);
RackspaceHandler rh = new RackspaceHandler(response);
@@ -112,6 +119,22 @@ public class RackspaceDriver extends Nod
return parseNodes((Document) rh.getParsedObject());
}
+ /*
+ * Non-standard extension to list nodes by date.
+ *
+ * @param sinceDate the nodes must be modified after this date
+ *
+ * @return List<INode> are the nodes that were modified after sinceDate
+ */
+ public List<INode> listNodes(java.util.Date sinceDate) {
+ Map<String, String> params = new HashMap<String, String>();
+ params.put("changes-since", String.valueOf(sinceDate.getTime()));
+ IResponse response = connection.request("GET", "/servers/detail.xml", null, params, null);
+ if (response.getStatus() == 304) return new ArrayList<INode>();
+ RackspaceHandler rh = new RackspaceHandler(response);
+ return parseNodes((Document) rh.getParsedObject());
+ }
+
public List<NodeSize> listSizes() {
IResponse response = connection.request("GET", "/flavors/detail.xml", null, null, null);
RackspaceHandler rh = new RackspaceHandler(response);
@@ -123,7 +146,7 @@ public class RackspaceDriver extends Nod
private List<NodeImage> parseImages(Document doc) {
List<NodeImage> images = new ArrayList<NodeImage>();
try {
- NodeList set = (NodeList) xpath.evaluate("image", doc.getDocumentElement(), XPathConstants.NODESET);
+ NodeList set = (NodeList) xpath.evaluate("//*[local-name()='image']", doc.getDocumentElement(), XPathConstants.NODESET);
for (int i = 0; i < set.getLength(); i++) {
images.add(parseImage((Element) set.item(i)));
}
@@ -141,7 +164,7 @@ public class RackspaceDriver extends Nod
private List<NodeSize> parseSizes(Document doc) {
List<NodeSize> sizes = new ArrayList<NodeSize>();
try {
- NodeList set = (NodeList) xpath.evaluate("flavor", doc.getDocumentElement(), XPathConstants.NODESET);
+ NodeList set = (NodeList) xpath.evaluate("//*[local-name()='flavor']", doc.getDocumentElement(), XPathConstants.NODESET);
for (int i = 0; i < set.getLength(); i++) {
sizes.add(parseSize((Element) set.item(i)));
}
@@ -165,7 +188,7 @@ public class RackspaceDriver extends Nod
private List<INode> parseNodes(Document doc) {
List<INode> servers = new ArrayList<INode>();
try {
- NodeList set = (NodeList) xpath.evaluate("server", doc.getDocumentElement(), XPathConstants.NODESET);
+ NodeList set = (NodeList) xpath.evaluate("//*[local-name()='server']", doc.getDocumentElement(), XPathConstants.NODESET);
for (int i = 0; i < set.getLength(); i++) {
servers.add(parseNode((Element) set.item(i)));
}