[ARVADOS] updated: 2.1.0-1718-g58ea9370f
Git user
git at public.arvados.org
Mon Dec 13 19:24:12 UTC 2021
Summary of changes:
lib/crunchrun/docker.go | 6 +++++-
lib/crunchrun/docker_test.go | 33 +++++++++++++++++++++++++++++++++
2 files changed, 38 insertions(+), 1 deletion(-)
via 58ea9370fa7b38382dfa9eea4c42a616e0a699f3 (commit)
from 87a18ef2c05487c4330e6fb6ce6c7934f6bea5a6 (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 58ea9370fa7b38382dfa9eea4c42a616e0a699f3
Author: Tom Clegg <tom at curii.com>
Date: Mon Dec 13 14:23:53 2021 -0500
12630: Test docker container config setup.
Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tom at curii.com>
diff --git a/lib/crunchrun/docker.go b/lib/crunchrun/docker.go
index c64ff83da..ab00273ef 100644
--- a/lib/crunchrun/docker.go
+++ b/lib/crunchrun/docker.go
@@ -71,7 +71,7 @@ func (e *dockerExecutor) LoadImage(imageID string, imageTarballPath string, cont
return nil
}
-func (e *dockerExecutor) Create(spec containerSpec) error {
+func (e *dockerExecutor) config(spec containerSpec) (dockercontainer.Config, dockercontainer.HostConfig) {
e.logf("Creating Docker container")
cfg := dockercontainer.Config{
Image: spec.Image,
@@ -123,7 +123,11 @@ func (e *dockerExecutor) Create(spec containerSpec) error {
if spec.EnableNetwork {
hostCfg.NetworkMode = dockercontainer.NetworkMode(spec.NetworkMode)
}
+ return cfg, hostCfg
+}
+func (e *dockerExecutor) Create(spec containerSpec) error {
+ cfg, hostCfg := e.config(spec)
created, err := e.dockerclient.ContainerCreate(context.TODO(), &cfg, &hostCfg, nil, e.containerUUID)
if err != nil {
return fmt.Errorf("While creating container: %v", err)
diff --git a/lib/crunchrun/docker_test.go b/lib/crunchrun/docker_test.go
index 28eb59546..9a1573193 100644
--- a/lib/crunchrun/docker_test.go
+++ b/lib/crunchrun/docker_test.go
@@ -8,6 +8,7 @@ import (
"os/exec"
"time"
+ dockercontainer "github.com/docker/docker/api/types/container"
. "gopkg.in/check.v1"
)
@@ -29,3 +30,35 @@ func (s *dockerSuite) SetUpSuite(c *C) {
c.Assert(err, IsNil)
}
}
+
+var _ = Suite(&dockerStubSuite{})
+
+// dockerStubSuite tests don't really connect to the docker service,
+// so we can run them even if docker is not installed.
+type dockerStubSuite struct{}
+
+func (s *dockerStubSuite) TestDockerContainerConfig(c *C) {
+ e, err := newDockerExecutor("zzzzz-zzzzz-zzzzzzzzzzzzzzz", c.Logf, time.Second/2)
+ c.Assert(err, IsNil)
+ cfg, hostCfg := e.config(containerSpec{
+ VCPUs: 4,
+ RAM: 123123123,
+ WorkingDir: "/WorkingDir",
+ Env: map[string]string{"FOO": "bar"},
+ BindMounts: map[string]bindmount{"/mnt": {HostPath: "/hostpath", ReadOnly: true}},
+ EnableNetwork: false,
+ CUDADeviceCount: 3,
+ })
+ c.Check(cfg.WorkingDir, Equals, "/WorkingDir")
+ c.Check(cfg.Env, DeepEquals, []string{"FOO=bar"})
+ c.Check(hostCfg.NetworkMode, Equals, dockercontainer.NetworkMode("none"))
+ c.Check(hostCfg.Resources.NanoCPUs, Equals, int64(4000000000))
+ c.Check(hostCfg.Resources.Memory, Equals, int64(123123123))
+ c.Check(hostCfg.Resources.MemorySwap, Equals, int64(123123123))
+ c.Check(hostCfg.Resources.KernelMemory, Equals, int64(123123123))
+ c.Check(hostCfg.Resources.DeviceRequests, DeepEquals, []dockercontainer.DeviceRequest{{
+ Driver: "nvidia",
+ Count: 3,
+ Capabilities: [][]string{{"gpu", "nvidia", "compute"}},
+ }})
+}
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list