elixir-cloud-aai/cwl-WES

Spec compliance for run/task logs

Opened this issue · 1 comments

Is your feature request related to a problem? Please describe.
Tthe WES v1.0.0 specs define a model Log with properties that should be included in the run and task logs of responses to GET /runs/{run_id}:

  Log:
    type: object
    properties:
      name:
        type: string
        description: The task or workflow name
      cmd:
        type: array
        items:
          type: string
        description: The command line that was executed
      start_time:
        type: string
        description: When the command started executing, in ISO 8601 format "%Y-%m-%dT%H:%M:%SZ"
      end_time:
        type: string
        description: When the command stopped executing (completed, failed, or cancelled), in ISO 8601 format "%Y-%m-%dT%H:%M:%SZ"
      stdout:
        type: string
        description: >-
          A URL to retrieve standard output logs of the workflow run or
          task.  This URL may change between status requests, or may
          not be available until the task or workflow has finished
          execution.  Should be available using the same credentials
          used to access the WES endpoint.
      stderr:
        type: string
        description: >-
          A URL to retrieve standard error logs of the workflow run or
          task.  This URL may change between status requests, or may
          not be available until the task or workflow has finished
          execution.  Should be available using the same credentials
          used to access the WES endpoint.
      exit_code:
        type: integer
        format: int32
        description: Exit code of the program
    description: Log and other info

The response model for GET /runs/{run_id} is defined as:

  RunLog:
    type: object
    properties:
      run_id:
        type: string
        description: workflow run ID
      request:
        $ref: '#/definitions/RunRequest'
        description: The original request message used to initiate this execution.
      state:
        $ref: '#/definitions/State'
        description: The state of the run e.g. RUNNING (see State)
      run_log:
        $ref: '#/definitions/Log'
        description: The logs, and other key info like timing and exit code, for the overall run of this workflow.
      task_logs:
        type: array
        items:
          $ref: '#/definitions/Log'
        description: The logs, and other key info like timing and exit code, for each step in the workflow run.
      outputs:
        type: object
        description: The outputs from the workflow run.

Currently, neither the run_log nor the task_logs properties adhere to the model in the specs.

Describe the solution you'd like
Implementation according to the specs should be fairly straight-forward. However, consider also #127 for stdout/stderr.

Describe alternatives you've considered
N/A

Additional context
N/A

Started implementation together with #127