2014年8月18日月曜日

How to use python-swiftclient


このエントリーをはてなブックマークに追加


リファレンスはこのあたり。
http://docs.openstack.org/developer/python-swiftclient/

大体はリファレンスに記載されている。一部サンプルが無くてわかりづらいところをメモ。


準備

$ pip install python-swiftclient python-keystoneclient
pipの場合は、コンパイル時にいくつか依存するパッケージがあるので、OS側であらかじめインストールしておくこと(pip instal して表示されるエラーを見ると何が足りないかわかる)


コネクションオブジェクトの生成

コネクションオブジェクトを作成して、そのオブジェクト経由で操作を行う。オブジェクトにはトークンが必要なので、ずっと使いまわすことはできない(トークンに有効期限があるため)
from swiftclient.client import get_auth
from swiftclient import Connection, ClientException

user_name = 'your username'
password = 'your password'
tenant_name = 'your tenatname'
region_name = 'region name'

url, token = get_auth(auth_url,
                      user_name,
                      password,
                      tenant_name=tenant_name,
                      auth_version=2,
                      # リージョンが1つの場合は指定しなくても良い
                      os_options={'region_name': region_name})

s = Connection(preauthtoken=token,
               preauthurl=.url)


コンテナの操作

# 存在確認
ret = s.head_container('container_name')
存在する場合は、コンテナの属性情報が ret に格納される。存在しない場合は例外。


# 作成(publicコンテナ作成の例)
ret = s.put_container('container_name', headers={'x-container-read':'.r:*,.rlistings'})
headers をつけなければプライベートなコンテナが作成される


ファイルのアップロード

with open('filepath', 'ro') as f:
     ret = s.put_object('container_name', 'upload_file_name', f)
アップロードに成功すると、アップロードしたファイルのETagが ret に格納される。




サンプル
https://github.com/irixjp/openstack-sample-app/blob/v2.0/swift.py

0 件のコメント:

コメントを投稿