Story #12917

Users should be able to see if a container failed from the container_request method

Added by Bryan Cosca about 2 years ago. Updated 14 days ago.

Status:
New
Priority:
Normal
Assigned To:
-
Category:
API
Target version:
-
Start date:
Due date:
% Done:

0%

Estimated time:
(Total: 0.00 h)
Story points:
2.0

Description

Users should be able to see the exit code or state=[“Queued”, “Locked”, “Running”, “Cancelled” and “Complete”] from the container_request api method, rather than having to go another layer deeper to the container api method.

Proposed solution

Add a general "include" option to the index (list) method.

include=container includes the contents of the record associated with container_uuid

Can only be used on fields ending in _uuid

A query like this would return:

?include=container

{
  "items": [
    {
      "kind": "arvados#container_request",
      "uuid": "abc-123",
      "container_uuid": "xyz-123" 
      ...
    }
  ],
  "includes": [
    {
      "uuid": "xyz-123",
      "state": "Completed",
      "exit_code": 0,
      ...
    }
  ]
}

Initially we will only adopt this syntax but initially limiting the implementation to only container requests. This should be implemented on the controller side.

If used for anything other than include=container on container_request it should return an API error.

Discussion points for future:

  • selecting fields in the includes
  • Permission enforcement. Permission to read a container is based on permission to read the container_request, but this is not true generally. For example, permission to read a container request doesn't grant permission to read output_uuid.
  • Straightforward to set up a join when the _uuid field points to exactly one record type (only collections, only containers, etc) but more complex when it can point to multiple (owner_uuid, head/tail_uuid on links)

Subtasks

Task #13355: ReviewNewTom Clegg


Related issues

Related to Arvados Workbench 2 - Bug #15672: List of subprocesses limited in process viewResolved12/16/2019

Has duplicate Arvados - Story #13145: Include container status & exit code in container request responseDuplicate

Blocks Arvados - Story #13327: Use new API container_request?include=containerNew

History

#2 Updated by Tom Morris about 2 years ago

  • Target version set to To Be Groomed

#3 Updated by Peter Amstutz about 2 years ago

Suggest adding virtual fields container_state and container_exit_code which have the value of the corresponding fields of the record with container_uuid, or null if no container is assigned.

Alternately, we could add a query parameter which specifies that we want the entire container record embedded in the response.

#4 Updated by Tom Morris almost 2 years ago

  • Subject changed from Users should be able to see if a CR failed from the CR method to Users should be able to see if a container failed from the container_request method

#5 Updated by Tom Clegg almost 2 years ago

IMO, these aren't container_request fields so they shouldn't appear as container_request fields.

Suggest we support an "include container record" flag in container_requests#index and #show requests, and return the whole container record.

Since we're not (yet?) using jsonapi, we need to choose a response format for this. We should use something that can extend to other similar situations, like "include created_by_user record".

#6 Updated by Peter Amstutz almost 2 years ago

  • Description updated (diff)

#7 Updated by Peter Amstutz almost 2 years ago

  • Description updated (diff)

#9 Updated by Peter Amstutz almost 2 years ago

  • Description updated (diff)

#10 Updated by Peter Amstutz almost 2 years ago

  • Description updated (diff)

#11 Updated by Peter Amstutz almost 2 years ago

  • Description updated (diff)

#12 Updated by Tom Morris almost 2 years ago

  • Related to Story #13327: Use new API container_request?include=container added

#13 Updated by Peter Amstutz almost 2 years ago

  • Description updated (diff)
  • Story points set to 2.0

#14 Updated by Peter Amstutz almost 2 years ago

Just one thought, we have wandered a little bit from the original goal of making the API easier for getting container status from container_request. Returing a separate "includes" section takes a similar amount of Python code to interpret as the current approach that requires making a second API call. Embedding the record in each item so that one can can write items0[container][state] is much simpler for the user (ie Bryan).

That said, "includes" is a more general solution that is better suited for other use cases like optimizing Workbench queries and so probably still the one we go with.

#15 Updated by Tom Clegg almost 2 years ago

Perhaps the client library could offer a "join response items" convenience function that assigns includes[x] to items[y][f] for all items[y][f+'_uuid']==includes[x]['uuid']...?

#16 Updated by Tom Morris almost 2 years ago

  • Target version changed from To Be Groomed to 2018-04-25 Sprint

#17 Updated by Tom Morris almost 2 years ago

  • Assigned To set to Peter Amstutz

#18 Updated by Peter Amstutz almost 2 years ago

  • Has duplicate Story #13145: Include container status & exit code in container request response added

#20 Updated by Peter Amstutz almost 2 years ago

  • Target version changed from 2018-04-25 Sprint to 2018-05-09 Sprint

#21 Updated by Tom Morris almost 2 years ago

  • Assigned To deleted (Peter Amstutz)
  • Target version changed from 2018-05-09 Sprint to Arvados Future Sprints

#22 Updated by Tom Morris 3 months ago

  • Related to Bug #15672: List of subprocesses limited in process view added

#23 Updated by Peter Amstutz about 1 month ago

  • Target version changed from Arvados Future Sprints to 2020-02-12 Sprint

#24 Updated by Lucas Di Pentima 28 days ago

  • Assigned To set to Lucas Di Pentima

#25 Updated by Lucas Di Pentima 28 days ago

  • Description updated (diff)

#26 Updated by Lucas Di Pentima 28 days ago

  • Related to deleted (Story #13327: Use new API container_request?include=container)

#27 Updated by Lucas Di Pentima 28 days ago

  • Blocks Story #13327: Use new API container_request?include=container added

#28 Updated by Lucas Di Pentima 20 days ago

  • Status changed from New to In Progress

#30 Updated by Lucas Di Pentima 14 days ago

  • Target version changed from 2020-02-12 Sprint to 2020-02-26 Sprint

#31 Updated by Lucas Di Pentima 14 days ago

  • Target version deleted (2020-02-26 Sprint)
  • Status changed from In Progress to New

#32 Updated by Lucas Di Pentima 14 days ago

  • Assigned To deleted (Lucas Di Pentima)
  • Category set to API

Also available in: Atom PDF