【OpenStack】 Python SDK コーディング #2

最近はすっかり秋めいてきました。
暑い中の楽しいビールが味わえなくなってくるのはさみしいものです。


さて前回はOpenStackへ接続を行うための初期スクリプトを作成しました。

スクリプトの中にパスワードを直書きにしてしまっていますが、
テスト環境ということで先に進み後ほど直そうかと思います。

今回は作成したスクリプトを実行してみます。

pythonのファイルを実行するには以下のようにすれば実行可能です。

$ python 実行ファイル名.py

スクリプトファイルの文頭に「#!/usr/bin/python」や「#!/usr/bin/env python」
のように書かれている場合はファイルのパーミッションに実行権限を加えることで
スクリプトを直接実行可能です。

$ chmod 550 実行ファイル名.py
$ ./実行ファイル名.py

特に何もエラーが出なければモジュールのインポートは問題なくされていますので
次に進みます。
エラーが出た場合はエラー行数やエラー文字を確認して誤りを修正して下さい。


以下のスクリプトはOpenStackの登録されているユーザのリストの一覧を得るスクリプトです。
open_conn_admin.pyを呼び出すため同じディレクトリに置いてください。

$ cat keystone_userlist.py
#!/usr/bin/python

from open_conn_admin import keystone

for user in keystone.users.list():
        print "-----------"
        print(user.name)
        print(user.id)
        print(user.email)


このスクリプトは管理者であるopen_conn_admin.pyからkeystoneのオブジェクトを
インポートしています。
keystoneのオブジェクトからユーザのリストを取得し、一人づつ情報を出力してます。

ユーザの一覧を取得するには一般(demo)ユーザでは権限がなく失敗するようで管理者のスクリプトを使います。
keystoneとは簡単に言うとユーザのアカウント情報や各サービスのエンドポイント(URL)の情報を持っており、各サービスに情報を提供しています。


コマンドを実行すると以下のような結果が得られればkeystoneの部分に関しては問題無いと言えます。

$ ./keystone_userlist.py
-----------
tester
117537ab3cec4d9494a11e8112dfc1f5
None
-----------
cinder
3c55f0a46e00455e924852d8d5d9c552
cinder@localhost
-----------
swift
54dffaddbc464a9098c1640ba7f2fe75
swift@localhost
-----------
nova
62cceb6f7f444a1597777777cf34b590
nova@localhost
-----------
dummy
7512066e0bad4ab58dc154a714eae4cf
dammy@example.org
-----------
admin
9194cbebe1ff4eb9b6acadc39d9e2b7f
test@test.com
-----------
ceilometer
b660191798424c8c963654aa7bd22377
ceilometer@localhost
-----------
demo
b69e41f4d94f4b3d9a1c14859fe3d20f
None
-----------
glance
df0d05c0c86145a8a0d40b181b9ce648
glance@localhost
-----------
neutron
f96cb2e94eea42808b29c08c956c06ca
neutron@localhost


今回はKeystoneの動作確認となります。