[ARVADOS] updated: a8b6688f3613b36204d0d38a241fd154968b2571
Git user
git at public.curoverse.com
Thu Mar 16 21:05:37 EDT 2017
Summary of changes:
services/crunch-run/crunchrun.go | 66 ++++++++++++++++++++++------------------
1 file changed, 36 insertions(+), 30 deletions(-)
via a8b6688f3613b36204d0d38a241fd154968b2571 (commit)
from 5780b53924e346d9b6ed475684f14426b21b18c4 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
commit a8b6688f3613b36204d0d38a241fd154968b2571
Author: radhika <radhika at curoverse.com>
Date: Thu Mar 16 21:05:08 2017 -0400
9132: few more updates to use the new API
diff --git a/services/crunch-run/crunchrun.go b/services/crunch-run/crunchrun.go
index ac82db9..628cfd0 100644
--- a/services/crunch-run/crunchrun.go
+++ b/services/crunch-run/crunchrun.go
@@ -25,8 +25,10 @@ import (
"git.curoverse.com/arvados.git/sdk/go/arvadosclient"
"git.curoverse.com/arvados.git/sdk/go/keepclient"
"git.curoverse.com/arvados.git/sdk/go/manifest"
+
dockertypes "github.com/docker/docker/api/types"
- containertypes "github.com/docker/docker/api/types/container"
+ dockercontainer "github.com/docker/docker/api/types/container"
+ dockernetwork "github.com/docker/docker/api/types/network"
dockerclient "github.com/docker/docker/client"
)
@@ -60,8 +62,8 @@ type ThinDockerClient interface {
ImageInspectWithRaw(ctx context.Context, image string) (dockertypes.ImageInspect, []byte, error)
ImageLoad(ctx context.Context, input io.Reader, quiet bool) (dockertypes.ImageLoadResponse, error)
ImageRemove(ctx context.Context, image string, options dockertypes.ImageRemoveOptions) ([]dockertypes.ImageDeleteResponseItem, error)
- ContainerCreate(ctx context.Context, config *container.Config, hostConfig *container.HostConfig,
- networkingConfig *network.NetworkingConfig, containerName string) (container.ContainerCreateCreatedBody, error)
+ ContainerCreate(ctx context.Context, config *dockercontainer.Config, hostConfig *dockercontainer.HostConfig,
+ networkingConfig *dockernetwork.NetworkingConfig, containerName string) (dockercontainer.ContainerCreateCreatedBody, error)
ContainerStart(ctx context.Context, container string, options dockertypes.ContainerStartOptions) error
ContainerAttach(ctx context.Context, container string, options dockertypes.ContainerAttachOptions) (dockertypes.HijackedResponse, error)
ContainerStop(ctx context.Context, container string, timeout *time.Duration) error
@@ -75,8 +77,8 @@ type ContainerRunner struct {
ArvClient IArvadosClient
Kc IKeepClient
arvados.Container
- ContainerConfig containertypes.Config
- dockerclient.HostConfig
+ ContainerConfig dockercontainer.Config
+ dockercontainer.HostConfig
token string
ContainerID string
ExitCode *int
@@ -144,7 +146,8 @@ func (runner *ContainerRunner) stop() {
}
runner.Cancelled = true
if runner.ContainerID != "" {
- err := runner.Docker.ContainerStop(context.TODO(), runner.ContainerID, 10)
+ timeout := time.Duration(10)
+ err := runner.Docker.ContainerStop(context.TODO(), runner.ContainerID, &(timeout))
if err != nil {
log.Printf("StopContainer failed: %s", err)
}
@@ -185,7 +188,7 @@ func (runner *ContainerRunner) LoadImage() (err error) {
return fmt.Errorf("While creating ManifestFileReader for container image: %v", err)
}
- response, err = runner.Docker.ImageLoad(context.TODO(), readCloser, false)
+ response, err := runner.Docker.ImageLoad(context.TODO(), readCloser, false)
response.Body.Close()
if err != nil {
return fmt.Errorf("While loading container image into Docker: %v", err)
@@ -515,9 +518,8 @@ func (runner *ContainerRunner) AttachStreams() (err error) {
runner.CrunchLog.Print("Attaching container streams")
- var containerReader io.Reader
- containerReader, err = runner.Docker.ContainerAttach(context.TODO(), runner.ContainerID,
- &dockertypes.ContainerAttachOptions{Stream: true, Stdout: true, Stderr: true})
+ response, err := runner.Docker.ContainerAttach(context.TODO(), runner.ContainerID,
+ dockertypes.ContainerAttachOptions{Stream: true, Stdout: true, Stderr: true})
if err != nil {
return fmt.Errorf("While attaching container stdout/stderr streams: %v", err)
}
@@ -551,7 +553,7 @@ func (runner *ContainerRunner) AttachStreams() (err error) {
}
runner.Stderr = NewThrottledLogger(runner.NewLogWriter("stderr"))
- go runner.ProcessDockerAttach(containerReader)
+ go runner.ProcessDockerAttach(response.Reader)
return nil
}
@@ -588,10 +590,10 @@ func (runner *ContainerRunner) CreateContainer() error {
return fmt.Errorf("While creating container: %v", err)
}
runner.ContainerID = createdBody.ID
- runner.HostConfig = dockerclient.HostConfig{
- Binds: runner.Binds,
- CgroupParent: runner.setCgroupParent,
- LogConfig: dockerclient.LogConfig{
+ runner.HostConfig = dockercontainer.HostConfig{
+ Binds: runner.Binds,
+ Cgroup: dockercontainer.CgroupSpec(runner.setCgroupParent),
+ LogConfig: dockercontainer.LogConfig{
Type: "none",
},
}
@@ -602,7 +604,8 @@ func (runner *ContainerRunner) CreateContainer() error {
// StartContainer starts the docker container created by CreateContainer.
func (runner *ContainerRunner) StartContainer() error {
runner.CrunchLog.Printf("Starting Docker container id '%s'", runner.ContainerID)
- err := runner.Docker.StartContainer(runner.ContainerID, &runner.HostConfig)
+ err := runner.Docker.ContainerStart(context.TODO(), runner.ContainerID,
+ dockertypes.ContainerStartOptions{})
if err != nil {
return fmt.Errorf("could not start container: %v", err)
}
@@ -614,21 +617,24 @@ func (runner *ContainerRunner) StartContainer() error {
func (runner *ContainerRunner) WaitFinish() error {
runner.CrunchLog.Print("Waiting for container to finish")
- waitDocker := runner.Docker.Wait(runner.ContainerID)
+ waitDocker, err := runner.Docker.ContainerWait(context.TODO(), runner.ContainerID)
+ if err != nil {
+ return fmt.Errorf("container wait: %v", err)
+ }
+
+ if waitDocker != 0 { // what is the acceptable waitDocker code?
+ runner.CrunchLog.Printf("container wait API status code: %v", waitDocker)
+ code := int(waitDocker)
+ runner.ExitCode = &code
+ }
+
waitMount := runner.ArvMountExit
- for waitDocker != nil {
- select {
- case err := <-waitMount:
- runner.CrunchLog.Printf("arv-mount exited before container finished: %v", err)
- waitMount = nil
- runner.stop()
- case wr := <-waitDocker:
- if wr.Error != nil {
- return fmt.Errorf("While waiting for container to finish: %v", wr.Error)
- }
- runner.ExitCode = &wr.ExitCode
- waitDocker = nil
- }
+ select {
+ case err := <-waitMount:
+ runner.CrunchLog.Printf("arv-mount exited before container finished: %v", err)
+ waitMount = nil
+ runner.stop()
+ default:
}
// wait for stdout/stderr to complete
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list