Browse Source

Change inspect json output to group things a bit more nicely, and more like Moby json output

Signed-off-by: Guillaume Tardif <[email protected]>
Guillaume Tardif 5 years ago
parent
commit
b1edfb6507

+ 20 - 18
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

+ 10 - 8
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")

+ 21 - 16
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

+ 6 - 4
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"
 }

+ 3 - 1
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
 }
 

+ 4 - 4
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,
 	}
 }
 

+ 5 - 5
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]

+ 6 - 4
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"
 }