Merge branch '21535-multi-wf-delete'
[arvados.git] / lib / crunchrun / executor.go
index c773febe94dda6b1866cc7e5fb26ce2726750328..308b05cdeb33b529d46564658cdb5c6dcfc8b1af 100644 (file)
@@ -4,9 +4,10 @@
 package crunchrun
 
 import (
+       "context"
        "io"
 
-       "golang.org/x/net/context"
+       "git.arvados.org/arvados.git/sdk/go/arvados"
 )
 
 type bindmount struct {
@@ -15,31 +16,29 @@ 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
@@ -52,12 +51,18 @@ type containerExecutor interface {
        // 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
 }