diff --git a/aci/convert/convert.go b/aci/convert/convert.go index db0545fe6..0cb891628 100644 --- a/aci/convert/convert.go +++ b/aci/convert/convert.go @@ -499,26 +499,28 @@ func ContainerGroupToContainer(containerID string, cg containerinstance.Containe } } - var config *containers.RuntimeConfig = &containers.RuntimeConfig{FQDN: fqdn(cg, region)} - if envVars != nil { - config.Env = envVars + config := &containers.RuntimeConfig{ + FQDN: fqdn(cg, region), + Env: envVars, + } + hostConfig := &containers.HostConfig{ + CPULimit: cpuLimit, + MemoryLimit: uint64(memLimits), + RestartPolicy: toContainerRestartPolicy(cg.RestartPolicy), } c := containers.Container{ - ID: containerID, - Status: status, - Image: to.String(cc.Image), - Command: command, - CPUTime: 0, - CPULimit: cpuLimit, - MemoryUsage: 0, - MemoryLimit: uint64(memLimits), - PidsCurrent: 0, - PidsLimit: 0, - Labels: nil, - Ports: ToPorts(cg.IPAddress, *cc.Ports), - Platform: platform, - RestartPolicyCondition: toContainerRestartPolicy(cg.RestartPolicy), - Config: config, + ID: containerID, + Status: status, + Image: to.String(cc.Image), + Command: command, + CPUTime: 0, + MemoryUsage: 0, + PidsCurrent: 0, + PidsLimit: 0, + Ports: ToPorts(cg.IPAddress, *cc.Ports), + Platform: platform, + Config: config, + HostConfig: hostConfig, } return c diff --git a/aci/convert/convert_test.go b/aci/convert/convert_test.go index d234cff9b..6932e3a0c 100644 --- a/aci/convert/convert_test.go +++ b/aci/convert/convert_test.go @@ -90,13 +90,11 @@ func TestContainerGroupToContainer(t *testing.T) { } var expectedContainer = containers.Container{ - ID: "myContainerID", - Status: "Running", - Image: "sha256:666", - Command: "mycommand", - CPULimit: 3, - MemoryLimit: 107374182, - Platform: "Linux", + ID: "myContainerID", + Status: "Running", + Image: "sha256:666", + Command: "mycommand", + Platform: "Linux", Ports: []containers.Port{{ HostPort: uint32(80), ContainerPort: uint32(80), @@ -106,7 +104,11 @@ func TestContainerGroupToContainer(t *testing.T) { Config: &containers.RuntimeConfig{ FQDN: "myapp.eastus.azurecontainer.io", }, - RestartPolicyCondition: "any", + HostConfig: &containers.HostConfig{ + CPULimit: 3, + MemoryLimit: 107374182, + RestartPolicy: "any", + }, } container := ContainerGroupToContainer("myContainerID", myContainerGroup, myContainer, "eastus") diff --git a/api/containers/api.go b/api/containers/api.go index 7cc29099b..7e0643902 100644 --- a/api/containers/api.go +++ b/api/containers/api.go @@ -37,30 +37,35 @@ var RestartPolicyList = []string{RestartPolicyNone, RestartPolicyAny, RestartPol // Container represents a created container type Container struct { - ID string - Status string - Image string - Command string - CPUTime uint64 - CPULimit float64 - MemoryUsage uint64 - MemoryLimit uint64 - PidsCurrent uint64 - PidsLimit uint64 - Config *RuntimeConfig `json:",omitempty"` - Labels []string `json:",omitempty"` - Ports []Port `json:",omitempty"` - Platform string - RestartPolicyCondition string + ID string + Status string + Image string + Command string + CPUTime uint64 + MemoryUsage uint64 + PidsCurrent uint64 + PidsLimit uint64 + Config *RuntimeConfig `json:",omitempty"` + HostConfig *HostConfig `json:",omitempty"` + Ports []Port `json:",omitempty"` + Platform string } // RuntimeConfig config of a created container type RuntimeConfig struct { - Env map[string]string `json:",omitempty"` + Labels []string `json:",omitempty"` + Env map[string]string `json:",omitempty"` // FQDN is the fqdn to use FQDN string `json:"fqdn,omitempty"` } +// HostConfig config of the container host +type HostConfig struct { + RestartPolicy string + CPULimit float64 + MemoryLimit uint64 +} + // Port represents a published port of a container type Port struct { // HostPort is the port number on the host diff --git a/cli/cmd/testdata/inspect-out-id.golden b/cli/cmd/testdata/inspect-out-id.golden index 13c82d0d6..5b13d058d 100644 --- a/cli/cmd/testdata/inspect-out-id.golden +++ b/cli/cmd/testdata/inspect-out-id.golden @@ -4,11 +4,13 @@ "Image": "nginx", "Command": "", "CPUTime": 0, - "CPULimit": 0, "MemoryUsage": 0, - "MemoryLimit": 0, "PidsCurrent": 0, "PidsLimit": 0, - "Platform": "Linux", - "RestartPolicyCondition": "none" + "HostConfig": { + "RestartPolicy": "none", + "CPULimit": 0, + "MemoryLimit": 0 + }, + "Platform": "Linux" } diff --git a/example/backend.go b/example/backend.go index 34f472fd2..9f68bdbf6 100644 --- a/example/backend.go +++ b/example/backend.go @@ -71,7 +71,9 @@ func (cs *containerService) Inspect(ctx context.Context, id string) (containers. ID: "id", Image: "nginx", Platform: "Linux", - RestartPolicyCondition: "none", + HostConfig: &containers.HostConfig{ + RestartPolicy: "none", + }, }, nil } diff --git a/server/proxy/containers.go b/server/proxy/containers.go index b3e74962f..abb1cdf62 100644 --- a/server/proxy/containers.go +++ b/server/proxy/containers.go @@ -128,14 +128,14 @@ func toGrpcContainer(c containers.Container) *containersv1.Container { Command: c.Command, CpuTime: c.CPUTime, MemoryUsage: c.MemoryUsage, - MemoryLimit: c.MemoryLimit, + MemoryLimit: c.HostConfig.MemoryLimit, Platform: c.Platform, PidsCurrent: c.PidsCurrent, PidsLimit: c.PidsLimit, - Labels: c.Labels, + Labels: c.Config.Labels, Ports: portsToGrpc(c.Ports), - CpuLimit: uint64(c.CPULimit), - RestartPolicyCondition: c.RestartPolicyCondition, + CpuLimit: uint64(c.HostConfig.CPULimit), + RestartPolicyCondition: c.HostConfig.RestartPolicy, } } diff --git a/tests/aci-e2e/e2e-aci_test.go b/tests/aci-e2e/e2e-aci_test.go index 8bd361ec9..44add2d02 100644 --- a/tests/aci-e2e/e2e-aci_test.go +++ b/tests/aci-e2e/e2e-aci_test.go @@ -249,8 +249,8 @@ func TestRunVolume(t *testing.T) { containerInspect, err := ParseContainerInspect(res.Stdout()) assert.NilError(t, err) assert.Equal(t, containerInspect.Platform, "Linux") - assert.Equal(t, containerInspect.CPULimit, 1.0) - assert.Equal(t, containerInspect.RestartPolicyCondition, containers.RestartPolicyNone) + assert.Equal(t, containerInspect.HostConfig.CPULimit, 1.0) + assert.Equal(t, containerInspect.HostConfig.RestartPolicy, containers.RestartPolicyNone) assert.Assert(t, is.Len(containerInspect.Ports, 1)) hostIP = containerInspect.Ports[0].HostIP @@ -395,9 +395,9 @@ func TestContainerRunAttached(t *testing.T) { containerInspect, err := ParseContainerInspect(inspectRes.Stdout()) assert.NilError(t, err) assert.Equal(t, containerInspect.Platform, "Linux") - assert.Equal(t, containerInspect.CPULimit, 0.1) - assert.Equal(t, containerInspect.MemoryLimit, uint64(107374182)) - assert.Equal(t, containerInspect.RestartPolicyCondition, containers.RestartPolicyOnFailure) + assert.Equal(t, containerInspect.HostConfig.CPULimit, 0.1) + assert.Equal(t, containerInspect.HostConfig.MemoryLimit, uint64(107374182)) + assert.Equal(t, containerInspect.HostConfig.RestartPolicy, containers.RestartPolicyOnFailure) assert.Assert(t, is.Len(containerInspect.Ports, 1)) port := containerInspect.Ports[0] diff --git a/tests/e2e/testdata/inspect-id.golden b/tests/e2e/testdata/inspect-id.golden index 13c82d0d6..5b13d058d 100644 --- a/tests/e2e/testdata/inspect-id.golden +++ b/tests/e2e/testdata/inspect-id.golden @@ -4,11 +4,13 @@ "Image": "nginx", "Command": "", "CPUTime": 0, - "CPULimit": 0, "MemoryUsage": 0, - "MemoryLimit": 0, "PidsCurrent": 0, "PidsLimit": 0, - "Platform": "Linux", - "RestartPolicyCondition": "none" + "HostConfig": { + "RestartPolicy": "none", + "CPULimit": 0, + "MemoryLimit": 0 + }, + "Platform": "Linux" }