This pull request represents a new OpenStack driver based on python-novaclient. There are no tests at this time, so it's not ready to merge. I wanted to spark some discussion on this possibility, which I am very much for. python-novaclient is actually used internally by Rackspace and other OpenStack providers, so this is likely to be extremely well-maintained, plus novaclient already covers a lot of corner cases. To do it from scratch in libcloud results in a great deal of duplication of work and code, and would probably still lag on robustness unless we were to actually tediously crib nearly all of the novaclient logic.
BTW, the first commit collapses the OpenStack 1.0 driver into the Rackspace driver (the only public implementation of OpenStack 1.0), as has been discussed recently on the mailing list and in IRC, resulting in a general consensus that this is a good thing to do. Aside from that, the bit you really want to look at for the novaclient-based driver is *all* in libcloud/compute/drivers/openstack.py. This is a proposed solution for https://issues.apache.org/jira/browse/LIBCLOUD-83 You can merge this Pull Request by running: git pull https://github.com/racker/libcloud nova-client-with-novaclient Or you can view, comment on it, or merge it online at: https://github.com/apache/libcloud/pull/24 -- Commit Summary -- * Remove OpenStack 1.0 support, collapsing into RS. * Beginning of PoC novaclient-based Nova driver. * Pyflakes, shhh. * Allow a subclass to specify API version. * Whoops - use the param, don't fetch the list. * Add list_sizes. * Add list_images. * Add ex_set_password(). * Add ex_set_server_name. * Make _to_node handle no-IPs. * Add create_node(). * Add ex_resize-related methods. * Use resource manager ops to save round-trips. * Add rebuild(). * Skeleton support for undocumented floating IPs. * Add reboot_node(). * Add destroy_node() and ex_get_node(). * Add ex_quotas(). * Add ex_save_image(). * Some discussion comments. * Require python-novaclient in setup.py. -- File Changes -- M libcloud/compute/drivers/openstack.py (806) M libcloud/compute/drivers/rackspace.py (618) M setup.py (11) R test/compute/fixtures/rackspace/v1_slug_flavors_detail.xml (0) R test/compute/fixtures/rackspace/v1_slug_images_detail.xml (0) R test/compute/fixtures/rackspace/v1_slug_images_post.xml (0) R test/compute/fixtures/rackspace/v1_slug_limits.xml (0) R test/compute/fixtures/rackspace/v1_slug_servers.xml (0) R test/compute/fixtures/rackspace/v1_slug_servers_detail.xml (0) R test/compute/fixtures/rackspace/v1_slug_servers_detail_deployment_missing.xml (0) R test/compute/fixtures/rackspace/v1_slug_servers_detail_deployment_pending.xml (0) R test/compute/fixtures/rackspace/v1_slug_servers_detail_deployment_same_uuid.xml (0) R test/compute/fixtures/rackspace/v1_slug_servers_detail_deployment_success.xml (0) R test/compute/fixtures/rackspace/v1_slug_servers_detail_empty.xml (0) R test/compute/fixtures/rackspace/v1_slug_servers_detail_metadata.xml (0) R test/compute/fixtures/rackspace/v1_slug_servers_ips.xml (0) R test/compute/fixtures/rackspace/v1_slug_servers_metadata.xml (0) R test/compute/fixtures/rackspace/v1_slug_shared_ip_group.xml (0) R test/compute/fixtures/rackspace/v1_slug_shared_ip_groups.xml (0) R test/compute/fixtures/rackspace/v1_slug_shared_ip_groups_detail.xml (0) M test/compute/test_deployment.py (2) D test/compute/test_openstack.py (413) M test/compute/test_rackspace.py (386) -- Patch Links -- https://github.com/apache/libcloud/pull/24.patch https://github.com/apache/libcloud/pull/24.diff -- Reply to this email directly or view it on GitHub: https://github.com/apache/libcloud/pull/24
