Interface

Interface REST

A busca por job é provida por meio de uma interface REST.

A interface REST está especificada em OpenAPI (swagger) em conjunto com sua documentação:

Nas seções seguintes são apresentados e explicados operadores do parâmetro q para busca de jobs.

Operadores do parâmetro q

Operadores Básico Descrição
== Igual
!= Não igual
=gt= > Maior que
=ge= >= Maior ou igual
=lt= < Menor que
=le= <= Menor ou igual
=in= Pertence
=out= Não Pertence
Operadores de Composição Descrição
; AND lógico
, OR lógico

Pode ser adicionado o caractere * antes ou depois de textos para operador like.

Tipo data/hora

Formatos permitidos na requisição de campos do tipo data/hora:

  • yyyy/MM/ddx
  • yyyy/MM/dd HH:mmx
  • yyyy/MM/dd HH:mm:ssx
  • yyyy/MM/dd HH:mm:ss.SSSx

Onde x é o time zone (obrigatório na requisição) com os seguintes formatos permitidos:

  • -hh
  • -hhmm
  • +hh
  • +hhmm

Observação: o uso de operadores básicos para comparar valores do tipo data/hora considera o formato yyyy/MM/dd HH:mm:ss.SSS ao filtrar.

Time zone padrão da resposta:

  • GMT0

Parâmetros com valor padrão para a busca

  • showParam

    Descrição: Adiciona ao retorno os valores dos parâmetros do algoritmo

    Valor padrão: verdadeiro

  • limit

    Descrição: Define o número de jobs retornados na busca

    Valor padrão: 1000

    Valor máximo permitido: 1000

Exemplos de query RSQL

Buscar job por descrição

  • RSQL: description=="Teste Yade com batch"
  • URL: http://<host>/v1/jobs/history?q=description=="Teste Yade com batch"&offset=0&limit=20&locale=pt_BR

Buscar job por owner

  • RSQL: jobOwner=="adm*"
  • URL: http://<host>/v1/jobs/history?q=jobOwner=="adm*"&offset=0&limit=20&locale=pt_BR

Buscar job por prioridade

  • RSQL: priority==1
  • URL: http://<host>/v1/jobs/history?q=priority==1&offset=0&limit=20&locale=pt_BR

Buscar job por nome do algoritmo

  • RSQL: algorithmName=="Teste_Progresso"
  • URL: http://<host>/v1/jobs/history?q=algorithmName==Teste_Progresso&offset=0&limit=20&locale=pt_BR

Buscar job ordenadas pela data de submissão de modo ascendente

  • RSQL: attr=submissionTime&asc=true
  • URL: http://<host>/v1/jobs/history?offset=0&limit=20&attr=submissionTime&asc=true&locale=pt_BR

Buscar job ordenadas pela data de submissão de modo não ascendente

  • RSQL: attr=submissionTime&asc=false
  • URL: http://<host>/v1/jobs/history?offset=0&limit=20&attr=submissionTime&asc=false&locale=pt_BR

Buscar jobs executados em um determinada máquina e por um determinado dono

  • RSQL: executionMachine==40100;jobOwner=="admin"
  • URL: http://<host>/v1/jobs/history?q=executionMachine==40100;jobOwner=="admin"&offset=0&limit=20&locale=pt_BR

Buscar job com prioridade ou que foram rodadas por um determinado dono

  • RSQL: priority==1,jobOwner=="admin"
  • URL: http://<host>/v1/jobs/history?q=priority==1,jobOwner=="admin"&offset=0&limit=20&locale=pt_BR

Buscar jobs com descrição usando uma expressão regular

  • RSQL: description==*MS2
  • URL: http://<host>/v1/jobs/history?q=(isDeleted==false);(description==*MS2)&offset=0&limit=20&locale=pt_BR

Buscar jobs de um determinado algoritmo e que tenham sido cancelados

  • RSQL: algorithmName=="Yade";exitStatus=="KILLED"
  • Observação: O valor de “exitStatus” precisa ser todo maiúsculo.
  • URL: http://<host>/v1/jobs/history?q=algorithmName=="Yade";exitStatus=="KILLED"&offset=0&limit=20&locale=pt_BR

Buscar jobs que possuam determinado parâmetro

  • RSQL: paramLabel=="Sleeps"
  • URL: http://<host>/v1/jobs/history?q=paramLabel=="Sleeps"&offset=0&limit=20&locale=pt_BR

Buscar jobs que possuam determinado valor para um determinado parâmetro

  • RSQL: (paramLabel=='Sleeps');(paramValue=='3')
  • URL: http://<host>/v1/jobs/history?q=(paramLabel=='Sleeps');(paramValue=='3')&offset=0&limit=20&locale=pt_BR

Buscar jobs que possuam determinados valores para determinado parâmetro

  • RSQL: (paramLabel=='Sleeps');(paramValue=in=('3','1'))
  • URL: http://<host>/v1/jobs/history?q=(paramLabel=='Sleeps');(paramValue=in=('3','1'))&offset=0&limit=20&locale=pt_BR

