Zlecanie zadań na infrastrukturę


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.

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/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://rimrock.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://rimrock.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://rimrock.plgrid.pl/api/jobs
							    
Uwagi Brak
URL /api/jobs?tag={tag}&format={short}&job_id={id1}&job_id={id2})
Metoda GET
Parametry zapytania
  • tag - Tag (opcjonalnie)
  • format - Format (opcjonalnie). Format "short" zwraca jedynie statusy zadań, bez sprawdzania ilości zasobów użytych przez zakończone zadania.
  • job_id - Lista identyfikatorów zadań których status zostanie sprawdzony oraz zwrócony.
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://rimrock.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://rimrock.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://rimrock.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://rimrock.plgrid.pl/api/jobs/50463091.batch.grid.cyf-kr.edu.pl
  					
Uwagi Brak