Author: tomaz
Date: Wed Nov 30 18:05:00 2011
New Revision: 1208595

URL: http://svn.apache.org/viewvc?rev=1208595&view=rev
Log:
Update OpenStack 1.1 driver to comply with the API specs. Need to make another
call to retrieve node name and ip addresses when creating a node,
because the first call only returns an id an the password. Contributed by Dave
King <[email protected]>.

Added:
    
libcloud/trunk/test/compute/fixtures/openstack_v1.1/_servers_26f7fbee_8ce1_4c28_887a_bfe8e4bb10fe.json
    libcloud/trunk/test/compute/fixtures/openstack_v1.1/_servers_create.json
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=1208595&r1=1208594&r2=1208595&view=diff
==============================================================================
--- libcloud/trunk/CHANGES (original)
+++ libcloud/trunk/CHANGES Wed Nov 30 18:05:00 2011
@@ -3,6 +3,11 @@
 Changes with Apache Libcloud in development:
   *) Compute:
 
+     - Update OpenStack 1.1 driver to comply with the API specs. Need to make
+       another call to retrieve node name and ip addresses when creating a 
node,
+       because the first call only returns an id an the password. ; GITHUB-40
+       [Dave King]
+
      - Add ex_node_ids argument to the EC2 driver list_nodes method. ;
        GITHUB-39
        [Suvish Vt]

Modified: libcloud/trunk/libcloud/compute/drivers/openstack.py
URL: 
http://svn.apache.org/viewvc/libcloud/trunk/libcloud/compute/drivers/openstack.py?rev=1208595&r1=1208594&r2=1208595&view=diff
==============================================================================
--- libcloud/trunk/libcloud/compute/drivers/openstack.py (original)
+++ libcloud/trunk/libcloud/compute/drivers/openstack.py Wed Nov 30 18:05:00 
2011
@@ -805,7 +805,12 @@ class OpenStack_1_1_NodeDriver(OpenStack
                                        method='POST',
                                        data={'server': server_params})
 
-        return self._to_node(resp.object['server'])
+        create_response = resp.object['server']
+        server_resp = self.connection.request('/servers/%s' % 
create_response['id'])
+        server_object = server_resp.object['server']
+        server_object['adminPass'] = create_response['adminPass']
+
+        return self._to_node(server_object)
 
     def _to_images(self, obj, ex_only_active):
         images = []

Added: 
libcloud/trunk/test/compute/fixtures/openstack_v1.1/_servers_26f7fbee_8ce1_4c28_887a_bfe8e4bb10fe.json
URL: 
http://svn.apache.org/viewvc/libcloud/trunk/test/compute/fixtures/openstack_v1.1/_servers_26f7fbee_8ce1_4c28_887a_bfe8e4bb10fe.json?rev=1208595&view=auto
==============================================================================
--- 
libcloud/trunk/test/compute/fixtures/openstack_v1.1/_servers_26f7fbee_8ce1_4c28_887a_bfe8e4bb10fe.json
 (added)
+++ 
libcloud/trunk/test/compute/fixtures/openstack_v1.1/_servers_26f7fbee_8ce1_4c28_887a_bfe8e4bb10fe.json
 Wed Nov 30 18:05:00 2011
@@ -0,0 +1,49 @@
+{
+    "server": {
+        "status": "BUILD",
+        "updated": "2011-11-30T16:39:19Z",
+        "hostId": "",
+        "user_id": "reach6",
+        "name": "racktest",
+        "links": [
+            {
+                "href": 
"http://127.0.0.1/v1.1/68/servers/39d04103-984b-4a52-b4ec-ffec452e284c";,
+                "rel": "self"
+            },
+            {
+                "href": 
"http://127.0.0.1/68/servers/39d04103-984b-4a52-b4ec-ffec452e284c";,
+                "rel": "bookmark"
+            }
+        ],
+        "created": "2011-11-30T16:39:18Z",
+        "tenant_id": "68",
+        "image": {
+            "id": "fcf5582a-ad13-4d98-90a6-742116f1793c",
+            "links": [
+                {
+                    "href": 
"http://127.0.0.1/68/images/fcf5582a-ad13-4d98-90a6-742116f1793c";,
+                    "rel": "bookmark"
+                }
+            ]
+        },
+        "addresses": {},
+        "accessIPv4": "",
+        "accessIPv6": "",
+        "key_name": "",
+        "progress": null,
+        "flavor": {
+            "id": "1",
+            "links": [
+                {
+                    "href": "http://127.0.0.1/68/flavors/1";,
+                    "rel": "bookmark"
+                }
+            ]
+        },
+        "config_drive": "",
+        "id": "26f7fbee-8ce1-4c28-887a-bfe8e4bb10fe",
+        "metadata": {
+            "My Server Name" : "Apache1"
+        }
+    }
+}
\ No newline at end of file