Buscar jobs que foram submetidos em uma determinada data/hora:

  • RSQL: submissionTime=='2019/06/12 21:24:25.342-0300'

  • URL: http://<host>/v1/jobs/history?q=submissionTime=='2019/06/12 21:24:25.342-0300'&offset=0&limit=20&locale=pt_BR

    • Observação: para fazer requisição via URL o time zone é obrigatório sendo - o caractere para time zone negativo

Buscar jobs que finalizaram no intervalo de duas datas/horas:

  • RSQL: endTime=gt='2019/06/12 21:00+03';endTime=lt='2019/06/12 22:00+03'

  • URL: http://<host>/v1/jobs/history?q=endTime=gt='2019/06/12 21:00%2B03';endTime=lt='2019/06/12 22:00%2B03'&offset=0&limit=20&locale=pt_BR

    • Observação: para fazer requisição via URL o time zone é obrigatório sendo %2B o encode para o caractere + referente ao time zone positivo

Estrutura do Job

No caso do histórico de jobs, o JSON que define a estrutura básica de “jobs” sobre a qual a expressão RSQL é feita é o seguinte:

{
         "jobId":"admi@test.CBNNGZHYE2",
         "groupId":"admi@test.CBNNGZHYE2",
         "projectId":"admin/testeYade",
         "jobOwner":"admin",
         "automaticallyMachineSelection":false,
         "submissionMachines":null,
         "numberOfProcesses":1,
         "numberOfProcessesByMachine":1,
         "submissionTime":"2019-06-12T21:24:25.342",
         "description":"test yade pela web",
         "priority":1,
         "multipleExecution":false,
         "jobType":"ALGORITHM",
         "numberOfAttempts":null,
         "executionMachine":"40100",
         "endTime":"2019-06-12T21:31:20.926",
         "exitCode":0,
         "guiltyNodeId":null,
         "exitStatus":"success",
         "cpuTime":0.0,
         "wallclockTime":412,
         "ramMemory":null,
         "statusHistory":[
            {
               "status":"SCHEDULED",
               "timestamp":"2019-06-12T21:24:25.342"
            },
            {
               "status":"UPLOADING",
               "timestamp":"2019-06-12T21:24:27.334"
            },
            {
               "status":"EXECUTING",
               "timestamp":"2019-06-12T21:24:27.358"
            },
            {
               "status":"DOWNLOADING",
               "timestamp":"2019-06-12T21:31:20.815"
            },
            {
               "status":"FINISHED",
               "timestamp":"2019-06-12T21:31:20.926"
            }
         ],
         "algorithms":[
            {
               "algorithmId":"Yade",
               "algorithmVersion":"5.0.0",
               "algorithmName":"Yade",
               "parameters":[
                  {
                     "id":86,
                     "parameterId":"working_dir",
                     "label":"Working Folder",
                     "type":"INPUT_FILE",
                     "value":[
                        ".:DIRECTORY_TYPE"
                     ]
                  },
                  {
                     "id":87,
                     "parameterId":"input_file",
                     "label":"Script File (.py)",
                     "type":"INPUT_FILE",
                     "value":[
                        "teste/fiveParticles_v2.py:UNKNOWN"
                     ]
                  },
                  {
                     "id":88,
                     "parameterId":"batch_run",
                     "label":"Enable multiple runs",
                     "type":"BOOLEAN",
                     "value":[
                        "false"
                     ]
                  },
                  {
                     "id":89,
                     "parameterId":"batch_file",
                     "label":"Parameter Table File",
                     "type":"INPUT_FILE",
                     "value":[

                     ]
                  },
                  {
                     "id":90,
                     "parameterId":"parallel_computation",
                     "label":"Enable parallel computation",
                     "type":"BOOLEAN",
                     "value":[
                        "true"
                     ]
                  },
                  {
                     "id":91,
                     "parameterId":"number_of_cores",
                     "label":"The number of cores for a job",
                     "type":"INTEGER",
                     "value":[
                        "4"
                     ]
                  }
               ]
            }
         ],
         "flowId":null,
         "flowVersion":null,
         "flowName":null,
         "lastModifiedTime":"2019-06-12T21:31:20.926"
      }

Possíveis valores de status:

  • exitStatus
    • UNKNOWN
    • SUCCESS
    • EXECUTION_ERROR
    • JOB_IDENTIFIER_NOT_FOUND
    • UNEXPECTED_MACHINE_ERROR
    • PROJECT_NOT_FOUND
    • FAILED_SETUP_EXECUTION_ENVIRONMENT
    • NO_PERMISSION
    • NO_MACHINE_AVAILABLE
    • KILLED
    • LOST
    • UNDEFINED
  • jobStatus
    • SCHEDULED
    • INIT
    • UPLOADING
    • QUEUED
    • EXECUTING
    • DOWNLOADING
    • FINISHED
    • UNKNOWN