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średniego

  • clusters — 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 obiekt

  • nodes — 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)