Author: tomaz
Date: Wed Sep 21 08:45:19 2011
New Revision: 1173526

URL: http://svn.apache.org/viewvc?rev=1173526&view=rev
Log:
Add ex_delete_image method to Rackspace driver. Patch has been submitted by 
David
Busby <d dot busby at saiweb dot co dot uk> and is part of GH-27.

Modified:
    libcloud/trunk/libcloud/compute/drivers/openstack.py
    libcloud/trunk/test/compute/test_openstack.py

Modified: libcloud/trunk/libcloud/compute/drivers/openstack.py
URL: 
http://svn.apache.org/viewvc/libcloud/trunk/libcloud/compute/drivers/openstack.py?rev=1173526&r1=1173525&r2=1173526&view=diff
==============================================================================
--- libcloud/trunk/libcloud/compute/drivers/openstack.py (original)
+++ libcloud/trunk/libcloud/compute/drivers/openstack.py Wed Sep 21 08:45:19 
2011
@@ -619,6 +619,16 @@ class OpenStack_1_0_NodeDriver(NodeDrive
                     method="POST",
                     data=ET.tostring(image_elm)).object)
 
+    def ex_delete_image(self, image):
+        """Delete an image for node.
+
+        @keyword    image: the image to be deleted
+        @param      image: L{NodeImage}
+        """
+        uri = '/images/%s' % image.id
+        resp = self.connection.request(uri, method='DELETE')
+        return resp.status == 204
+
     def _to_shared_ip_group(self, el):
         servers_el = self._findall(el, 'servers')
         if servers_el:

Modified: libcloud/trunk/test/compute/test_openstack.py
URL: 
http://svn.apache.org/viewvc/libcloud/trunk/test/compute/test_openstack.py?rev=1173526&r1=1173525&r2=1173526&view=diff
==============================================================================
--- libcloud/trunk/test/compute/test_openstack.py (original)
+++ libcloud/trunk/test/compute/test_openstack.py Wed Sep 21 08:45:19 2011
@@ -194,6 +194,12 @@ class OpenStackTests(unittest.TestCase, 
         self.assertEqual(image.name, "imgtest")
         self.assertEqual(image.id, "12345")
 
+    def test_ex_delete_image(self):
+        image = NodeImage(id=333111, name='Ubuntu 8.10 (intrepid)',
+                          driver=self.driver)
+        ret = self.driver.ex_delete_image(image)
+        self.assertTrue(ret)
+
     def test_ex_list_ip_addresses(self):
         ret = self.driver.ex_list_ip_addresses(node_id=72258)
         self.assertEquals(2, len(ret.public_addresses))
@@ -329,6 +335,13 @@ class OpenStackMockHttp(MockHttpTestCase
         body = self.fixtures.load('v1_slug_servers_detail_metadata.xml')
         return (httplib.OK, body, XML_HEADERS, httplib.responses[httplib.OK])
 
+    def _v1_0_slug_images_333111(self, method, url, body, headers):
+        if method != "DELETE":
+            raise NotImplemented
+        # this is currently used for deletion of an image
+        # as such it should not accept GET/POST
+        return(httplib.NO_CONTENT,"","",httplib.responses[httplib.NO_CONTENT])
+
     def _v1_0_slug_images(self, method, url, body, headers):
         if method != "POST":
             raise NotImplemented


Reply via email to