package crunchrun
import (
+ "context"
"io"
- "golang.org/x/net/context"
+ "git.arvados.org/arvados.git/sdk/go/arvados"
)
type bindmount struct {
}
type containerSpec struct {
- Image string
- VCPUs int
- RAM int64
- WorkingDir string
- Env map[string]string
- BindMounts map[string]bindmount
- Command []string
- EnableNetwork bool
- NetworkMode string // docker network mode, normally "default"
- CgroupParent string
- Stdin io.ReadCloser
- Stdout io.WriteCloser
- Stderr io.WriteCloser
+ Image string
+ VCPUs int
+ RAM int64
+ WorkingDir string
+ Env map[string]string
+ BindMounts map[string]bindmount
+ Command []string
+ EnableNetwork bool
+ CUDADeviceCount int
+ NetworkMode string // docker network mode, normally "default"
+ CgroupParent string
+ Stdin io.Reader
+ Stdout io.Writer
+ Stderr io.Writer
}
// containerExecutor is an interface to a container runtime
// (docker/singularity).
type containerExecutor interface {
- // ImageLoaded determines whether the given image is already
- // available to use without calling ImageLoad.
- ImageLoaded(imageID string) bool
-
// ImageLoad loads the image from the given tarball such that
// it can be used to create/start a container.
- LoadImage(filename string) error
+ LoadImage(imageID string, imageTarballPath string, container arvados.Container, keepMount string,
+ containerClient *arvados.Client) error
// Wait for the container process to finish, and return its
// exit code. If applicable, also remove the stopped container
// Start the container
Start() error
- // CID the container will belong to
- CgroupID() string
+ // Process ID of a process in the container. Return 0 if
+ // container is finished or no process has started yet.
+ Pid() int
// Stop the container immediately
Stop() error
// Release resources (temp dirs, stopped containers)
Close()
+
+ // Name and version of runtime engine ("docker 20.10.16", "singularity-ce version 3.9.9")
+ Runtime() string
+
+ GatewayTarget
}