1

PythonシェルのXenAPIを使用して、Xencenterからサーバーの簡単なインベントリリスト(ホスト名別)を取得しようとしています。ただし、XenAPIのドキュメントはかなりまばらであるように思われ、さらに学習する必要のあるオブジェクトに対してdir()を実行することさえできません。

私はそれをインストールし、次のように実行しました:

# pip install XenAPI
# python
>>> session = XenAPI.Session("http://myhost")
>>> session.xenapi.login_with_password("myuser", "mypass")

私はここで立ち往生しています。pysphereにすべてのVMをプルする簡単な方法がある場合、XenAPIで同じことを行う方法を理解できません。dir(session)を使用すると、オブジェクトを表示できません。dict()の実装が適切に行われなかったようです。

誰かがこのモジュールの経験がありますか?

4

1 に答える 1

3

例えば:

>>> for opaque_ref, vm in session.xenapi.VM.get_all_records().items():
...     print vm["name_label"]

dir(session)XenAPIの基盤となるプロトコルはXML-RPCであり、XenAPI.Sessionオブジェクトはリクエストをプロキシするだけなので、APIメソッドを取得することはできません。

すべてのクラスのフィールド名とメソッドを含む将来の情報については、多くの包括的なAPIリファレンスがあります。

ライブラリを使用しているため、XenAPIすべてのリクエストにセッション参照を追加したり、結果から値を取得したりしないでください。.get_all_records("session")['Value']ではなく、.get_all_records()。例外を使用して、すべてのXenAPIエラーをキャッチできXenAPI.Failureます。

そして、XenServerオブジェクト表現XenAPIはdictです、はい。

于 2012-08-29T23:51:31.177 に答える