Dokumentacja API
Uwaga: wszystkie poniższe operacje wymagają przekazania tzw. certyfikatu proxy użytkownika.
Więcej
informacji na jego temat znajduje się na końcu dokumentacji. W przykładach zakładamy, że znajduje się on w pliku
grid_proxy
w katalogu bieżącym. Certyfikat ten można przekazać przez parametr wywołania, o nazwie
proxy
lub przez nagłówek
(header)
o nazwie
PROXY
.
Obie te możliwości można zobaczyć w przykładach. W tym drugim przypadku treść proxy musi zostać odpowiednio
zakodowana.
Wszystkie poniższe operacje zdalne na serwerze PLGData wykonywane są przy pomocy protokołu HTTPS, poprzez wywołanie jednej z operacji HTTP (np. GET lub POST) na wskazany URL, z przekazaniem wymienionych parametrów.
Ścieżki do folderów i plików podane w przykładach poniżej będą przez serwer rozumiane jako prowadzące do
systemu plików klastra o identyfikatorze
site_key
.
Aktualne wpierane są następujące klastry:
-
Ares
- site_key:
ares
.
Pobieranie listy zawartości folderu
-
GET:
-
https://data.plgrid.pl/list/[site_key]/[folder_path]
proxy
.
Wywołanie operacji zwraca dokument JSON z zawartością wskazanego folderu,
z uwzględnieniem podfolderów i zbiorów ukrytych. Dokument
zawiera listę zbiorów, dla każdego zbioru prezentując następujące informacje:
- rights
-
Lista praw dostępu, w
formacie POSIX
tj.
drwxrwxrwx
ze znakiem-
w miejscu braku danych uprawnień - owner
-
Nazwa użytkownika, który jest posiadaczem zbioru. Dla tego użytkownika działa pierwsza trójka praw dostępu
wymienionych w polu
rights
- group
-
Nazwa grupy systemowej, do której należy zbiór. Dla wszystkich użytkowników należących do tej grupy działa
druga trójka praw dostępu wymienionych w polu
rights
- size
- Wielkość zbioru w bajtach
- modification_date
- Data ostatniej modyfikacji pliku, podana w języku angielskim, w formacie: MMM [D]D HH:mm
- name
- Nazwa zbioru
- is_dir
-
Flaga logiczna informująca, czy zbiór jest folderem czy plikiem. Podobną informację można uzyskać analizując
pierwszą literę wartości pola
rights
{"rights":"drwxr-xr-x","owner":"plguserlogin","group":"plgrid","size":2048,"modification_date":"May 6 18:24","name":"my_folder","is_dir":true}Przykład wywołania operacji z użyciem narzędzia linii komend
curl
curl -X GET https://data.plgrid.pl/list/[site_key]/net/people/plguserlogin/ --data-urlencode proxy="`cat grid_proxy`"Przykład wersji z przekazaniem certyfikatu proxy przez nagłówek wywołania operacji:
curl -X GET https://data.plgrid.pl/list/[site_key]/net/people/plguserlogin/ -H "PROXY:`cat grid_proxy | base64 | tr -d '\n'`"
Pobieranie pliku z klastra
-
GET:
-
https://data.plgrid.pl/download/[site_key]/[file_path]
proxy
.
Opercja uruchamia pobieranie wskazanego pliku z klastra, poprzez strumieniowane łącze szyfrowane. Klient wywołania
operacji jest zobowiązany odpowiednio obsłużyć pobieranie i zapisywanie danych ze strumienia.
Przykład wywołania operacji z użyciem narzędzia linii komend
curl
curl -X GET https://data.plgrid.pl/download/[site_key]/net/people/plguserlogin/graph.png --data-urlencode proxy="`cat grid_proxy`"
Zapisywanie pliku na klaster
-
POST:
-
https://data.plgrid.pl/upload/[site_key]/[target_folder_path]
- file
- Ładowany plik, analogicznie jak w przypadku wysyłania pliku formularzem, w formacie multipart
- proxy
- Zawartość cartyfikatu proxy użytkownika, na rzecz którego wysyłamy plik na klaster
- locale
- Opcjonalny parametr, którego wartość można ustawić na 'en' aby otrzymywać komunikaty zwrotne w języku angielskim
- recursive
- Opcjonalny parametr, którego użycie spowoduje utworzenie docelowego folderu, rekursywnie (tj. z wszystkimi ew. pośrednimi folderami), jeśli wskazany folder docelowy jeszcze nie istnieje na klastrze.
curl
curl -X POST https://data.plgrid.pl/upload/[site_key]/net/people/plguserlogin/zzzz/ -F proxy="`cat grid_proxy`" -F "file=@graph.png"Przykład wersji z przekazaniem certyfikatu proxy przez nagłówek wywołania operacji:
curl -X POST https://data.plgrid.pl/upload/[site_key]/net/people/plguserlogin/zzzz/ -H "PROXY:`cat grid_proxy | base64 | tr -d '\n'`" -F "file=@graph.png"Tu z kolei została użyta alternatywna opcja rekursywnego tworzenia folderów:
curl -X POST https://data.plgrid.pl/upload/[site_key]/net/people/plguserlogin/zzzz/1/2/3/ -F proxy="`cat grid_proxy`" -F "file=@graph.png" -F locale=en -F recursive=true
Tworzenie nowego folderu
-
POST:
-
https://data.plgrid.pl/mkdir/[site_key]/[target_folder_path]
- proxy
- Zawartość cartyfikatu proxy użytkownika, na rzecz którego wykonujemy operację tworzenia folderu
- recursive
- Opcjonalny parametr, którego użycie spowoduje utworzenie docelowego folderu rekursywnie - tj. zostaną utworzone także wszystkie pośrednie nadfoldery wskazane w ścieżce.
curl
curl -X POST https://data.plgrid.pl/mkdir/[site_key]/net/people/plguserlogin/zzz/eeee -F proxy="`cat grid_proxy`"
curl -X POST https://data.plgrid.pl/mkdir/[site_key]/net/people/plguserlogin/zzz/eeee/1/2 -F proxy="`cat grid_proxy`" -F recursive=true
Usuwanie pliku bądź folderu z klastra
-
DELETE:
-
https://data.plgrid.pl/remove/[site_key]/[file_or_folder_path]
- proxy
- Zawartość cartyfikatu proxy użytkownika, na rzecz którego wykonujemy operację kasowania zbioru
- is_dir
-
Parametr ten jest wymagany, a jego wartość powinna być ustawiona na
true
, jeśli chcemy skasować folder. Jest to wymagane ponieważ protokół GridFTP, którego PLGData używa jako warstwy pośredniczącej w operacjach na plikach na klastrze, rozróżna operację kasowania pliku od operacji kasowania folderu. - locale
- Opcjonalny parametr, którego wartość można ustawić na 'en' aby otrzymywać komunikaty zwrotne w języku angielskim
curl
curl -X DELETE https://data.plgrid.pl/remove/[site_key]/net/people/plguserlogin/graph.png -F proxy="`cat grid_proxy`"
curl -X DELETE https://data.plgrid.pl/remove/[site_key]/net/people/plguserlogin/zzz/ -F proxy="`cat grid_proxy`" -F "is_dir=true"
Transfer (kopiowanie) pliku
-
PUT:
https://data.plgrid.pl/transfer/[site_key]/[sourcke_file_path]
- proxy
- Zawartość cartyfikatu proxy użytkownika, na rzecz którego wykonujemy transfer
- destination_path
- Wymagany parametr który powinien być ścieżką do miejsca zapisania kopii pliku. W ścieżce powinna się znaleźć nazwa nowego pliku
- locale
- Opcjonalny parametr, którego wartość można ustawić na 'en' aby otrzymywać komunikaty zwrotne w języku angielskim
curl
curl -X PUT https://data.plgrid.pl/transfer/[site_key]/net/people/plguserlogin/dir1/file.txt -F proxy="`cat grid_proxy`" -F "destination_path=/net/people//plguserlogin/dir2/copied_file.txt"
Certyfikat proxy użytkownika PL-Grid
Certyfikat proxy X509 użytkownika PLGData jest generowany w chwili logowania się do usługi (drugie pole z hasłem). Aby skorzystać z przedstawionego API, trzeba ten certyfikat posiadać np. w postaci pliku, na komputerze, na którym wykonuje się polecenie (bądź kod) komunikujący się z API PLGData.
Najłatwiej ów certyfikat proxy wygenerować komendą:
read -s p && echo $p | ssh -l plguserlogin pro.cyfronet.pl "grid-proxy-init -q -pwstdin && cat /tmp/x509up_u\`id -u\`" > grid_proxy && unset pNależy najpierw podać swój passphrase do klucza prywatnego (właśnie to drugie hasło z ekranu logowania OpenId). Na ekranie nie pojawi się żadne wezwanie aby podać passphrase, ale możesz go wpisać bezpiecznie, wprowadzone hasło będzie ukryte na twoim ekranie. Następnie proszę zaloguj się do swojego konta na Prometeuszu, podając hasło do
plguserlogin
na klastrze.
Po wykonaniu polecenia aktualny certyfikat proxy powinien znajdować się na lokalnym komputerze, w katalogu
bieżącym, w pliku pod nazwą
grid_proxy
.
Będzie on ważny przez kolejnych dwanaście godzin.