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éshez
  • username - Szükséges
  • password - kötelező, a felhasználó egyszerű szöveges jelszava
  • timeout - 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álatos

  • clusters - 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 hivatkozik

  • nodes - 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 magot total_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, mint total_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.apicyclecloud.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)