API Oktawave

API Oktawave jest warstwą interfejsu umożliwiającą wszystkim klientom zarządzanie własnymi usługami za pomocą zewnętrznych narzędzi. Pozwala także twórcom aplikacji partnerskich połączenie z systemem Oktawave i stworzenie własnego programu dostępowego.

Z poziomu aplikacji korzystającej z API Oktawave można wykonać wszystkie operacje, które są możliwe w systemie Oktawave w obrębie konta klienta (użytkownika końcowego), a także Partnera (czyli zespołu administracyjnego).Wszystkie usługi, a także dane ich dotyczące utrzymywane są w centrach danych Oktawave, jednak zarówno Klient, jak i Partner mają możliwość zarządzania nimi w sposób zdalny. Rozliczenie Partnera z jego klientami (w tym ustalanie cenników) pozostają całkowicie w jego gestii.

Pełna dokumentacja jest dostępna pod adresem: http://docs.oktawave.com/api/v1.0/.

Możesz też skorzystać z naszego pełnego tutoriala, który pokaże Ci, jak zacząć korzystać z API Oktawave.


Co można zrobić z wykorzystaniem API Oktawave?

Jak wspomniano powyżej, z wykorzystaniem API Oktawave możliwe do wykonania są wszystkie operacje, które może wykonać zarówno klient bezpośrednio, jak i partner na zbiorze swoich klientów. Dotyczy to dwóch poniższych poziomów organizacyjnych.

Poziom Klienta:

  • tworzenie instancji OCI i zarządzanie nimi, w tym konfiguracja, tworzenie snapshotów, podłączenia do zdalnej konsoli, operacje zaplanowane (scheduler), autoscalling,
  • tworzenie współdzielonych dysków wirtualnych i zarządzanie nimi (OVS - Oktawave Volume Storage),
  • tworzenie prywatnych sieci wirtualnych i zarządzanie nimi (OPN - Oktawave Private Network),
  • tworzenie baz danych MySQL oraz PostgreSQL w scenariuszu SaaS i zarządzanie nimi (ORDB - Oktawave Relational Databases),
  • tworzenie kontenerów i konfiguracja load balancingu,
  • tworzenie samodzielnych aplikacji (Applications),
  • konfiguracja oraz dostęp do OCS - Oktawave Cloud Storage.

Poziom Partnera:

  • zarządzanie klientami (tworzenie, konfigurowanie, blokowanie kont, możliwość zalogowania się na konto klienta),
  • obsługa zgłoszeń pochodzących od klientów,
  • wewnętrzna platforma wymiany ogłoszeń, plików, komunikacji z klientami, baza wiedzy.

Jaka jest filozofia komunikacji z Oktawave?

Wywołania metod API Oktawave następują z zewnętrznej aplikacji lub skryptu. API Oktawave ze swojej strony nie inicjuje żadnej komunikacji. Udostępniane metody są różnorakiego typu – mogą realizować zarówno pobranie danych (np. „zwróć nazwy wszystkich instancji należących do Jana Kowalskiego”), jak i wykonywanie operacji (np. „włącz instancję Y”).

Niezależnie od metod autoryzacji i uwierzytelniania na poziomie technicznym API umożliwia operowanie tylko na obiektach, do których dany użytkownik ma uprawnienia (w kontekście którego następuje wywołanie metody API). Przykładowo, użytkownik nie będzie mógł włączyć instancji należącej do innego klienta niż on sam (jeden klient może posiadać wielu użytkowników). Nie będzie mógł też złożyć zlecenia serwisowego, o ile w ramach klienta, do którego należy, nie posiada odpowiedniego uprawnienia.

Zewnętrzna aplikacja lub skrypt na podstawie danych pobranych z API Oktawave wyświetla swój interfejs (np. aplikacja WWW, aplikacja mobilna, CLI) i umożliwia operacje na zwróconych obiektach. Nie ma potrzeby trwałego przechowywania żadnych danych dotyczących usług po stronie aplikacji lub skryptu – wszystkie znajdują się po stronie Oktawave.

Oczywiście, aplikacja, z której korzysta Klient lub Partner, może te dane cache’ować, a także przechowywać dodatkowe informacje, konieczne np. do rozliczeń ze swoimi klientami.


Ogólny opis architektury

