Przejdź do głównej zawartości

Automatyzacja - SDK

CGC SDK umożliwia użytkownikom na konstruowanie pipeline'ów i użycie logiki do zarządzania zasobami.

Informacja

Do połączenia się z platformą wymagany jest prawidłowy kontekst, a uprawnienia telemetryczne muszą być ustawione, aby uniknąć przerwania procesu.

Podstawowe użycie

Tworzenie i usuwanie aplikacji można wykonać w następujący sposób:

Utwórz zasób

import cgc.sdk as cgc
# Utwórz niestandardową aplikację
response_created = cgc.resource.compute_create_custom("name", "image-name:tag", cpu=12, memory=128,
gpu=1, gpu_type="A100")

Argumenty funkcji

Nazwa argumentuWartośćDomyślnieOpisWymagane
namestringNoneNazwa zasobu (compute resource)*
image_namestringNoneRepozytorium publiczne/prywatne z nazwą obrazu i tagiem*
repository_secretstringNoneSekret dostarczony przez zespół CGC dla prywatnego repozytorium
cpuint1Liczba vCPU
memoryint [GB]2RAM w GB
shm_sizeint [GB]0Pamięć współdzielona odcięta od zasobów RAM
gpuint0Liczba GPU
gpu_typestring [A100 | A5000]A5000Typ GPU
volumeslist[]Lista woluminów do zamontowania
volume_full_pathstringNoneŚcieżka, gdzie zostanie zamontowany wolumin
startup_commandstringNoneKomenda startowa, jeśli nie jest określona w obrazie Docker'a
  • node_port_enabled - Flaga wskazująca, czy node port jest włączony, domyślnie ustawiona na False.

Usuń zasób

import cgc.sdk as cgc

# Usuń niestandardową aplikację
response_deleted = cgc.resource.resource_delete("name")

Argumenty funkcji

Nazwa argWartośćDomyślna wartośćOpisWymagane
namestringNoneNazwa zasobu obliczeniowego*

Wyświetl listę uruchomionych i oczekujących aplikacji

import cgc.sdk as cgc
# Pobierz status aplikacji
response_list = cgc.resource.resource_list()

Korzystanie z pętli

Tworzenie i usuwanie aplikacji

Funkcja start_function_loop została wprowadzona w celu wielokrotnego wykonywania funkcji, aż zwróci ona prawidłową odpowiedź z kodem 200. Jeśli funkcja się powiedzie, zwraca ona odpowiedź serwera, w przeciwnym razie zgłasza wyjątek SDKException z code=-1.

Kod

import cgc.sdk as cgc
# Uruchom pętlę, która tworzy niestandardową aplikację, kontynuuj, dopóki aplikacja nie zostanie utworzona
# start_function_loop obsługuje zarówno args, jak i kwargs
try:
cgc.resource.start_function_loop(
    cgc.resource.compute_create_custom, # funkcja do pętli
    False, # nieskończona pętla
    "my-app",
"repository.domain.com/user/image:tag",
    repository_secret="my-secret",
)

# Twój kod do weryfikacji, czy aplikacja jest uruchomiona i w dobrym stanie
# ...
except cgc.exceptions.SDKException as e:
print(e)
print(e.code)

Odpowiedzi

FunkcjaStatusKod odpowiedziWiadomość odpowiedziWyjątek
start_function_loopOK409NoneNone
stop_function_loopOK404NoneNone
start_function_loopError*Response code not 200 after 5 attempts.SDKException
stop_function_loopError*Response code not 200 after 5 attempts.SDKException

Sprawdź, czy aplikacja jest gotowa

Jeśli potrzebujesz tylko sprawdzić, czy aplikacja działa, możesz użyć funkcji resource_ready z sdk.

Kod

import cgc.sdk as cgc
try:
# Utwórz zasób obliczeniowy
response = cgc.resource.compute_create_custom("my-app", "image-name:tag", cpu = 12, memory = 128,
gpu = 1, gpu_type="A100")
# Uruchom pętlę, która sprawdza, czy aplikacja jest uruchomiona
cgc.resource.start_function_loop(cgc.resource.resource_ready, True, "my-app")
# W tym momencie zasób jest gotowy do użycia - co nie oznacza, że twoja usługa w kontenerze jest gotowa
# Twój kod do weryfikacji, czy TWOJA aplikacja działa i jest w dobrym stanie
# ...
except cgc.exceptions.SDKException as e:
print(e)
print(e.code)

Niestandardowe porty aplikacji

Zasób może nadal być w stanie Pending lub Running, gdy funkcja zwraca odpowiedź.

Uwaga

Dodawanie, edycja i usuwanie spowoduje ponowne uruchomienie działającej aplikacji.

Jeśli chcesz dowiedzieć się więcej, odwiedź stronę dokumentacji Niestandardowe porty.

Dodaj niestandardowy port

Kod

cgc.resource.resource_add_port(name="my_app", port_name="api", new_port=3000)

Argumenty funkcji

Nazwa argWartośćDomyślna wartośćOpisWymagane
namestringNoneNazwa zasobu obliczeniowego do edycji*
port_namestringNoneNazwa portu do dodania*
new_portintNoneNumer portu do dodania*
ingressbooleanTrueZaznacz, jeśli port powinien być dostępny z publicznego Internetu

Zaktualizuj niestandardowy port

Kod

cgc.resource.resource_update_port(name="my_app", port_name="api", new_port=2345,ingress=False)

Argumenty funkcji

Nazwa argWartośćDomyślna wartośćOpisWymagane
namestringNoneNazwa zasobu obliczeniowego do edycji*
port_namestringNoneNazwa portu do edycji*
new_portintNoneNumer edytowanego portu*
ingressbooleanTrueZaznacz, jeśli port powinien być dostępny z publicznego Internetu

Usuń niestandardowy port

Kod

cgc.resource.resource_delete_port(name="my_app", port_name="api")

Argumenty funkcji

Nazwa argWartośćDomyślna wartośćOpisWymagane
namestringNoneNazwa zasobu obliczeniowego do edycji*
port_namestringNoneNazwa portu do usunięcia*