I wanted to authenticate against OpenStack recently, and had a lot of trouble finding documentation about how to authenticate just by passing arguments (as opposed to by using clouds.yaml or environment variables). Now that I have a working incantation, I figure I should write it down so I can find it again. Its also disappointing the OpenStack documentation doesn’t appear to cover this particularly well…
from keystoneauth1.identity import v3
from keystoneauth1 import session
from openstack import connection
auth = v3.Password(
auth_url='http://kolla.home.stillhq.com:5000',
username='admin',
password='...',
project_name='admin',
user_domain_id='default',
project_domain_id='default')
sess = session.Session(auth=auth)
conn = connection.Connection(session=sess)
print([x.name for x in conn.list_servers()])
This code will authenticate using the arguments provided, and then list all the servers (instances) visible to that user. You’re welcome.