Zlecanie zadań za pomocą QCG


Zarządzanie zadaniami gridowymi przy użyciu interfejsu REST poprzez oprogramowanie pośredniczące QosCosGrid, pozwalające 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/qcgjobs
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":"J1435215723375__9256"
}
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/qcgjobs
  					
Uwagi Brak
URL /api/qcgjobs/{job_id}/jobdescription
Metoda GET
Parametry zapytania job_id - Identyfikator zadania
Ciało żądania Brak
Odpowiedź

Kod: 200

Przykład:

<?xml version="1.0" encoding="UTF-8"?>
<qcgJob appId="">
   <task taskId="task">
      <execution type="single">
      <!-- ... -->
      </execution>
   </task>
</qcgJob>
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/qcgjobs/56cd0b82-2db4-4dd7-ad77-4ceb922f9a7a/jobdescription
Uwagi Brak
URL /api/qcgjobs?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":"J1435215723375__9256"
  },
  {
    "status":"RUNNING",
    "job_id":"56cd0b82-2db4-4dd7-ad77-4ceb922f9a7a",
    "native_job_id":"J1435215723375__9256"
  }
]
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/qcgjobs
Uwagi Brak
URL /api/qcgjobs/{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":"J1435215723375__9256"
}
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/qcgjobs/56cd0b82-2db4-4dd7-ad77-4ceb922f9a7a
Uwagi Brak
URL /api/qcgjobs/{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/qcgjobs/56cd0b82-2db4-4dd7-ad77-4ceb922f9a7a/files/result.txt
Uwagi Brak
URL /api/qcgjobs/{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/qcgjobs/56cd0b82-2db4-4dd7-ad77-4ceb922f9a7a
Uwagi Brak
URL /api/qcgjobs/{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/qcgjobs/56cd0b82-2db4-4dd7-ad77-4ceb922f9a7a
Uwagi Brak