You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@libcloud.apache.org by to...@apache.org on 2012/04/27 00:01:09 UTC
svn commit: r1331124 - in /libcloud/trunk: CHANGES
libcloud/compute/drivers/openstack.py test/compute/test_openstack.py
Author: tomaz
Date: Thu Apr 26 22:01:08 2012
New Revision: 1331124
URL: http://svn.apache.org/viewvc?rev=1331124&view=rev
Log:
Add ex_rescue and ex_unrescue method to OpenStack 1.1 driver. This patch has
been submitted by Shawn Smith and is part of LIBCLOUD-193.
Modified:
libcloud/trunk/CHANGES
libcloud/trunk/libcloud/compute/drivers/openstack.py
libcloud/trunk/test/compute/test_openstack.py
Modified: libcloud/trunk/CHANGES
URL: http://svn.apache.org/viewvc/libcloud/trunk/CHANGES?rev=1331124&r1=1331123&r2=1331124&view=diff
==============================================================================
--- libcloud/trunk/CHANGES (original)
+++ libcloud/trunk/CHANGES Thu Apr 26 22:01:08 2012
@@ -65,6 +65,9 @@ Changes with Apache Libcloud in developm
is not specified when calling deploy_node. ; LIBCLOUD-182
[Tomaz Muraus]
+ - Add ex_rescue and ex_unrescue method to OpenStack 1.1 driver.
+ [Shawn Smith]
+
*) Storage
- Large object upload support for CloudFiles driver
Modified: libcloud/trunk/libcloud/compute/drivers/openstack.py
URL: http://svn.apache.org/viewvc/libcloud/trunk/libcloud/compute/drivers/openstack.py?rev=1331124&r1=1331123&r2=1331124&view=diff
==============================================================================
--- libcloud/trunk/libcloud/compute/drivers/openstack.py (original)
+++ libcloud/trunk/libcloud/compute/drivers/openstack.py Thu Apr 26 22:01:08 2012
@@ -1099,3 +1099,17 @@ class OpenStack_1_1_NodeDriver(OpenStack
path = urlparse.urlparse(location_header).path
image_id = path.split('/')[-1]
return image_id
+
+ def ex_rescue(self, node, password=None):
+ # Requires Rescue Mode extension
+ if password:
+ resp = self._node_action(node, 'rescue', adminPass=password)
+ else:
+ resp = self._node_action(node, 'rescue')
+ password = json.loads(resp.body)['adminPass']
+ node.extra['password'] = password
+ return node
+
+ def ex_unrescue(self, node):
+ resp = self._node_action(node, 'unrescue')
+ return resp.status == httplib.ACCEPTED
Modified: libcloud/trunk/test/compute/test_openstack.py
URL: http://svn.apache.org/viewvc/libcloud/trunk/test/compute/test_openstack.py?rev=1331124&r1=1331123&r2=1331124&view=diff
==============================================================================
--- libcloud/trunk/test/compute/test_openstack.py (original)
+++ libcloud/trunk/test/compute/test_openstack.py Thu Apr 26 22:01:08 2012
@@ -840,6 +840,24 @@ class OpenStack_1_1_Tests(unittest.TestC
params = [("key", "value1"), ("key", "value2") ]
self.driver.connection.request("/servers/12067", params=params)
+ def test_ex_rescue_with_password(self):
+ node = Node(id=12064, name=None, state=None, public_ips=None,
+ private_ips=None, driver=self.driver)
+ n = self.driver.ex_rescue(node, 'foo')
+ self.assertEqual(n.extra['password'], 'foo')
+
+ def test_ex_rescue_no_password(self):
+ node = Node(id=12064, name=None, state=None, public_ips=None,
+ private_ips=None, driver=self.driver)
+ n = self.driver.ex_rescue(node)
+ self.assertEqual(n.extra['password'], 'foo')
+
+ def test_ex_unrescue(self):
+ node = Node(id=12064, name=None, state=None, public_ips=None,
+ private_ips=None, driver=self.driver)
+ result = self.driver.ex_unrescue(node)
+ self.assertTrue(result)
+
class OpenStack_1_1_FactoryMethodTests(OpenStack_1_1_Tests):
should_list_locations = False
@@ -909,6 +927,9 @@ class OpenStack_1_1_MockHttp(MockHttpTes
return (httplib.ACCEPTED, "",
{"location": "http://127.0.0.1/v1.1/68/images/4949f9ee-2421-4c81-8b49-13119446008b"},
httplib.responses[httplib.ACCEPTED])
+ elif "rescue" in json.loads(body):
+ return (httplib.OK, '{"adminPass": "foo"}', {},
+ httplib.responses[httplib.OK])
return (httplib.ACCEPTED, "", {}, httplib.responses[httplib.ACCEPTED])