Python-API

Mit der CycleCloud Python-API können Sie mit der CycleCloud REST-API interagieren, ohne die HTTP-Anforderungen manuell ausführen zu müssen. Um die API-Quellverteilung zu erwerben, navigieren Sie zu /about auf Ihrer CycleCloud-Installation, und klicken Sie auf den Link "Python-API herunterladen" . Sobald Sie über die Quellverteilung verfügen, können pip install Sie sie in Ihre Python-Umgebung aufnehmen und loslegen.

Clientobjekte

Ein Clientobjekt kann mit oder ohne angegebene Konfiguration erstellt werden. Wenn Sie kein Konfigurationswörterbuch angeben, wird automatisch versucht, die Konfiguration aus der standardmäßigen CycleCloud CLI-Ini-Datei (~/.cycle/config.ini) abzurufen.

Die Konfiguration kann als Diktat mit den folgenden Schlüssel-Wert-Paaren bereitgestellt werden:

  • url - erforderlich, die URL der Webschnittstelle zur CycleCloud-Installation
  • username - Erforderlich
  • password - erforderlich, das Nur-Text-Kennwort des Benutzers
  • timeout - die Uhrzeit in Sekunden, bevor ein Timeoutfehler auftritt, wenn versucht wird, eine Verbindung mit dem System herzustellen/zu kommunizieren (standardmäßig 60)
  • verify_certificates - ein boolescher Wert, der angibt, ob die Zertifikatüberprüfung aktiviert werden soll (standardmäßig "True")

Alternativ können diese Werte als Schlüsselwortargumente für den Konstruktor angegeben werden.

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")

Clienteigenschaften

  • session- das Session-Objekt – nur bei Aufrufen der Direct-API verwendet

  • clusters - eine Zuordnung der Clusterobjekte im System, schlüsselt nach Clustername

Clusterobjekte

Ein Clusterobjekt ermöglicht die Steuerung eines bestimmten Clusters in einer CycleCloud-Installation.

from cyclecloud.client import Client
cl1 = Client()

# gets a Cluster object for a cluster named "test-cluster-1" from the client cl1
cluster_obj = cl1.clusters["test-cluster-1"]

# prints the current state of the cluster
print(cluster_obj.get_status().state)

# start up to 5 new cores
cluster_obj.scale_by_cores("execute", 5)

Clustereigenschaften

  • name - der Name des Clusters, auf den dieses Objekt verweist

  • nodes - eine iterierbare Liste der Knoteneinträge, die diesen Cluster umfassen

Clusterfunktionen

  • get_status(nodes=False) – Ruft ein Clusterstatusobjekt des Clusters ab, optional die Knotenliste auffüllen.

  • scale_by_cores(node_array, total_core_count) – Legt das System fest, um das angegebene Knotenarray auf die gewünschte Gesamtkernanzahl zu skalieren. Wenn das Knotenarray bereits mehr als total_core_count Kerne enthält, hat der Aufruf keine Auswirkung.

  • scale_by_nodes(node_array, total_node_count) – Legt das System fest, um das angegebene Knotenarray auf die gewünschte Gesamtknotenanzahl zu skalieren. Wenn das Knotenarray bereits mehr als total_node_count Knoten enthält, hat der Aufruf keine Auswirkung.

Direkte API

Auf die Rest-API kann direkt über die API cyclecloud.api zugegriffen werden und cyclecloud.model direkt aus der REST-API generiert werden. Dazu erstellen Sie einfach ein Clientobjekt und tätigen Aufrufe mithilfe der session darin bereitgestellten Eigenschaft.

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)