Story #9428

[SDKs] Port arv-keepdocker to use the docker-py library

Added by Brett Smith over 3 years ago. Updated over 3 years ago.

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

0%

Estimated time:
Story points:
-

Description

Currently arv-keepdocker works by subprocessing the docker CLI tool and parsing the output. Port it to stop doing that, and instead use the docker-py module to talk to the Docker daemon directly over the REST API and get objects back.

Reasons to do this:

  • The CLI has changed interfaces before in ways that break arv-keepdocker. (e.g., #4196) This would be more resilient.
  • The client can specify which version of the API it wants to talk, making it even more resilient as Docker itself gets upgraded (which is often).
  • IPC is always rickety. This would be more resilient to different user environments and enable better error reporting.
  • docker-py is maintained by the Docker team, and we already use it with no major isseus in dockercleaner, so it's a pretty safe dependency.

The branch should only rewire arv-keepdocker internally. You'll also need to declare the dependency in setup.py and run-build-packages.sh. No UI changes should be needed.

History

#1 Updated by Brett Smith over 3 years ago

  • Description updated (diff)

#2 Updated by Brett Smith over 3 years ago

  • Target version set to Arvados Future Sprints

#3 Updated by Brett Smith over 3 years ago

  • Subject changed from [SDKs] [Maybe] Port arv-keepdocker to use the docker-py library to [SDKs] Port arv-keepdocker to use the docker-py library
  • Description updated (diff)

Discussed with Tom. It's not a slam dunk decision but right now the scales seem to tip toward revamping the Python client over rewriting it in Go. If we did the latter, we would have to reimplement all the "find the right Docker image" logic, and come up with patterns and documentation to help people install client software on unsupported distributions, or systems where they don't have root. Now's not a good time for that.

Also available in: Atom PDF