Automatyzacja - SDK
CGC SDK umożliwia użytkownikom na konstruowanie pipeline'ów i użycie logiki do zarządzania zasobami.
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 argumentu | Wartość | Domyślnie | Opis | Wymagane |
---|---|---|---|---|
name | string | None | Nazwa zasobu (compute resource) | * |
image_name | string | None | Repozytorium publiczne/prywatne z nazwą obrazu i tagiem | * |
repository_secret | string | None | Sekret dostarczony przez zespół CGC dla prywatnego repozytorium | |
cpu | int | 1 | Liczba vCPU | |
memory | int [GB] | 2 | RAM w GB | |
shm_size | int [GB] | 0 | Pamięć współdzielona odcięta od zasobów RAM | |
gpu | int | 0 | Liczba GPU | |
gpu_type | string [A100 | A5000] | A5000 | Typ GPU | |
volumes | list | [] | Lista woluminów do zamontowania | |
volume_full_path | string | None | Ścieżka, gdzie zostanie zamontowany wolumin | |
startup_command | string | None | Komenda 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 arg | Wartość | Domyślna wartość | Opis | Wymagane |
---|---|---|---|---|
name | string | None | Nazwa 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
Funkcja | Status | Kod odpowiedzi | Wiadomość odpowiedzi | Wyjątek |
---|---|---|---|---|
start_function_loop | OK | 409 | None | None |
stop_function_loop | OK | 404 | None | None |
start_function_loop | Error | * | Response code not 200 after 5 attempts. | SDKException |
stop_function_loop | Error | * | 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ź.
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 arg | Wartość | Domyślna wartość | Opis | Wymagane |
---|---|---|---|---|
name | string | None | Nazwa zasobu obliczeniowego do edycji | * |
port_name | string | None | Nazwa portu do dodania | * |
new_port | int | None | Numer portu do dodania | * |
ingress | boolean | True | Zaznacz, 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 arg | Wartość | Domyślna wartość | Opis | Wymagane |
---|---|---|---|---|
name | string | None | Nazwa zasobu obliczeniowego do edycji | * |
port_name | string | None | Nazwa portu do edycji | * |
new_port | int | None | Numer edytowanego portu | * |
ingress | boolean | True | Zaznacz, 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 arg | Wartość | Domyślna wartość | Opis | Wymagane |
---|---|---|---|---|
name | string | None | Nazwa zasobu obliczeniowego do edycji | * |
port_name | string | None | Nazwa portu do usunięcia | * |