Added: libcloud/trunk/test/compute/fixtures/openstack_v1.1/_servers_create.json
URL: 
http://svn.apache.org/viewvc/libcloud/trunk/test/compute/fixtures/openstack_v1.1/_servers_create.json?rev=1208595&view=auto
==============================================================================
--- libcloud/trunk/test/compute/fixtures/openstack_v1.1/_servers_create.json 
(added)
+++ libcloud/trunk/test/compute/fixtures/openstack_v1.1/_servers_create.json 
Wed Nov 30 18:05:00 2011
@@ -0,0 +1,16 @@
+{
+    "server": {
+        "id": "26f7fbee-8ce1-4c28-887a-bfe8e4bb10fe",
+        "links": [
+            {
+                "href": 
"http://127.0.0.1/v1.1/68/servers/26f7fbee-8ce1-4c28-887a-bfe8e4bb10fe";,
+                "rel": "self"
+            },
+            {
+                "href": 
"http://127.0.0.1/68/servers/26f7fbee-8ce1-4c28-887a-bfe8e4bb10fe";,
+                "rel": "bookmark"
+            }
+        ],
+        "adminPass": "racktestvJq7d3"
+    }
+}
\ No newline at end of file

Modified: libcloud/trunk/test/compute/test_openstack.py
URL: 
http://svn.apache.org/viewvc/libcloud/trunk/test/compute/test_openstack.py?rev=1208595&r1=1208594&r2=1208595&view=diff
==============================================================================
--- libcloud/trunk/test/compute/test_openstack.py (original)
+++ libcloud/trunk/test/compute/test_openstack.py Wed Nov 30 18:05:00 2011
@@ -550,9 +550,9 @@ class OpenStack_1_1_Tests(unittest.TestC
         image = NodeImage(id=11, name='Ubuntu 8.10 (intrepid)', 
driver=self.driver)
         size = NodeSize(1, '256 slice', None, None, None, None, 
driver=self.driver)
         node = self.driver.create_node(name='racktest', image=image, size=size)
-        self.assertEqual(node.id, '52415800-8b69-11e0-9b19-734f565bc83b')
-        self.assertEqual(node.name, 'new-server-test')
-        self.assertEqual(node.extra['password'], 'GFf1j9aP')
+        self.assertEqual(node.id, '26f7fbee-8ce1-4c28-887a-bfe8e4bb10fe')
+        self.assertEqual(node.name, 'racktest')
+        self.assertEqual(node.extra['password'], 'racktestvJq7d3')
         self.assertEqual(node.extra['metadata']['My Server Name'], 'Apache1')
 
     def test_destroy_node(self):
@@ -705,7 +705,21 @@ class OpenStack_1_1_MockHttp(MockHttpTes
         return (httplib.OK, body, self.json_content_headers, 
httplib.responses[httplib.OK])
 
     def _v1_1_slug_servers(self, method, url, body, headers):
-        body = self.fixtures.load('_servers.json')
+        if method == "POST":
+            body = self.fixtures.load('_servers_create.json')
+        elif method == "GET":
+            body = self.fixtures.load('_servers.json')
+        else:
+            raise NotImplementedError()
+
+        return (httplib.OK, body, self.json_content_headers, 
httplib.responses[httplib.OK])
+
+    def _v1_1_slug_servers_26f7fbee_8ce1_4c28_887a_bfe8e4bb10fe(self, method, 
url, body, headers):
+        if method == "GET":
+            body = 
self.fixtures.load('_servers_26f7fbee_8ce1_4c28_887a_bfe8e4bb10fe.json')
+        else:
+            raise NotImplementedError()
+
         return (httplib.OK, body, self.json_content_headers, 
httplib.responses[httplib.OK])
 
     def _v1_1_slug_servers_12065_action(self, method, url, body, headers):


Reply via email to