Interfejs API języka Python
Interfejs API języka Python CycleCloud umożliwia interakcję z interfejsem API REST usługi CycleCloud bez konieczności ręcznego wykonywania żądań HTTP. Aby uzyskać dystrybucję źródłową interfejsu API, przejdź do lokalizacji /about w instalacji usługi CycleCloud i kliknij link Pobierz interfejs API języka Python . Po utworzeniu dystrybucji źródłowej możesz pip install
ją w środowisku języka Python i rozpocząć pracę.
Obiekty klienta
Obiekt klienta można skonstruować z określoną konfiguracją lub bez tej konfiguracji. Jeśli nie określisz słownika konfiguracji, automatycznie spróbuje ściągnąć konfigurację z domyślnego pliku ini interfejsu wiersza polecenia usługi CycleCloud (~/.cycle/config.ini).
Konfigurację można podać jako dykt z następującymi parami klucz/wartość:
-
url
- wymagane, adres URL interfejsu internetowego do instalacji CycleCloud -
username
- Wymagane -
password
- wymagane, hasło zwykłego tekstu użytkownika -
timeout
— czas, w sekundach, zanim wystąpi błąd przekroczenia limitu czasu podczas próby nawiązania połączenia/komunikacji z systemem (domyślnie 60) -
verify_certificates
— wartość logiczna wskazująca, czy sprawdzanie certyfikatu powinno być włączone (domyślnie prawda)
Alternatywnie te wartości można podać jako argumenty słów kluczowych konstruktora.
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")
Właściwości klienta
session
— obiekt Sesja — używany tylko podczas wykonywania wywołań do interfejsu API bezpośredniegoclusters
— mapa obiektów klastra w systemie, w kluczu według nazwy klastra
Obiekty klastra
Obiekt klastra umożliwia kontrolę nad określonym klastrem w instalacji CycleCloud.
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)
Właściwości klastra
name
— nazwa klastra, do których odwołuje się ten obiektnodes
— iterowalna lista rekordów węzłów, które składają się na ten klaster
Funkcje klastra
get_status(nodes=False)
— Pobiera obiekt Stan klastra klastra, opcjonalnie wypełnia listę węzłów.scale_by_cores(node_array, total_core_count)
— Ustawia system na skalowanie określonej tablicy węzłów na żądaną łączną liczbę rdzeni. Jeśli tablica węzłów zawiera już więcej niżtotal_core_count
rdzenie, wywołanie nie będzie miało wpływu.scale_by_nodes(node_array, total_node_count)
— Ustawia system na skalowanie określonej tablicy węzłów na żądaną łączną liczbę węzłów. Jeśli tablica węzłów zawiera już więcej niżtotal_node_count
węzły, wywołanie nie będzie miało żadnego wpływu.
Interfejs API bezpośredni
Dostęp do pozostałego interfejsu API można uzyskać w bardziej bezpośredni sposób przy użyciu interfejsu API cyclecloud.api
i cyclecloud.model
generowanego bezpośrednio z interfejsu API REST. W tym celu wystarczy skonstruować obiekt Klienta i wykonywać wywołania przy użyciu podanej session
właściwości.
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)