Dear libcloud community,
I have the following proposal and was curious what people on this list would
think about it.
Problem:
Libcloud is a unified API that makes is possible to connect to a variety of
cloud providers: Openstack-based, EC2, Vcloud, etc. It also supports four main
APIs: compute, storage, load balancers and DNS.
For Compute to work with an OpenStack cloud, you can use the stock Openstack
provider, or in the case of Rackspace, the Rackspace compute driver which
inherits from the base Openstack driver. The idea of the “driver” being
another abstraction on top of the Openstack driver. Rackspace’s driver also
supports their old as well as the next generation Openstack compute. A good way
to understand this would be comparing how one connects: observe the simplicity
of the Rackspace connection:
For Rackspace, all I need is:
cls = get_driver(Provider.RACKSPACE)
driver = cls(‘user', ‘key value', region='ord’)
Versus a stock OpenStack connection:
HPCLOUD_AUTH_URL = \
'https://region-b.geo-1.identity.hpcloudsvc.com:35357/v2.0/tokens'
OpenStack = get_driver(Provider.OPENSTACK)
driver = OpenStack(‘[email protected]', ‘redacted',
ex_force_auth_url=HPCLOUD_AUTH_URL,
ex_force_auth_version='2.0_password',
ex_force_service_region='region-b.geo-1',
ex_tenant_name=‘[email protected]',
ex_force_service_name='Compute’)
Obviously, it’s relatively simple to use the Openstack driver, but the
Rackspace driver demonstrates that it makes it a bit more convenient to
connect. I found in my investigation into a problem with salt-stack and newer
versions of OpenStack Nova a problem I thought originally was libcloud was in
fact just difficulty in getting the connection parameters correct — something
that a subclass such as what the Rackspace driver would do for HP Cloud.
I would envision the HP driver working such as:
cls = get_driver(Provider.HPCLOUD)
driver = cls(‘user', ‘password', region=‘ae1’)
From what I see in using libcloud, the idea is to make connecting and using a
cloud provider as simple as possible and straightforward and this falls right
into line with that concept.
I propose developing this driver. It seems the work would be rather
straightforward and shouldn’t take more than a week of development. I wanted to
get input from others on this list first.
Thank you,
Patrick