REST - Serwery w chmurze

Listowanie serwerów

Zapytanie

GET /v2/virtual-machines

Zwraca tablicę z listą istniejących serwerów.

Odpowiedź

{  
  "success":true,
  "virtual_machines": [
     {
       "id":"$vm_id",
       "label":"$vm_label",
       "cores": $vm_cpu,
       "ram": $vm_memory,
       "adm": $vm_managed,
       "system": {
           "id": "$system_id",
           "name": "$system_name"
       },
       "cost_per_hour": $vm_cost,
       "state": $vm_state,
       "transfer_used": $vm_transfer,
       "owner": {
           "id": "$owner_id",
           "name": "$owner_name"
       },
       "public_interface": {
           "primary_ip_ipv4address": "$primary_ip",
           "ipv4_addresses": [
               {
                   "id": "$ip_address_id",
                   "ipv4_address": "$ip_address"
               }, { ... }
           ]
       },
       "storage_volumes": [
           {
               "id": "$volume_id",
               "size": $volume_size,
               "system_disk": $volume_is_system
           }, { ... }
       ],
       "zone": {
           "id": "$zone_id",
           "name": "$zone_label"
       },
       "networks": [
           {
               "id": "$network_id",
               "label": "$network_label",
               "mac_address": "$network_mac"
           }, { ... }
       ],
       "groups": [
           {
               "id": "$group_id",
               "name": "$group_name"
           }, { ... }
       ]
     }, 
     { ... }
  ]
}

Zwracane informacje

  • $vm_id (string) - UUID serwera
  • $vm_label (string) - opis serwera
  • $vm_cpu (int) - liczba VCPU przypisanych dla serwera
  • $vm_memory (int) - liczba MB pamięci RAM przypisanych dla serwera
  • $vm_managed (bool) - true jeżeli maszyna jest zarządzana, false jeżeli nie jest
  • $system_id (int) - ID systemu zainstalowanego na dysku systemowym (z /v2/templates)
  • $system_name (string) - nazwa systemu zainstalowanego na dysku systemowym
  • $vm_cost (float) - koszt godzinowy
  • $vm_state (string) - stan serwera. Możliwe wartości:
    • online - maszyna jest włączona
    • offline - maszyna jest wyłączona
    • installing - maszyna jest w trakcie instalacji
    • deleting - maszyna jest w trakcie usuwania
  • $vm_transfer (float) - naliczony transfer wychodzący z publicznego interfejsu sieciowego (w GB)
  • $owner_id (string) - UUID właściciela serwera
  • $owner_name (string) - nazwa właściciela serwera
  • $primary_ip (string) - główny adres IPv4
  • $ip_address_id (string) - UUID adresu sieciowego
  • $ip_address (string) - adres IPv4
  • $volume_id (string) - UUID wolumenu dyskowego
  • $volume_size (int) - wielkosc wolumenu dyskowego (w GB)
  • $volume_is_system (bool) - true jeżeli wolumen jest systemowy, false jeżeli nie
  • $zone_id (string) - UUID strefy dostępności serwera
  • $zone_label (string) - nazwa strefy dostępności serwera
  • $network_id (string) - UUID wirtualnej sieci
  • $network_label (string) - nazwa wirtualnej sieci
  • $network_mac (string) - adres MAC interfejsu podłączonego do wirtualnej sieci
  • $group_id (string) - UUID grupy
  • $group_name (string) - nazwa grupy


Pobieranie informacji o serwerze

Zapytanie

GET /v2/virtual-machines/$VM_ID

Zwraca informacje o pojedynczym serwerze o podanym $VM_ID.

Odpowiedź

