Rozhraní API pro Python
Rozhraní API CycleCloud Pythonu umožňuje pracovat s rozhraním REST API CycleCloud, aniž byste museli ručně provádět požadavky HTTP. Pokud chcete získat zdrojovou distribuci rozhraní API, přejděte na /about v instalaci CycleCloudu a klikněte na odkaz Stáhnout rozhraní API Pythonu . Jakmile budete mít zdrojová distribuce, můžete pip install
ji do prostředí Pythonu a začít.
Klientské objekty
Objekt klienta lze vytvořit s zadanou konfigurací nebo bez této konfigurace. Pokud nezadáte konfigurační slovník, pokusí se automaticky stáhnout konfiguraci z výchozího souboru Rozhraní příkazového řádku CycleCloud (~/.cycle/config.ini).
Konfiguraci je možné zadat jako diktování s následujícími páry klíč/hodnota:
-
url
- požadovaná adresa URL webového rozhraní k instalaci CycleCloudu -
username
- Požadované -
password
- povinné, heslo uživatele ve formátu prostého textu -
timeout
– doba v sekundách, než dojde k chybě časového limitu při pokusu o připojení nebo komunikaci se systémem (ve výchozím nastavení 60) -
verify_certificates
– logická hodnota označující, jestli má být povolená kontrola certifikátu (ve výchozím nastavení true)
Alternativně lze tyto hodnoty zadat jako argumenty klíčových slov konstruktoru.
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")
Vlastnosti klienta
session
- Objekt relace – používá se pouze při volání rozhraní API Directclusters
– mapa objektů clusteru v systému s klíčem podle názvu clusteru
Objekty clusteru
Objekt clusteru umožňuje kontrolu nad konkrétním clusterem v instalaci CycleCloudu.
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)
Vlastnosti clusteru
name
– název clusteru, na který tento objekt odkazujenodes
– iterovatelný seznam záznamů uzlů, které tvoří tento cluster
Funkce clusteru
get_status(nodes=False)
– Získá objekt stavu clusteru clusteru, volitelně naplnění seznamu uzlů.scale_by_cores(node_array, total_core_count)
– Nastaví systém pro škálování zadaného pole uzlu na požadovaný celkový počet jader. Pokud pole uzlů již obsahuje více nežtotal_core_count
jádra, volání nebude mít žádný vliv.scale_by_nodes(node_array, total_node_count)
– Nastaví systém tak, aby škáluje zadané pole uzlů na požadovaný celkový počet uzlů. Pokud pole uzlů již obsahuje více nežtotal_node_count
uzly, volání nebude mít žádný vliv.
Přímé rozhraní API
K rozhraní REST API můžete přistupovat přesněji pomocí rozhraní API cyclecloud.api
a cyclecloud.model
vygenerovaného přímo z rozhraní REST API. Uděláte to jednoduše tak, že vytvoříte objekt Client a provedete volání pomocí session
vlastnosti poskytnuté na něm.
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)