Description of problem: I had openstack-nova-2011.3-14.fc16.noarch and did a yum update. This installed: Jan 20 16:47:13 Updated: openstack-nova-2011.3.1-0.4.10818.fc16.noarch This new version causes deltacloud to print parse errors. The old version (2011.3-14) works properly. to reproduce, run deltacloudd as follows: [sdake@beast ~]$ deltacloudd -i openstack -P http://localhost:8774 open a web browser to http://127.0.0.1:/3001 click instances Type your username in the user field and project name in the password field. Version-Release number of selected component (if applicable): openstack-nova-2011.3.1-0.4.10818.fc16.noarch How reproducible: 100% Steps to Reproduce: 1. see above 2. 3. Actual results: deltacloud fails with nova update Expected results: deltacloud doesn't fail with nova update Additional info:
Thanks for the report (In reply to comment #0) > This new version causes deltacloud to print parse errors. Could you include the error messages here?
Too disruptive to change versions back and forth. It will be obvious from running the reproducer.
$ curl -ik -H 'X-Auth-User: admin' -H 'X-Auth-Key: admin' http://127.0.0.1:8774/v1.0/ HTTP/1.1 204 No Content Content-Length: 0 X-Auth-Token: admin:admin X-Server-Management-Url: http://127.0.0.1:8774/v1.0/admin X-Storage-Url: X-Cdn-Management-Url: Content-Type: text/plain; charset=UTF-8 Date: Mon, 23 Jan 2012 11:18:46 GMT $ curl -ik -H 'Accept: application/json' -H 'X-Auth-Token: admin:admin' http://localhost:8774/v1.0/admin/servers/detail HTTP/1.1 404 Not Found Content-Length: 52 Content-Type: text/plain; charset=UTF-8 Date: Mon, 23 Jan 2012 11:20:24 GMT 404 Not Found The resource could not be found. So let's try python-novaclient to see what it does... >>> import novaclient >>> from novaclient.v1_1 import client >>> import logging >>> ch = logging.StreamHandler() >>> novaclient.client._logger.setLevel(logging.DEBUG) >>> novaclient.client._logger.addHandler(ch) >>> nt = client.Client("admin", "admin", "admin", "http://127.0.0.1:8774/v1.0/") >>> nt.servers.list() REQ: curl -i http://127.0.0.1:8774/v1.0/ -X GET -H "X-Auth-Project-Id: admin" -H "X-Auth-Key: admin" -H "X-Auth-User: admin" -H "User-Agent: python-novaclient" RESP:{'status': '204', 'content-length': '0', 'x-auth-token': 'admin:admin', 'x-cdn-management-url': '', 'x-server-management-url': 'http://127.0.0.1:8774/v1.0/admin', 'date': 'Mon, 23 Jan 2012 11:36:13 GMT', 'x-storage-url': '', 'content-type': 'text/plain; charset=UTF-8'} REQ: curl -i http://127.0.0.1:8774/v1.0/admin/servers/detail?fresh=1327318573.81 -X GET -H "X-Auth-Project-Id: admin" -H "User-Agent: python-novaclient" -H "X-Auth-Token: admin:admin" RESP:{'date': 'Mon, 23 Jan 2012 11:36:13 GMT', 'status': '404', 'content-length': '52', 'content-type': 'text/plain; charset=UTF-8'} Drats, same thing. So let's try v1.1 instead of 1.0 >>> nt = client.Client("admin", "admin", "admin", "http://127.0.0.1:8774/v1.1/") >>> nt.servers.list() REQ: curl -i http://127.0.0.1:8774/v1.1/ -X GET -H "X-Auth-Project-Id: admin" -H "X-Auth-Key: admin" -H "X-Auth-User: admin" -H "User-Agent: python-novaclient" RESP:{'status': '204', 'content-length': '0', 'x-auth-token': 'admin:admin', 'x-cdn-management-url': '', 'x-server-management-url': 'http://127.0.0.1:8774/v1.1/admin', 'date': 'Mon, 23 Jan 2012 11:43:58 GMT', 'x-storage-url': '', 'content-type': 'text/plain; charset=UTF-8'} REQ: curl -i http://127.0.0.1:8774/v1.1/admin/servers/detail?fresh=1327319038.61 -X GET -H "X-Auth-Project-Id: admin" -H "User-Agent: python-novaclient" -H "X-Auth-Token: admin:admin" RESP:{'date': 'Mon, 23 Jan 2012 11:43:58 GMT', 'status': '200', 'content-length': '3291', 'content-type': 'application/json', 'content-location': 'http://127.0.0.1:8774/v1.1/admin/servers/detail?fresh=1327319038.61'} So that's it. V1.0 is not working, while V1.1 is OK... $ curl -ik -H 'Accept: application/json' -H 'X-Auth-Token: admin:admin' http://localhost:8774/v1.1/admin/servers/detail
Thanks Pádraig It looks like the v1.0 API isn't intended to be scoped under a project? Compare: class APIRouterV10(APIRouter): ... to: class APIRouterV11(APIRouter): def _mapper(self): return ProjectMapper()
One thing that may or may not be helpful: Deltacloud uses "v1.0" of the rackspace servers ruby bindings (https://github.com/rackspace/ruby-cloudservers). I would expect it should use the v1.1 bindings (see https://github.com/rackspace/ruby-openstack-compute) but deltacloud doesn't do this today. Is that mandatory with 3.1 of nova? Regards -steve
Yep the bug is V1.0 specific and introduced upstream last october. https://bugs.launchpad.net/nova/+bug/920497 I'm sending a patch upstream now.
The openstack Essex release (to be part of Fedora 17), will no longer support v1.0 API. I've added a deltacloud upgrade task: https://issues.apache.org/jira/browse/DTACLOUD-130
openstack-nova-2011.3.1-2.fc16 has been submitted as an update for Fedora 16. https://admin.fedoraproject.org/updates/openstack-nova-2011.3.1-2.fc16
openstack-nova-2011.3.1-2.el6 has been submitted as an update for Fedora EPEL 6. https://admin.fedoraproject.org/updates/openstack-nova-2011.3.1-2.el6
Package openstack-nova-2011.3.1-2.fc16: * should fix your issue, * was pushed to the Fedora 16 testing repository, * should be available at your local mirror within two days. Update it with: # su -c 'yum update --enablerepo=updates-testing openstack-nova-2011.3.1-2.fc16' as soon as you are able to. Please go to the following url: https://admin.fedoraproject.org/updates/FEDORA-2012-0870/openstack-nova-2011.3.1-2.fc16 then log in and leave karma (feedback).
openstack-nova-2011.3.1-2.fc16 has been pushed to the Fedora 16 stable repository. If problems still persist, please make note of it in this bug report.
verified fixed.
openstack-nova-2011.3.1-2.el6 has been pushed to the Fedora EPEL 6 stable repository. If problems still persist, please make note of it in this bug report.