moving HostConfig into the ThinContainerExecRunner interface
[arvados.git] / lib / crunchrun / docker_adapter.go
index 1019e7df7bff22efff67bb9a340d47fc696c3980..f6c1a1a61854ce7ebf916a0bb8e816e820e7a1a4 100644 (file)
@@ -16,7 +16,7 @@ import (
 type DockerAdapter struct {
        docker          ThinDockerClient
        containerConfig ContainerConfig
-       hostConfig      HostConfig
+       hostConfig      dockercontainer.HostConfig
 }
 
 func (a *DockerAdapter) ContainerAttach(ctx context.Context, container string, options ContainerAttachOptions) (HijackedResponse, error) {
@@ -209,8 +209,40 @@ func (a *DockerAdapter) GetContainerConfig() (ContainerConfig, error) {
 }
 
 func (a *DockerAdapter) GetHostConfig() (HostConfig, error) {
-       return a.hostConfig, nil
+       adapterHostConfig := HostConfig{
+               Binds: a.hostConfig.Binds,
+               LogConfig: LogConfig{
+                       Type: a.hostConfig.LogConfig.Type,
+               },
+               Resources: Resources{
+                       CgroupParent: a.hostConfig.CgroupParent,
+                       NanoCPUs:     a.hostConfig.NanoCPUs,
+                       Memory:       a.hostConfig.Memory,
+                       MemorySwap:   a.hostConfig.MemorySwap,
+                       KernelMemory: a.hostConfig.KernelMemory,
+               },
+       }
+       return adapterHostConfig, nil
+}
+
+func (a *DockerAdapter) SetHostConfig(adapterHostConfig HostConfig) error {
+       dockerHostConfig := dockercontainer.HostConfig{
+               Binds: adapterHostConfig.Binds,
+               LogConfig: dockercontainer.LogConfig{
+                       Type: adapterHostConfig.LogConfig.Type,
+               },
+               Resources: dockercontainer.Resources{
+                       CgroupParent: adapterHostConfig.CgroupParent,
+                       NanoCPUs:     adapterHostConfig.NanoCPUs,
+                       Memory:       adapterHostConfig.Memory,
+                       MemorySwap:   adapterHostConfig.MemorySwap,
+                       KernelMemory: adapterHostConfig.KernelMemory,
+               },
+       }
+       a.hostConfig = dockerHostConfig
+       return nil
 }
+
 func (a *DockerAdapter) GetImage() (imageID string) {
        return a.containerConfig.Image
 }
@@ -218,6 +250,13 @@ func (a *DockerAdapter) GetImage() (imageID string) {
 func (a *DockerAdapter) SetImage(imageID string) {
        a.containerConfig.Image = imageID
 }
+func (a *DockerAdapter) GetNetworkMode() (networkMode NetworkMode) {
+       return NetworkMode(a.hostConfig.NetworkMode)
+}
+
+func (a *DockerAdapter) SetNetworkMode(networkMode NetworkMode) {
+       a.hostConfig.NetworkMode = dockercontainer.NetworkMode(networkMode)
+}
 
 func adapter(docker ThinDockerClient) ThinContainerExecRunner {
        return_object := &DockerAdapter{docker: docker}