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):