Zlecanie zadań na infrastrukturę gridową


Zarządzanie zadaniami gridowymi przy użyciu interfejsu REST, który pozwala uruchamiać nowe zadania gridowe, monitorować status ich wykonania, pobierać rezultaty, bądź też zatrzymywać (kasować) uruchomione/skończone zadania.

Uwaga! Wszystkie przedstawione poniżej operacje są zabezpieczone. W celu autoryzacji wymagane jest dodanie nagłówka z nazwą PROXY oraz wartością certyfikatu proxy zakodowanego przy użyciu Base64 (wpierany jest jedynie certyfikat proxy podpisany przez SimpleCA).
URL /api/gridjobs/gridproxy/{vo}
Metoda GET
Parametry zapytania vo - Nazwa wirtualnej organizacji
Ciało żądania Brak
Odpowiedź

Kod: 200

Przykład:

-----BEGIN CERTIFICATE-----
...
...
...
-----END CERTIFICATE-----
Wystąpienie błędu

Wystąpienie błędu: 408 | 422 | 500

Przykład:

{
  "status":"error",
  "exit_code":0,
  "error_message":"error message...",
}
Przykładowe wywołanie

Bash (z użyciem komend base64, tr oraz curl)

proxy="`cat {path-to-proxy-file} | base64 | tr -d '\n'`"

curl -k -X GET --header "PROXY:$proxy" https://submit.plgrid.pl/api/gridjobs/gridproxy/vo.plgrid.pl
Uwagi Brak
URL /api/gridjobs
Metoda POST
Parametry zapytania Brak
Ciało żądania

application/x-www-form-urlencoded lub multipart/form-data:

executable=[string (wymagane; automatycznie dodawany do inputSandbox)]
arguments=[string[] (opcjonalne)]
stdOutput=[string (opcjonalne; automatycznie dodawany do outputSandbox)]
stdError=[string (opcjonalne; automatycznie dodawany do outputSandbox)]
candidateHosts=[string[] (opcjonalne)]
outputSandbox=[string[] (opcjonalne)]
files=[file[] (opcjonalne; wszystkie przesłane pliki zostają automatycznie dodane do inputSandbox)]
tag=[string (opcjonalne)]
Odpowiedź

Kod: 201

Przykład:

{
  "status":"RUNNING",
  "job_id":"56cd0b82-2db4-4dd7-ad77-4ceb922f9a7a",
  "native_job_id":"https://lb02.grid.cyf-kr.edu.pl:9000/6UVXM9J-Hwjli2WJSYmIKQ"
}
Wystąpienie błędu

Wystąpienie błędu: 408 | 422 | 500

Przykład:

{
  "status":"error",
  "exit_code":-1,
  "error_message":"error message...",
  "tag":null
}
  					
Przykładowe wywołanie

Bash (z użyciem komend base64, tr oraz curl)

proxy="`cat {path-to-proxy-file} | base64 | tr -d '\n'`"

echo First file contents > in1.txt
echo Second file contents > in2.txt
echo -e '#!/bin/bash\ncat in1.txt in2.txt > result.txt' > run.sh

curl -k -X POST --header "PROXY:$proxy" --form files=@run.sh --form files=@in1.txt --form files=@in2.txt \
--form executable=run.sh --form outputSandbox=result.txt --form stdOutput=out.txt \
--form stdError=error.txt https://submit.plgrid.pl/api/gridjobs
  					
Uwagi Obecnie nie jest możliwe użycie certyfikatu proxy pobranego z portalu PL-Grid i rozszerzonego za pomocą usługi rimrock o wirtualną organizację. Należy używać proxy wygenerowanego za pomocą polecenia voms-proxy-init.
URL /api/gridjobs/{job_id}/jdl
Metoda GET
Parametry zapytania job_id - Identyfikator zadania
Ciało żądania Brak
Odpowiedź

Kod: 200

Przykład:

[
  Type = "Job";
  JobType = "Normal";
  Executable = "run.sh";
  ...
  ...        
]
Wystąpienie błędu

Wystąpienie błędu: 408 | 422 | 500

Przykład:

{
  "status":"error",
  "exit_code":0,
  "error_message":"error message...",
}
Przykładowe wywołanie

Bash (z użyciem komend base64, tr oraz curl)

proxy="`cat {path-to-proxy-file} | base64 | tr -d '\n'`"

curl -k -X GET --header "PROXY:$proxy" https://submit.plgrid.pl/api/gridjobs/56cd0b82-2db4-4dd7-ad77-4ceb922f9a7a/jdl
Uwagi Brak
URL /api/gridjobs?tag={tag}
Metoda GET
Parametry zapytania tag - Tag (opcjonalnie)
Ciało żądania Brak
Odpowiedź

Kod: 200

