I'm awash in cloud accounts

How do I connect to them?
List Servers
openstack \
        --auth-url=https://region-b.geo-1.identity.hpcloudsvc.com:35357/v2.0 \
        --username=mordred@inaugust.com \
        --password=XXXXXX \
        --project-name=mordred@inaugust.com \
        --region-name=region-b.geo-1 \
    server list
          
Well that's silly
Consistent Environment Variables
export OS_AUTH_URL=https://region-b.geo-1.identity.hpcloudsvc.com:35357/v2.0
export OS_USERNAME=mordred@inaugust.com
export OS_PASSWORD=XXXXXXXXXXXXX
export OS_TENANT_NAME=mordred@inaugust.com
export OS_REGION_NAME=region-b.geo-1
          
12 shell script snippet files
ENV processing is in command line tools, not client libraries
ENV processing is just copied everywhere
$ egrep -r 'add_(option|argument).*os-username' openstack/python*client | wc -l
13
          

Pre-existing knowledge

I wrote a library (yay!)

os-client-config

Processes, in this order

Provides vendor defaults

CLOUD_DEFAULTS = dict(
    hp=dict(
        auth_url='https://region-b.geo-1.identity.hpcloudsvc.com:35357/v2.0',
        dns_service_type='hpext:dns',
    ),
    rackspace=dict(
        auth_url='https://identity.api.rackspacecloud.com/v2.0/',
        database_service_type='rax:database',
        image_api_version='2',
    )
)
            

Patches welcome for any cloud

clouds.yaml

clouds:
  mordred:
    cloud: hp
    username: mordred@inaugust.com
    password: XXXXXXXXXX
    project_name: mordred@inaugust.com
    region_name: region-b.geo-1
  monty:
    cloud: https://region-b.geo-1.identity.hpcloudsvc.com:35357/v2.0
    username: monty.taylor@hp.com
    password: XXXXXXXXX
    project_name: monty.taylor@hp.com-default-tenant
    region_name: region-b.geo-1
    dns_service_type: hpext:dns
  rax:
    cloud: rackspace
    username: openstackci
    password: XXXXXXX
    project_id: 610275
    region_name: DFW,ORD,IAD
            

Allows for named clouds

openstack --cloud=mordred server list
            
export OS_CLOUD=mordred
openstack server list
            

Where is it in use?

Where is it?

http://git.openstack.org/stackforge/os-client-config

http://pypi.python.org/pypi/os-client-config

Where is it?

http://git.openstack.org/stackforge/os-client-config

http://pypi.python.org/pypi/os-client-config