Author: tomaz
Date: Mon Jul 11 19:39:05 2011
New Revision: 1145304
URL: http://svn.apache.org/viewvc?rev=1145304&view=rev
Log:
Add the following new extension methods to the Rackspace compute driver:
- ex_resize
- ex_confirm_resize
- ex_revert_resize
Modified:
libcloud/trunk/libcloud/compute/drivers/rackspace.py
libcloud/trunk/test/compute/test_rackspace.py
Modified: libcloud/trunk/libcloud/compute/drivers/rackspace.py
URL:
http://svn.apache.org/viewvc/libcloud/trunk/libcloud/compute/drivers/rackspace.py?rev=1145304&r1=1145303&r2=1145304&view=diff
==============================================================================
--- libcloud/trunk/libcloud/compute/drivers/rackspace.py (original)
+++ libcloud/trunk/libcloud/compute/drivers/rackspace.py Mon Jul 11 19:39:05
2011
@@ -272,6 +272,41 @@ class RackspaceNodeDriver(NodeDriver):
data=ET.tostring(server_elm))
return self._to_node(resp.object)
+ def ex_resize(self, node, image):
+ elm = ET.Element(
+ 'resize',
+ {'xmlns': NAMESPACE,
+ 'imageId': str(image.id),
+ }
+ )
+
+ resp = self.connection.request("/servers/%s/action" % (node.id),
+ method='POST',
+ data=ET.tostring(elm))
+ return resp.status == 202
+
+ def ex_confirm_resize(self, node):
+ elm = ET.Element(
+ 'confirmResize',
+ {'xmlns': NAMESPACE}
+ )
+
+ resp = self.connection.request("/servers/%s/action" % (node.id),
+ method='POST',
+ data=ET.tostring(elm))
+ return resp.status == 204
+
+ def ex_revert_resize(self, node):
+ elm = ET.Element(
+ 'revertResize',
+ {'xmlns': NAMESPACE}
+ )
+
+ resp = self.connection.request("/servers/%s/action" % (node.id),
+ method='POST',
+ data=ET.tostring(elm))
+ return resp.status == 204
+
def ex_rebuild(self, node_id, image_id):
# @TODO: Remove those ifs in 0.6
if isinstance(node_id, Node):
Modified: libcloud/trunk/test/compute/test_rackspace.py
URL:
http://svn.apache.org/viewvc/libcloud/trunk/test/compute/test_rackspace.py?rev=1145304&r1=1145303&r2=1145304&view=diff
==============================================================================
--- libcloud/trunk/test/compute/test_rackspace.py (original)
+++ libcloud/trunk/test/compute/test_rackspace.py Mon Jul 11 19:39:05 2011
@@ -212,6 +212,23 @@ class RackspaceTests(unittest.TestCase,
ret = self.driver.ex_unshare_ip('3445', '67.23.21.133')
self.assertEquals(True, ret)
+ def test_ex_resize(self):
+ node = Node(id=444222, name=None, state=None, public_ip=None,
+ private_ip=None, driver=self.driver)
+ image = NodeImage(id=11, name='Ubuntu 8.10 (intrepid)',
+ driver=self.driver)
+ self.assertTrue(self.driver.ex_resize(node=node, image=image))
+
+ def test_ex_confirm_resize(self):
+ node = Node(id=444222, name=None, state=None, public_ip=None,
+ private_ip=None, driver=self.driver)
+ self.assertTrue(self.driver.ex_confirm_resize(node=node))
+
+ def test_ex_revert_resize(self):
+ node = Node(id=444222, name=None, state=None, public_ip=None,
+ private_ip=None, driver=self.driver)
+ self.assertTrue(self.driver.ex_revert_resize(node=node))
+
class RackspaceMockHttp(MockHttpTestCase):
@@ -319,6 +336,17 @@ class RackspaceMockHttp(MockHttpTestCase
def _v1_0_slug_servers_3445_ips_public_67_23_21_133(self, method, url,
body, headers):
return (httplib.ACCEPTED, "", {}, httplib.responses[httplib.ACCEPTED])
+ def _v1_0_slug_servers_444222_action(self, method, url, body, headers):
+ if body.find('resize') != -1:
+ # test_ex_resize_server
+ return (httplib.ACCEPTED, "", headers,
httplib.responses[httplib.NO_CONTENT])
+ elif body.find('confirmResize') != -1:
+ # test_ex_confirm_resize
+ return (httplib.NO_CONTENT, "", headers,
httplib.responses[httplib.NO_CONTENT])
+ elif body.find('revertResize') != -1:
+ # test_ex_revert_resize
+ return (httplib.NO_CONTENT, "", headers,
httplib.responses[httplib.NO_CONTENT])
+
class OpenStackResponseTestCase(unittest.TestCase):
XML = """<?xml version="1.0" encoding="UTF-8"?><root/>"""