Zarządzanie zadaniami przy użyciu interfejsu REST, który pozwala uruchomić nowe zadanie używając qsub, monitorować ich status, pobierać wyprodukowane rezultaty, bądź też zatrzymywać (kasować) uruchomione/skończone zadania.
PROXY oraz wartością certyfikatu proxy zakodowanego przy użyciu Base64 (wpierany jest jedynie certyfikat proxy podpisany przez SimpleCA).
| URL | /api/jobs |
|---|---|
| Metoda | POST |
| Parametry zapytania | Brak |
| Ciało żądania |
JSON: {
"host": [string (wymagane)],
"working_directory": [string (opcjonalne)],
"script": [string (wymagane)]
"tag": [string (optionalne)]
}
Uwaga! Domyślnie wartość working_directory jest ustawiana na katalog domowy użytkownika. W rezultacie, jeśli dwa lub więcej zadań zostanie uruchomionych z domyślna wartością zmiennej working_directory wtedy wartość skryptu zadania zostanie nadpisana.
Przykład:
{
"host": "prometheus.cyfronet.pl",
"working_directory": "/people/username/testjob",
"script": "#!/bin/bash\necho hello\nexit 0"
}
|
| Odpowiedź |
Kod: 201 Przykład:
{
"job_id":"50463091.batch.grid.cyf-kr.edu.pl",
"stdout_path":"/stdout/path",
"stderr_path":"/stderr/path",
"status":"QUEUED",
"tag":null
}
|
| Wystąpienie błędu |
Wystąpienie błędu: 408 | 422 | 500 Przykład:
{
"status":"error",
"exit_code":-1,
"standard_output":"whatever was printed before timeout",
"error_output":"",
"error_message":"timeout occurred...",
"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 POST --data '{"host":"prometheus.cyfronet.pl", "script":"#!/bin/bash\n#SBATCH -A {grantid}\necho hello\nexit 0"}' \
--header "Content-Type:application/json" --header "PROXY:$proxy" https://submit.plgrid.pl/api/jobs
curl -k -X POST --data '{"host":"ares.cyfronet.pl", "script":"#!/bin/bash\n#SBATCH -A {grantid}\necho hello\nexit 0"}' \
--header "Content-Type:application/json" --header "PROXY:$proxy" https://submit.plgrid.pl/api/jobs
curl -k -X POST --data '{"host":"athena.cyfronet.pl", "script":"#!/bin/bash\n#SBATCH -A {grantid}\necho hello\nexit 0"}' \
--header "Content-Type:application/json" --header "PROXY:$proxy" https://submit.plgrid.pl/api/jobs
|
| Uwagi | Brak |
| URL | /api/jobs?tag={tag}&format={short}&job_id={id1}&job_id={id2}) |
|---|---|
| Metoda | GET |
| Parametry zapytania |
|
| Ciało żądania | Brak |
| Odpowiedź |
Kod: 200
Uwaga! Informacje o parametrach uruchomienia zadania (atrybuty: nodes, cores, start_time, end_time, wall_time, queue_time) mogą zostać uzupełnione do jednej minuty od zakończenia.
Przykład:
[
{
"job_id":"50463091.batch.grid.cyf-kr.edu.pl",
"stdout_path":"/stdout/path",
"stderr_path":"/stderr/path",
"status":"QUEUED",
"tag":null
}, {
"job_id":"61473291.batch.grid.cyf-kr.edu.pl",
"stdout_path":"/stdout/path",
"stderr_path":"/stderr/path",
"status":"FINISHED",
"tag":null
}, {
"job_id":"34532479.batch.grid.cyf-kr.edu.pl",
"stdout_path":"/stdout/path",
"stderr_path":"/stderr/path",
"status":"FINISHED",
"tag":null,
"nodes": "1",
"cores": "12",
"start_time": "2015-01-07 15:00:11",
"end_time": "2015-01-07 15:01:11",
"wall_time": "00:01:00",
"queue_time": "00:10:00"
}
]
|
| Wystąpienie błędu |
Wystąpienie błędu: 408 | 404 | 500 Przykład:
{
"status": "error",
"exit_code": 0,
"standard_output": "",
"error_output": "",
"error_message": "Job with 1234.batch.grid.cyf-kr.edu.pl not found",
"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/jobs
|
| Uwagi | Brak |
| URL | /api/jobs/{job_id} |
|---|---|
| Metoda | GET |
| Parametry zapytania | job_id - Identyfikator zadania |
| Ciało żądania | Brak |
| Odpowiedź |
Kod: 200
Uwaga! Informacje o parametrach uruchomienia zadania (atrybuty: nodes, cores, start_time, end_time, wall_time, queue_time) mogą zostać uzupełnione do jednej minuty od zakończenia.
Przykład:
{
"job_id":"50463091.batch.grid.cyf-kr.edu.pl",
"stdout_path":"/stdout/path",
"stderr_path":"/stderr/path",
"status":"QUEUED",
"tag":null,
"nodes": "1",
"cores": "12",
"start_time": "2015-01-07 15:00:11",
"end_time": "2015-01-07 15:01:11",
"wall_time": "00:01:00",
"queue_time": "00:10:00"
}
|
| Wystąpienie błędu |
Wystąpienie błędu: 408 | 404 | 500 Przykład:
{
"status": "error",
"exit_code": 0,
"standard_output": "",
"error_output": "",
"error_message": "Job with 1234.batch.grid.cyf-kr.edu.pl not found",
"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/jobs/50463091.batch.grid.cyf-kr.edu.pl
|
| Uwagi | None |
| URL | /api/jobs/{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,
"standard_output": "",
"error_output": "",
"error_message": "Job with 1234.batch.grid.cyf-kr.edu.pl not found",
"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/jobs/50463091.batch.grid.cyf-kr.edu.pl
|
| Uwagi | Brak |
| URL | /api/jobs/{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,
"standard_output": "",
"error_output": "",
"error_message": "Job with 1234.batch.grid.cyf-kr.edu.pl not found",
"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/jobs/50463091.batch.grid.cyf-kr.edu.pl
|
| Uwagi | Brak |