From d01c20c8312851268db0243f0716b0b550fef384 Mon Sep 17 00:00:00 2001 From: lucy Date: Wed, 10 Aug 2011 21:50:24 -0700 Subject: [PATCH 1/2] Return full details for rackspace in list_images, if available. Docs[1] suggest that 'status' and 'updated' are always present; 'created', 'progress' and 'serverId' will be [1] - http://docs.rackspace.com/servers/api/v1.0/cs-devguide/content/List_Images-d1e4070.html This is since list_images uses /images/detail. Note that 'serverId' seems to not come through actual RS API responses right now. --- libcloud/compute/drivers/rackspace.py | 10 +++++++--- 1 files changed, 7 insertions(+), 3 deletions(-) diff --git a/libcloud/compute/drivers/rackspace.py b/libcloud/compute/drivers/rackspace.py index c587f58..fca21b3 100644 --- a/libcloud/compute/drivers/rackspace.py +++ b/libcloud/compute/drivers/rackspace.py @@ -565,9 +565,13 @@ class RackspaceNodeDriver(NodeDriver): def _to_image(self, el): i = NodeImage(id=el.get('id'), - name=el.get('name'), - driver=self.connection.driver, - extra={'serverId': el.get('serverId')}) + name=el.get('name'), + driver=self.connection.driver, + extra={'updated': el.get('updated'), + 'created': el.get('created'), + 'status': el.get('status'), + 'serverId': el.get('serverId'), + 'progress': el.get('progress') }) return i def ex_limits(self): -- 1.7.4.4 From 6eb7f4728c5e3537eca54767be5e594637c1f056 Mon Sep 17 00:00:00 2001 From: lucy Date: Wed, 10 Aug 2011 21:53:29 -0700 Subject: [PATCH 2/2] update tests for list_images rackspace extra changes. --- test/compute/test_rackspace.py | 15 +++++++++++++-- 1 files changed, 13 insertions(+), 2 deletions(-) diff --git a/test/compute/test_rackspace.py b/test/compute/test_rackspace.py index a9bae98..4ce654c 100644 --- a/test/compute/test_rackspace.py +++ b/test/compute/test_rackspace.py @@ -97,8 +97,19 @@ class RackspaceTests(unittest.TestCase, TestCaseMixin): def test_list_images(self): ret = self.driver.list_images() - self.assertEqual(ret[10].extra['serverId'], None) - self.assertEqual(ret[11].extra['serverId'], '91221') + expected = {10: {'serverId': None, + 'status': 'ACTIVE', + 'created': '2009-07-20T09:14:37-05:00', + 'updated': '2009-07-20T09:14:37-05:00', + 'progress': None}, + 11: {'serverId': '91221', + 'status': 'ACTIVE', + 'created': '2009-11-29T20:22:09-06:00', + 'updated': '2009-11-29T20:24:08-06:00', + 'progress': '100'}} + for ret_idx, extra in expected.items(): + for key, value in extra.items(): + self.assertEqual(ret[ret_idx].extra[key], value) def test_create_node(self): image = NodeImage(id=11, name='Ubuntu 8.10 (intrepid)', -- 1.7.4.4