Przykład:

[
  {
    "status":"RUNNING",
    "job_id":"295a49d3-b261-4acb-a508-fce3e1684494",
    "native_job_id":"https://lb02.grid.cyf-kr.edu.pl:9000/e4QEAZLtYUwTzr1tblH57A"
  },
  {
    "status":"RUNNING",
    "job_id":"56cd0b82-2db4-4dd7-ad77-4ceb922f9a7a",
    "native_job_id":"https://lb02.grid.cyf-kr.edu.pl:9000/6UVXM9J-Hwjli2WJSYmIKQ"
  }
]
Wystąpienie błędu

Wystąpienie błędu: 408 | 404 | 500

Przykład:

{
  "status": "error",
  "exit_code": -1,
  "error_message": "error message...",
  "tag":null
}
Przykładowe wywołanie

Bash (z użyciem komend base64, tr oraz curl)

proxy="`cat {path-to-proxy-file} | base64 | tr -d '\n'`"

curl -k -X GET --header "PROXY:$proxy" https://submit.plgrid.pl/api/gridjobs
Uwagi Brak
URL /api/gridjobs/{job_id}
Metoda GET
Parametry zapytania job_id - Identyfikator zadania
Ciało żądania Brak
Odpowiedź

Kod: 200

Przykład:

{
  "status":"RUNNING",
  "job_id":"56cd0b82-2db4-4dd7-ad77-4ceb922f9a7a",
  "native_job_id":"https://lb02.grid.cyf-kr.edu.pl:9000/6UVXM9J-Hwjli2WJSYmIKQ"
}
Wystąpienie błędu

Wystąpienie błędu: 408 | 404 | 500

Przykład:

{
  "status": "error",
  "exit_code": -1,
  "error_message": "error message...",
  "tag":null
}
Przykładowe wywołanie

Bash (z użyciem komend base64, tr oraz curl)

proxy="`cat {path-to-proxy-file} | base64 | tr -d '\n'`"

curl -k -X GET --header "PROXY:$proxy" https://submit.plgrid.pl/api/gridjobs/56cd0b82-2db4-4dd7-ad77-4ceb922f9a7a
Uwagi Brak
URL /api/gridjobs/{job_id}/files/{file_name}
Metoda GET
Parametry zapytania job_id - Identyfikator zadania
file_name - Ścieżka pliku do pobrania względem sandbox
Ciało żądania Brak
Odpowiedź

Kod: 200

Przykład:

Zawartość pliku
Wystąpienie błędu

Wystąpienie błędu: 408 | 422 | 500

Przykład:

{
  "status":"error",
  "exit_code":0,
  "error_message":"error message...",
}
Przykładowe wywołanie

Bash (z użyciem komend base64, tr oraz curl)

proxy="`cat {path-to-proxy-file} | base64 | tr -d '\n'`"

curl -k -X GET --header "PROXY:$proxy" https://submit.plgrid.pl/api/gridjobs/56cd0b82-2db4-4dd7-ad77-4ceb922f9a7a/files/result.txt
Uwagi Brak
URL /api/gridjobs/{job_id}
Metoda DELETE
Parametry zapytania job_id - Identyfikator zadania
Ciało żądania Brak
Odpowiedź Kod: 204
Wystąpienie błędu

Wystąpienie błędu: 408 | 404 | 500

Przykład:

{
  "status": "error",
  "exit_code": 0,
  "error_message": "error message",
  "tag":null
}
Przykładowe wywołanie

Bash (z użyciem komend base64, tr oraz curl)

proxy="`cat {path-to-proxy-file} | base64 | tr -d '\n'`"

curl -k -X DELETE --header "PROXY:$proxy" https://submit.plgrid.pl/api/gridjobs/56cd0b82-2db4-4dd7-ad77-4ceb922f9a7a
Uwagi Brak
URL /api/gridjobs/{job_id}
Metoda PUT
Parametry zapytania job_id - Identyfikator zadania
Ciało żądania

JSON:

{
  "action": [string (wymagane)]
}

Przykład:

{
  "action": "abort"
}
Odpowiedź Kod: 204
Wystąpienie błędu

Wystąpienie błędu: 408 | 404 | 500

Przykład:

{
  "status": "error",
  "exit_code": 0,
  "error_message": "error message...",
  "tag":null
}
Przykładowe wywołanie

Bash (z użyciem komend base64, tr oraz curl)

proxy="`cat {path-to-proxy-file} | base64 | tr -d '\n'`"

curl -k -X PUT --data '{"action":"abort"}' --header "Content-Type:application/json" \
--header "PROXY:$proxy" https://submit.plgrid.pl/api/gridjobs/56cd0b82-2db4-4dd7-ad77-4ceb922f9a7a
Uwagi Brak