CycleCloud Python API を使用すると、HTTP 要求を手動で処理することなく CycleCloud REST API と対話できます。 API ソース配布を取得するには、CycleCloud インストールの /about に移動し、[ Python API のダウンロード ] リンクを選択します。 ソースディストリビューションをダウンロードしたら、 pip install を使用して Python 環境に追加します。
クライアント オブジェクト
Client オブジェクトは、指定した構成を使用するか、指定せずに作成できます。 構成ディクショナリを指定しない場合、Client オブジェクトは既定の CycleCloud CLI ini ファイル (~/.cycle/config.ini) から構成を自動的に取得しようとします。
次のキーと値のペアを持つディクショナリとして構成を指定します。
-
url- 必要な場合は、CycleCloud インストールへの Web インターフェイスの URL -
username- 必須 -
password- 必須、ユーザーのプレーンテキスト パスワード -
timeout- システムに接続またはシステムと通信しようとしたときにタイムアウトが発生するまでの秒数 (既定では 60) -
verify_certificates- 証明書チェックを有効にする必要があるかどうかを示すブール値 (既定では True)
これらの値は、コンストラクターにキーワード引数として指定することもできます。
from cyclecloud.client import Client
# configuration read from ~/.cycle/config.ini
cl1 = Client()
# config provided as dictionary
config = {"url": "http://127.0.0.1:8443",
"username": "admin",
"password": "password",
"timeout": 60,
"verify_certificates": False}
cl2 = Client(config)
# config provided as keyword arguments
cl3 = Client(url="http://127.0.0.1:8443", username="admin", password="password")
クライアントのプロパティ
session- Session オブジェクト - Direct API の呼び出しでのみ使用されますclusters- システム内のクラスター オブジェクトのマップ (クラスター名でキー付け)
クラスター オブジェクト
Cluster オブジェクトを使用すると、CycleCloud インストール内の特定のクラスターを制御できます。
クラスターのプロパティ
name- オブジェクトが参照するクラスターの名前nodes- クラスターのノード レコードを含む反復処理できるリスト
クラスター関数
get_status(nodes=False)- クラスターの クラスター状態 オブジェクトを取得します。 ノード リストを含めることができます。scale_by_cores(node_array, total_core_count)- 指定したノード配列を目的のコア数にスケーリングするようにシステムを設定します。 ノード配列に既にtotal_core_count以上のコアが含まれている場合、呼び出しは無効になります。scale_by_nodes(node_array, total_node_count)- 指定したノード配列を目的の合計ノード数にスケーリングするようにシステムを設定します。 ノード配列に既にtotal_node_countを超えるノードが含まれている場合、呼び出しは無効になります。
ダイレクトAPI
REST API に直接アクセスする場合は、REST API から直接生成される cyclecloud.api および cyclecloud.model の API を使用します。 この API を使用するには、Client オブジェクトを作成し、指定した session プロパティを使用して呼び出しを行います。
from cyclecloud.client import Client
from cyclecloud.api import clusters
cl1 = Client()
# prints the current state of the cluster
response_status, cluster_status = clusters.get_cluster_status(cl1.session, "test-cluster-1", nodes=False)
print(cluster_status.state)