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 verwendetclusters
- 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 verweistnodes
- 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 alstotal_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 alstotal_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)