libcloud 用の openstack ドライバーは既に利用可能です。
from libcloud.compute.types import Provider
from libcloud.compute.providers import get_driver
os = get_driver(Provider.OPENSTACK)
params = {'key': 'username', 'ex_force_service_region':'regionOne',
'ex_force_service_name':'nova', 'ex_force_auth_version':'2.0_password',
'ex_force_auth_url':'http://127.0.0.1:5000',
'ex_force_service_type':'compute', 'secret':'password',
'ex_tenant_name':'tenant'}
driver = os(**params)
driver
しかし、libcloud はオブジェクトを作成するだけでは資格情報をチェックしません。代わりに、リクエストが送信されたときにのみ、クレデンシャルが検証されます。内部例外InvalidCredsError
がスローされた場合、資格情報は無効であり、独自の変数が設定される可能性があります。
from libcloud.common.types import InvalidCredsError
validcreds = False
try:
nodes = driver.list_nodes()
if nodes.count >= 0:
validcreds = True
except InvalidCredsError:
print "Invalid credentials"
except Exception as e:
print str(e)
時間の経過とともに変化する可能性があるため、内部変数には依存しませんauth_user_info
。