Interaktywne uruchamianie komend


Zarządzanie interaktywnymi procesami, pobieranie standardowego wyjścia uruchomionej aplikacji oraz przesyłanie nowych komend do aktywnej aplikacji przy użyciu interfejsu RESTowego.

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/iprocesses
Metoda POST
Parametry zapytania Brak
Ciało żądania

JSON:

{
  "host": [string (wymagane)],
  "command": [string (wymagane)]
  "tag": [string (opcjonalne)]
}

Przykład:

{
  "host": "zeus.cyfronet.pl",
  "command": "bash"
}
  						
Odpowiedź

Kod: 201

Przykład:

{
  "process_id":"25a6b082-7ef0-4ec7-8349-c3beb9b341a4",
  "status":"OK",
  "finished":false,
  "standard_output":null,
  "standard_error":null,
  "error_message":null,
  "tag":null
}
  					
Wystąpienie błędu

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

Przykład:

{
  "process_id":null,
  "status":"ERROR",
  "finished":false,
  "standard_output":null,
  "standard_error":null,
  "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":"zeus.cyfronet.pl", "command":"bash"}' \
--header "Content-Type:application/json" --header "PROXY:$proxy" https://submit.plgrid.pl/api/iprocesses
  								
Uwagi Strumienie wejścia, wyjścia oraz błędu procesu interaktywnego są ograniczone na serwerze rimrock do 1 MB. Proszę upewnić się, że wysyłanie i odbieranie kolejnych części strumieni nie przepełni dostępnych buforów.
URL /api/iprocesses/{process_id}
Metoda GET
Parametry zapytania process_id - Identyfikator procesu (wartość wymagana)
Ciało żądania Brak
Odpowiedź

Kod: 200

Przykład:

{
  "process_id":"25a6b082-7ef0-4ec7-8349-c3beb9b341a4",
  "status":"OK",
  "finished":false,
  "standard_output":"some output",
  "standard_error":null,
  "error_message":null,
  "tag":null
}
  					
Wystąpienie błędu

Wystąpienie błędu: 404 | 500

Przykład:

{
  "process_id":"25a6b082-7ef0-4ec7-8349-c3beb9b341a4",
  "status":"ERROR",
  "finished":false,
  "standard_output":null,
  "standard_error":null,
  "error_message":"Process with given id could not be 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/iprocesses/25a6b082-7ef0-4ec7-8349-c3beb9b341a4
  					
Uwagi Brak
URL /api/iprocesses?tag={tag}
Metoda GET
Parametry zapytania tag - Tag (opcjonalnie)
Ciało żądania Brak
Odpowiedź

Kod: 200

Przykład:

[
  {
    "process_id":"25a6b082-7ef0-4ec7-8349-c3beb9b341a4",
    "status":"OK",
    "finished":false,
    "standard_output":"some output",
    "standard_error":null,
    "error_message":null,
    "tag":null
  },
  {
    "process_id":"905fab54-d0b8-43f4-9e44-7ba7dfc71d74",
    "status":"OK",
    "finished":true,
    "standard_output":"another output",
    "standard_error":null,
    "error_message":null,
    "tag":null
  }
]
  					
Wystąpienie błędu

Wystąpienie błędu: 404 | 500

Przykład:

{
  "process_id":null,
  "status":"ERROR",
  "finished":false,
  "standard_output":null,
  "standard_error":null,
  "error_message":"Given proxy certificate is invalid",
  "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/iprocesses
  					
Uwagi Brak
URL /api/iprocesses/{process_id}
Metoda PUT
Parametry zapytania process_id - Identyfikator procesu (wartość wymagana)
Ciało żądania

JSON:

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

Przykład:

{
  "standard_input": "echo hello"
}
  						
Odpowiedź

Kod: 200

Przykład:

{
  "process_id":"25a6b082-7ef0-4ec7-8349-c3beb9b341a4",
  "status":"OK",
  "finished":false,
  "standard_output":null,
  "standard_error":null,
  "error_message":null,
  "tag":null
}
  					
Wystąpienie błędu

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

Przykład:

{
  "process_id":"25a6b082-7ef0-4ec7-8349-c3beb9b341a4",
  "status":"ERROR",
  "finished":false,
  "standard_output":null,
  "standard_error":null,
  "error_message":"Process with given id could not be 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 '{"standard_input":"echo hello"}' --header "Content-Type:application/json" \
--header "PROXY:$proxy" https://submit.plgrid.pl/api/iprocesses/25a6b082-7ef0-4ec7-8349-c3beb9b341a4
  					
Uwagi Brak