Python API
A CycleCloud Python API segítségével anélkül használhatja a CycleCloud REST API-t, hogy manuálisan kellene végrehajtania a HTTP-kéréseket. Az API-forrásterjesztés beszerzéséhez lépjen a CycleCloud-telepítés /about lapjára , és kattintson a Python API letöltése hivatkozásra. Ha már rendelkezik a forrásterjesztési lehetőségével, a Python-környezetbe is bejuthat, és megkezdheti pip install
az első lépéseket.
Ügyfélobjektumok
Az ügyfélobjektumok konfigurációval vagy anélkül is létrehozhatók. Ha nem ad meg konfigurációs szótárt, a rendszer automatikusan megkísérli lekérni a konfigurációt az alapértelmezett CycleCloud CLI ini fájlból (~/.cycle/config.ini).
A konfiguráció a következő kulcs-érték párokkal rendelkező diktálásként adható meg:
url
- szükséges, a webes felület URL-címe a CycleCloud-telepítéshezusername
- Szükségespassword
- kötelező, a felhasználó egyszerű szöveges jelszavatimeout
- az időtúllépési hiba bekövetkezése előtt másodpercben, amikor csatlakozni próbál vagy kommunikálni próbál a rendszerrel (alapértelmezés szerint 60)verify_certificates
– logikai érték, amely azt jelzi, hogy engedélyezni kell-e a tanúsítványellenőrzést (alapértelmezés szerint igaz)
Alternatív megoldásként ezek az értékek a konstruktor kulcsszóargumentumaként is megadhatóak.
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")
Ügyféltulajdonságok
session
- a munkamenet-objektum – csak a Közvetlen API-ra irányuló hívásokhoz használatosclusters
- a rendszerben lévő fürtobjektumok térképe a fürt neve alapján
Fürtobjektumok
A Fürtobjektumok lehetővé teszik egy adott fürt vezérlését egy CycleCloud-telepítésben.
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)
Fürttulajdonságok
name
– annak a fürtnek a neve, amelyre az objektum hivatkoziknodes
- a fürtöt alkotó csomópontrekordok iteráló listája
Fürtfüggvények
get_status(nodes=False)
– Lekéri a fürt fürtállapot-objektumát , opcionálisan feltöltve a csomópontlistát is.scale_by_cores(node_array, total_core_count)
– Úgy állítja be a rendszert, hogy a megadott csomóponttömböt a kívánt teljes magszámra skálázza. Ha a csomóponttömb már több magottotal_core_count
tartalmaz, akkor a hívásnak nincs hatása.scale_by_nodes(node_array, total_node_count)
– Beállítja, hogy a rendszer a megadott csomóponttömböt a kívánt teljes csomópontszámra skálázza. Ha a csomóponttömb már több csomópontot tartalmaz, minttotal_node_count
a csomópontok, a hívásnak nincs hatása.
Közvetlen API
A rest API közvetlenebb módon érhető el az API cyclecloud.api
cyclecloud.model
használatával, amely közvetlenül a REST API-ból jön létre. Ehhez egyszerűen létre kell hoznia egy ügyfélobjektumot, és hívásokat kell kezdeményeznie a session
rajta megadott tulajdonság használatával.
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)