{  
  "success":true,
  "virtual_machine": [
     {
       "id":"$vm_id",
       "label":"$vm_label",
       "cores": $vm_cpu,
       "ram": $vm_memory,
       "adm": $vm_managed,
       "system": {
           "id": "$system_id",
           "name": "$system_name"
       },
       "cost_per_hour": $vm_cost,
       "state": $vm_state,
       "transfer_used": $vm_transfer,
       "owner": {
           "id": "$owner_id",
           "name": "$owner_name"
       },
       "public_interface": {
           "primary_ip_ipv4address": "$primary_ip",
           "ipv4_addresses": [
               {
                   "id": "$ip_address_id",
                   "ipv4_address": "$ip_address"
               }, { ... }
           ]
       },
       "storage_volumes": [
           {
               "id": "$volume_id",
               "size": $volume_size,
               "system_disk": $volume_is_system
           }, { ... }
       ],
       "zone": {
           "id": "$zone_id",
           "name": "$zone_label"
       },
       "networks": [
           {
               "id": "$network_id",
               "label": "$network_label",
               "mac_address": "$network_mac"
           }, { ... }
       ],
       "groups": [
           {
               "id": "$group_id",
               "name": "$group_name"
           }, { ... }
       ]
     }, 
     { ... }
  ]
}

Zwracane informacje

  • $vm_id (string) - UUID serwera
  • $vm_label (string) - opis serwera
  • $vm_cpu (int) - liczba VCPU przypisanych dla serwera
  • $vm_memory (int) - liczba MB pamięci RAM przypisanych dla serwera
  • $vm_managed (bool) - true jeżeli maszyna jest zarządzana, false jeżeli nie jest
  • $system_id (int) - ID systemu zainstalowanego na dysku systemowym (z /v2/templates)
  • $system_name (string) - nazwa systemu zainstalowanego na dysku systemowym
  • $vm_cost (float) - koszt godzinowy
  • $vm_state (string) - stan serwera. Możliwe wartości:
    • online - maszyna jest włączona
    • offline - maszyna jest wyłączona
    • installing - maszyna jest w trakcie instalacji
    • deleting - maszyna jest w trakcie usuwania
  • $vm_transfer (float) - naliczony transfer wychodzący z publicznego interfejsu sieciowego (w GB)
  • $owner_id (string) - UUID właściciela serwera
  • $owner_name (string) - nazwa właściciela serwera
  • $primary_ip (string) - główny adres IPv4
  • $ip_address_id (string) - UUID adresu sieciowego
  • $ip_address (string) - adres IPv4
  • $volume_id (string) - UUID wolumenu dyskowego
  • $volume_size (int) - wielkosc wolumenu dyskowego (w GB)
  • $volume_is_system (bool) - true jeżeli wolumen jest systemowy, false jeżeli nie
  • $zone_id (string) - UUID strefy dostępności serwera
  • $zone_label (string) - nazwa strefy dostępności serwera
  • $network_id (string) - UUID wirtualnej sieci
  • $network_label (string) - nazwa wirtualnej sieci
  • $network_mac (string) - adres MAC interfejsu podłączonego do wirtualnej sieci
  • $group_id (string) - UUID grupy
  • $group_name (string) - nazwa grupy


Tworzenie serwera

Zapytanie

PUT /v2/virtual-machines

Dodaje zadanie utworzenia serwera o podanych parametrach.

Zawartość zapytania

{
   "create_vm": {
       "cpus": $cpus,
       "ram": $memory,
       "zone_id": "$zone_id",
       "name": "$name",
       "boot_type": "$boot_type",
       "cdrom": "$iso_name",
       "os": "$template_id",
       "password": "$password",
       "key_id": "$key_id",
       "user_data": "$user_data",
   }
}

