python-keystoneclient の使い方メモ

basic

v2.0 を想定。

from keystoneclient.v2_0 import client
keystone = client.Client(username='USERNAME', password='PASSWORD', auth_url='AUTH_URL')
keystone.tenants.list()

Session

keystoneclient.session を使うと、token が expire した際に自動で再度 token を取得してくれる。

>>> from keystoneclient.auth.identity import v2
>>> from keystoneclient import session
>>> from keystoneclient.v2_0 import client
>>> 
>>> auth = v2.Password(auth_url='AUTH_URL', username='USERNAME', password='PASSWORD', tenant_name='TENANT_NAME')
>>> ss = session.Session(auth=auth)
>>> keystone = client.Client(session=ss)
>>> keystone.tenants.list()

invalidate すると、次回 token を再取得する。

>>> ss.get_token()
u'2255503e65eb415db87c46b461ef010f'
>>> ss.invalidate()
True
>>> ss.get_token()
u'12a8df9e775f4cb7b7efb49ecc34734f'

session は各コンポーネントの client で使用できる。

>>> from novaclient import client
>>> n = client.Client(2, session=ss)
>>> n.servers.list()

Session に渡す認証情報は ID/パスワード だけではなく、token も使用できる。

>>> auth = v2.Token(auth_url='AUTH_URL', token='TOKEN')