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

Reply via email to