Opis parametrów

  • $cpus (int) - liczba VCPU
  • $memory (int) - wielkość pamięci RAM (w MB)
  • $zone_id (string) - UUID strefy dostępności w której ma zostać utworzony serwer
  • $name (string) - nazwa serwera
  • $boot_type (string) - urządzenie z którego wirtualna ma zabootować. Dostępne wartości:
    • image - na systemowym dysku zostanie zainstalowany system z UUID w zmiennej $os
    • cdrom - maszyna zabootuje z obrazu ISO z wirtualnego napędu CDROM
  • $cdrom - nazwa obrazu ISO z którego ma zabootować serwer. Parametr wymagany jeżeli $boot_type == ‘cdrom’
  • $os - ID systemu który ma zostać zainstalowany na dysku systemowym. Parametr wymagany jeżeli $boot_type == ‘image’. Zobacz także: listowanie systemów operacyjnych.
  • $password - hasło przekazane do instalacji, jeżeli $boot_type == ‘image’, a wybrany obraz wspiera ustawianie hasła.
  • $key_id - ID klucza SSH wskazanego do instalacji, jeżeli $boot_type == ‘image’, a wybrany obraz wspiera ustawianie klucza SSH.
  • $user_data - zawartość Cloud-init, jeżeli $boot_type == ‘image’, a wybrany obraz wspiera Cloud-init.

Odpowiedź

{  
  "success":true,
  "virtual_machine": {
      "id": $vm_id
  }
}

Zwracane informacje

  • $vm_id (string) - UUID nowej serwera


Skalowanie serwera

Zapytanie

POST /v2/virtual-machines/$VM_ID/resize

Dodaje zadanie zmiany wielkości serwera o podanym $VM_ID na podaną liczbę VCPU i wielkość pamięci RAM. Jeżeli maszyna jest włączona, jest ona zamykana poprzez żądanie ACPI z maksymalnym czasem oczekiwania $wait_for minut. Jeżeli po $wait_for minutach system się nie wyłączy, maszyna jest wyłączana pomimo to.

Zawartość zapytania

{
   "cores": $cores,
   "ram": $memory,
   "wait_for": $wait_for
}

Opis parametrów

  • $cores (int) - żądana liczba VCPU
  • $memory (int) - żądana wielkość pamięci RAM (w MB)
  • $wait_for (int) - ile minut oczekiwać na wyłączenie serwera. Domyślna wartość: 4
{  
  "success":true
}


Wyłączanie serwera (via ACPI)

Zapytanie

POST /v2/virtual-machines/$VM_ID/shutdown

Dodaje zadanie wyłączenia serwera o podanym $VM_ID. Żądanie wyłączenia jest przekazywane przez ACPI, który wymaga obsługi ze strony systemu operacyjnego serwera, ale daje jej możliwość uporządkowanego zamknięcia usług i systemu. Jeżeli po $wait_for minutach system się nie wyłączy, maszyna jest wyłączana pomimo to.

Zawartość zapytania

{
   "wait_for": $wait_for
}

Opis parametrów

  • $wait_for (int) - ile minut odczekać przed wymuszeniem zamknięcia systemu. Parametr opcjonalny, domyślna wartość: 4

Odpowiedź

{  
  "success":true
}


Restart serwera (via ACPI)

Zapytanie

POST /v2/virtual-machines/$VM_ID/reboot

Dodaje zadanie zrebootowania serwera o podanym $VM_ID. Reboot następuje poprzez ACPI, który wymaga obsługi ze strony systemu operacyjnego serwera.

Odpowiedź

{  
  "success":true
}


Restart serwera (via hardware)

Zapytanie

POST /v2/virtual-machines/$VM_ID/reset

Dodaje zadanie zrebootowania serwera o podanym $VM_ID. Reset następuje poprzez symulacje twardego resetu sprzętowego.

Odpowiedź

{  
  "success":true
}


Uruchomienie konsoli serwera

Zapytanie

POST /v2/virtual-machines/$VM_ID/console

Uruchomienie konsoli maszyny wirtualnej o podanym $VM_ID.

Odpowiedź

{  
  "console": { 
      "port": port, 
      "password": password, 
      "host": host
   }
}


Usuwanie serwera

Zapytanie

DELETE /v2/virtual-machines/$VM_ID

Dodaje zadanie usunięcia serwera o podanym $VM_ID.

Zawartość zapytania

{
   "deleteResources": $delete_resources
}

Opis parametrów

  • $delete_resources (int) - 0 jeżeli dodatkowe zasoby mają zostać odłączone, 1 jeżeli mają zostać skasowane

Odpowiedź

{  
  "success":true
}