API systemu Oktawave udostępnione jest w postaci usług web service według uniwersalnych standardów bazujących na SOAP. Usługi są dostępne po protokole HTTPS, zaś dostęp możliwy jest po uwierzytelnieniu połączenia na bazie autoryzacji HTTP typu basic.

Konto, w ramach którego następuje połączenie, powinno odzwierciedlać kontekst użytkownika aktualnie zalogowanego do zewnętrznej aplikacji. Tylko wówczas możliwe będzie prawidłowa identyfikacja użytkownika po stronie API i zaaplikowanie odpowiednich mechanizmów autoryzujących.

Ważne jest, aby nie realizować metod zarządzających usługami poszczególnych klientów za pomocą konta Partnera. Taki scenariusz przenosi ryzyko właściwego zarządzania uprawnieniami do usług na aplikację Partnera.


Bezpieczeństwo i uwierzytelnianie

Za poufność danych wymienianych przez systemy zewnętrzne z API Oktawave odpowiada warstwa transportowa oparta o SSL. Komunikacja i autoryzacja odbywa się w oparciu o każde poprawne założone konto w serwisie Oktawave.

Nie jest konieczne w żadnym przypadku dodatkowe udostępnienie usługi API, jak i nie jest potrzebne żadne dodatkowe konto o innych przywilejach.

W związku z powyższym zestawienie połączenia powinno nastąpić w kontekście użytkownika zalogowanego do zewnętrznej aplikacji, a nie konta partnerskiego. W tym kontekście wykonywane są wszystkie dalsze operacje po stronie Oktawave.

Mechanizm autoryzacji po stronie API wykorzystuje protokół LDAP bazujący na AD (MS Active Directory) oraz protokół Kerberos. To oznacza, że każde zlecenie zaakceptowane i realizowane przez API wykonywane jest wyłącznie w kontekście użytkownika. który metodę wywołał. Nie są stosowane żadne konta nadrzędne o szerszych uprawnieniach działające w imieniu użytkownika.

API Oktawave nie utrzymuje sesji użytkownika, jest to całkowicie po stronie zewnętrznej aplikacji lub skryptu. API uwierzytelnia tylko pojedyncze wywołania metod w oparciu o kontekst przekazany w warstwie transportowej. API Oktawave można używać jako zewnętrznego mechanizmu autoryzującego dla dowolnej aplikacji.


Zobacz przykład

Poniżej zamieszczone jest przykładowy prosty ciąg wywołań metod API prowadzący do autoryzacji użytkownika (np. wpisującego dane w formatce logowania aplikacji Partnera), wyłączenia wszystkich jego instancji, a następnie utworzenia nowej.

Przykład stworzony jest na bazie języka C#, klasy OktawaveXXXClient w nim występujące są klasami proxy wygenerowanymi przez narzędzie wsdl.exe (wchodzące w skład Microsoft Visual Studio) dla poszczególnych web service’ów wchodzących w skład API Oktawave.


OktawaveCommonClient commonClient = new OktawaveCommonClient();
User user = commonClient.LogonUser(”user_test”, “secretPassword”);

if(user != null)
{
    OktawaveClientsClient clientsClient = new OktawaveClientsClient();

    clientsClient.Credentials.UserName.UserName = “user_test”;
    clientsClient.Credentials.UserName.Password = “secretPassword”;

    VirtualMachineSearchParams searchParams = new VirtualMachineSearchParams();
    searchParams.ClientId = user.Client.ClientId; 
    SearchResultsCollection<VirtualMachineView> machines = clientsClient.GetVirtualMachines(searchParams);

    foreach (VirtualMachineView vm in machines)
    {
        clientsClient.TurnoffVirtualMachine( vm.VirtualMachineId, user.Client.ClientId); 
        clientsClient.CreateVirtualMachineWithSpecificDiskSize( selectedTemplateId, 20, null, “new_virtual_machine”, selectedClass, null, selectedConnectionType, selectedPaymentMethod, user.Client.ClientId, null, Consts.DAL.TemplateType.Machine, null, null);
    }
}

Pliki WSDL

Poniżej zamieszczamy również kilka plików WSDL opisujących protokoły i formaty używane przez API Oktawave do komunikacji.

Dla Klientów:

Dla partnerów: