検索

2.3. タイプの使用

download PDF

ovirtsdk4.types モジュールのクラスは、純粋なデータコンテナーです。ロジックや操作は含まれません。タイプのインスタンスは、自由に作成および変更できます。

インスタンスの作成または変更は、以下で説明するサービスメソッドのいずれかを呼び出して変更が明示的に渡されない限り、サーバー側に影響を与えません。サーバー側での変更は、すでにメモリーに存在するインスタンスに自動的に反映されません。

これらのクラスのコンストラクターには、オプションの引数が複数 (タイプの属性ごとに 1 つずつ) あります。これは、複数のコンストラクターへのネストされた呼び出しを使用して、オブジェクトの作成を簡素化することを目的としています。この例では、仮想マシンのインスタンスを作成し、クラスター名、テンプレート、およびメモリーをバイト単位で指定します。

from ovirtsdk4 import types

vm = types.Vm(
    name='vm1',
    cluster=types.Cluster(
        name='Default'
    ),
    template=types.Template(
        name='mytemplate'
    ),
    memory=1073741824
)

このようにコンストラクターを使用することをお勧めしますが、必須ではありません。コンストラクターの呼び出しでインスタンスを引数を指定せずに作成し、セッターを使用してオブジェクトを段階的に設定することも、両方のアプローチを組み合わせて使用することも可能です。

vm = types.Vm()
vm.name = 'vm1'
vm.cluster = types.Cluster(name='Default')
vm.template = types.Template(name='mytemplate')
vm.memory=1073741824

API の仕様でオブジェクトのリストとして定義されている属性は、Python リストとして実装されます。たとえば、Vm タイプの custom_properties 属性は、CustomProperty タイプのオブジェクトのリストとして定義されます。SDK で属性が使用されている場合、それらは Python リストです。

vm = types.Vm(
    name='vm1',
    custom_properties=[
        types.CustomProperty(...),
        types.CustomProperty(...),
        ...
    ]
)

API で列挙値として定義されている属性は、Python では enum として実装され、Python 3 では enums のネイティブサポート、Python 2.7 では enum34 パッケージのネイティブサポートを使用して実装されます。この例では、Vm タイプのステータス属性は VmStatus enum を使用して定義されています。

if vm.status == types.VmStatus.DOWN:
    ...
elif vm.status == types.VmStatus.IMAGE_LOCKED:
    ....
注記

API 仕様では、XML と JSON に使用されるため、enum タイプの値は小文字で表示されます。しかし、Python の規則では enum 値は大文字になります。

タイプのインスタンスの属性の読み取りは、対応するプロパティーを使用して行われます。

print("vm.name: %s" % vm.name)
print("vm.memory: %s" % vm.memory)
for custom_property in vm.custom_properties:
    ...
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.