# Przykłady użycia

Ta sekcja zawiera praktyczne przykłady wykorzystania API Oktawave do zarządzania instancjami.

# Maszyny wirtualne

W przypadku maszyn wirtualnych wszystkie opisane operacje są operacjami asynchronicznymi i zwracają zlecenie

# Lista

Aby pobrać listę wszystkich maszyn wirtualnych przypisanych do konta zautoryzowanego użytkownika należy wywołać zasób GET /instances.

# Żądanie

curl -X GET 
--header 'Accept: application/json' 
--header 'Authorization: Bearer 1ca85558f91697248735550dd97ee68a' 
'https://api.oktawave.com/services/instances'

# Odpowiedź

{
  "Items": [
    {
      "Id": 12345,
      "Name": "Oktawave API test instance",
      "CreationDate": "2016-04-27T11:33:38",
      "CreationUser": {
        "Id": 12345
      },
      ...
    },
    ...
  ],
  "Meta": {
    "Total": 5
  }
}

# Tworzenie

Aby utworzyć maszynę wirtualną należy wywołać zasób POST /instances i przekazać do niego wszystkie wymagane parametry:

  • AuthorizationMethodId - typ uwierzytelnienia na maszynie wirtualnej (klucze SSH lub hasło),
  • DiskClass - klasa dysku,
  • DiskSize - rozmiar dysku (od 5 do 300GB),
  • InstanceName - nazwa maszyny wirtualnej,
  • IPAddressId - w przypadku podania zostanie przypisany wybrany adres IP,
  • SubregionId - subregion w którym ma zostać utworzona maszyna wirtualna,
  • TemplateId - szablon, który ma być użyty do uruchomienia maszyny wirtualnej,
  • TypeId - typ maszyny wirtualnej,
  • InstancesCount - liczba tworzonych maszyn wirtualnych (od 1 do 5),

Szablony maszyn wirtualnych można uzyskać wywołując GET /templates - domyślnie API zwróci listę szablonów prywatnych przypisanych do konta, jak i publicznych z Marketu aplikacji.

Wszystkie możliwe do przesłania identyfikatory (np. klasy dysku, typ dysku) znajdziesz w odpowiadających im słownikach.

# Żądanie

curl -X POST 
--header 'Content-Type: application/json' 
--header 'Accept: application/json' 
--header 'Authorization: Bearer 64b342bfa972798f365555204977f19f' -d '{
  "AuthorizationMethodId": 1399,
  "DiskClass": 48,
  "DiskSize": 5,
  "InstanceName": "Oktawave API test",
  "InstancesCount": 1,
  "IPAddressId": 0,
  "SubregionId": 6,
  "TemplateId": 452,
  "TypeId": 1047
}' 'https://api.oktawave.com/services/instances'

# Odpowiedź

{
    "Id": 12345,
    "CreationDate": "2016-07-18T09:05:30",
    "EndDate": null,
    "Status": {
            "Id": 135,
            "Label": "Uruchomiona",
            ...
    },
    "OperationType": {
            "Id": 138,
            "Label": "Tworzenie instancji",
            ...
    },
    ...
    "Progress": 0
}

# Usuwanie

Usuwanie maszyny wirtualnej można wykonać wywołując zasób DELETE /instances/{id}.

# Żądanie

curl -X DELETE 
--header 'Accept: application/json' 
--header 'Authorization: Bearer 1ca85558f9555724873b920dd97ee68a' 
'https://api.oktawave.com/services/instances/37752'

# Odpowiedź

{
  "Id": 12345,
  ...
  "EndDate": null,
  "Status": {
    "Id": 135,
    "Label": "Uruchomiona",
    ...
  },
  "OperationType": {
    "Id": 206,
    "Label": "Usunięcie instancji",
    ...
  },
  ...
  "Progress": 0
}

# Eksport

Operacja eksportu jest operacją asynchroniczną, jednak wyjątkowo nie zwraca zlecenia (podobnie jest z importem). W zamian API zwraca identyfikator eksportu, który zawiera wszystkie potrzebne informacje do zweryfikowania jego prawidłowego wykonania.

# Żądanie

curl -X GET 
--header 'Accept: application/json' 
--header 'Authorization: Bearer 514c574e1ee7e92651375555d403c37' 
'https://api.oktawave.com/services/exports/12345'

# Odpowiedź

{
  "Id": 12345,
  "Name": "export_test",
  "CreationDate": "2016-07-11T10:17:39",
  "StartDate": null,
  "EndDate": null,
  "Status": {
    "Id": 12345,
    "Label": "Oczekujący",
    ...
  },
  "OcsLocation": "api/",
  "TotalSpaceCapacity": 0,
  "Instance": {
    "Id": 12345
  },
  "CreationUser": {
    "Id": 12345
  }
}

# Dyski

Zarządzanie dyskami poprzez API Oktawave pozwala szybko modyfikować przestrzeń i szybkość dysku poprzez jego rozszerzenie czy zmianę Tier. W bardziej wymagających przypadkach jest również możliwe dołączenie dodatkowego dysku o wybranej konfiguracji do istniejącej maszyny wirtualnej.

# Modyfikacja parametrów

Jeśli znasz identyfikator (ID) dysku i chciałbyś zmienić jego Tier lub rozmiar będzie to możliwe poprzez serię zapytań do poszczególnych zasobów. Przykłady wywołań możesz zobaczyć w bocznej ramce.

# Żądanie

curl -X POST 
--header 'Accept: application/json' 
--header 'Authorization: Bearer 13b84fc142c7f0d240b52d32a91d8fd3' 
'https://api.oktawave.com/services/disks/48763/change_tier_ticket?tierId=49'

# Odpowiedź

{
  "Id": 12345,
  "CreationDate": "2016-07-15T12:09:08",
  ...
  "EndDate": null,
  "Status": {
    "Id": 12345,
    "Label": "Uruchomiona",
    ...
  },
  "OperationType": {
    "Id": 12345,
    "Label": "Przenoszenie dysku",
    ...
  },
  "ObjectId": 12345,
  "ObjectType": {
    "Id": 12345,
    "Label": "Dysk",
    ...
  },
  "Progress": 0
}

# Sieć

Za pomocą API Oktawave można dowolnie łączyć maszyny wirtualne w sieci prywatne, jak również zarządzać dodatkowymi interfejsami czy adresami IP.

# IP

Adresy IP dodawane do maszyn wirtualnych są zawsze adresami publicznymi. Adres IP może być zarezerwowany przez użytkownika, a później dowolnie przenoszony pomiędzy maszynami. W sytuacji dodania nowego adresu bez podania jego identyfikatora (ID) jest nadawany losowy adres z puli.

# Żądanie

curl -X POST 
--header 'Accept: application/json' 
--header 'Authorization: Bearer 13b84fc142c7f0d240b52d32a91d8fd3' 
'https://api.oktawave.com/services/instances/37707/attach_ip_ticket'

# Odpowiedź

{
  "Id": 12345,
  "CreationDate": "2016-07-15T12:05:20",
  ...
  "EndDate": null,
  "Status": {
    "Id": 12345,
    "Label": "Uruchomiona",
    ...
  },
  "OperationType": {
    "Id": 12345,
    "Label": "Rekonfiguracja",
    ...
  },
  "ObjectId": 12345,
  "ObjectType": {
    "Id": 12345,
    "Label": "Instancja",
    ...
  },
  "Progress": 0
}

# Sieci OPN

W Oktawave podczas zarządzania maszynami wirtualnymi istnieje możliwość łączenia je w sieci prywatne, czyli OPN (Oktawave Private Network). Ma to na celu ograniczenie komunikacji tylko do wybranych maszyn, bez dostępu z sieci zewnętrznej. Dodanie maszyny wirtualnej do istniejącej sieci polega na wywołaniu zasobu POST /instances/{id}/attach_opn_ticket - jest wtedy do niej dołączany adres prywatny, automatycznie skonfigurowany do działania w wybranej sieci.

# Żądanie

curl -X POST 
--header 'Content-Type: application/json' 
--header 'Accept: application/json' 
--header 'Authorization: Bearer 514c574e1ee7e92651555125d403c37' -d '
{
  "OpnId": 12345
}
' 'https://api.oktawave.com/services/instances/12345/attach_opn_ticket'

# Odpowiedź

{
  "Id": 12345,
  "CreationDate": "2016-07-11T10:40:28",
  "CreationUser": {
    "Id": 12345
  },
  "EndDate": null,
  "Status": {
    "Id": 12345,
    "Label": "Uruchomiona",
    ...
  },
  "OperationType": {
    "Id": 12345,
    "Label": "Rekonfiguracja",
    ...
  },
  "ObjectId": 12345,
  "ObjectType": {
    "Id": 12345,
    "Label": "Instancja",
    ...
  },
  "Progress": 0
}