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

Signed-off-by: Guillaume Tardif <guillaume.tardif@docker.com>
This commit is contained in:
Guillaume Tardif 2020-10-07 18:25:01 +02:00
parent 343d54dac5
commit b1edfb6507
8 changed files with 75 additions and 60 deletions

View File

@ -499,9 +499,14 @@ func ContainerGroupToContainer(containerID string, cg containerinstance.Containe
} }
} }
var config *containers.RuntimeConfig = &containers.RuntimeConfig{FQDN: fqdn(cg, region)} config := &containers.RuntimeConfig{
if envVars != nil { FQDN: fqdn(cg, region),
config.Env = envVars Env: envVars,
}
hostConfig := &containers.HostConfig{
CPULimit: cpuLimit,
MemoryLimit: uint64(memLimits),
RestartPolicy: toContainerRestartPolicy(cg.RestartPolicy),
} }
c := containers.Container{ c := containers.Container{
ID: containerID, ID: containerID,
@ -509,16 +514,13 @@ func ContainerGroupToContainer(containerID string, cg containerinstance.Containe
Image: to.String(cc.Image), Image: to.String(cc.Image),
Command: command, Command: command,
CPUTime: 0, CPUTime: 0,
CPULimit: cpuLimit,
MemoryUsage: 0, MemoryUsage: 0,
MemoryLimit: uint64(memLimits),
PidsCurrent: 0, PidsCurrent: 0,
PidsLimit: 0, PidsLimit: 0,
Labels: nil,
Ports: ToPorts(cg.IPAddress, *cc.Ports), Ports: ToPorts(cg.IPAddress, *cc.Ports),
Platform: platform, Platform: platform,
RestartPolicyCondition: toContainerRestartPolicy(cg.RestartPolicy),
Config: config, Config: config,
HostConfig: hostConfig,
} }
return c return c

View File

@ -94,8 +94,6 @@ func TestContainerGroupToContainer(t *testing.T) {
Status: "Running", Status: "Running",
Image: "sha256:666", Image: "sha256:666",
Command: "mycommand", Command: "mycommand",
CPULimit: 3,
MemoryLimit: 107374182,
Platform: "Linux", Platform: "Linux",
Ports: []containers.Port{{ Ports: []containers.Port{{
HostPort: uint32(80), HostPort: uint32(80),
@ -106,7 +104,11 @@ func TestContainerGroupToContainer(t *testing.T) {
Config: &containers.RuntimeConfig{ Config: &containers.RuntimeConfig{
FQDN: "myapp.eastus.azurecontainer.io", FQDN: "myapp.eastus.azurecontainer.io",
}, },
RestartPolicyCondition: "any", HostConfig: &containers.HostConfig{
CPULimit: 3,
MemoryLimit: 107374182,
RestartPolicy: "any",
},
} }
container := ContainerGroupToContainer("myContainerID", myContainerGroup, myContainer, "eastus") container := ContainerGroupToContainer("myContainerID", myContainerGroup, myContainer, "eastus")

View File

@ -42,25 +42,30 @@ type Container struct {
Image string Image string
Command string Command string
CPUTime uint64 CPUTime uint64
CPULimit float64
MemoryUsage uint64 MemoryUsage uint64
MemoryLimit uint64
PidsCurrent uint64 PidsCurrent uint64
PidsLimit uint64 PidsLimit uint64
Config *RuntimeConfig `json:",omitempty"` Config *RuntimeConfig `json:",omitempty"`
Labels []string `json:",omitempty"` HostConfig *HostConfig `json:",omitempty"`
Ports []Port `json:",omitempty"` Ports []Port `json:",omitempty"`
Platform string Platform string
RestartPolicyCondition string
} }
// RuntimeConfig config of a created container // RuntimeConfig config of a created container
type RuntimeConfig struct { type RuntimeConfig struct {
Labels []string `json:",omitempty"`
Env map[string]string `json:",omitempty"` Env map[string]string `json:",omitempty"`
// FQDN is the fqdn to use // FQDN is the fqdn to use
FQDN string `json:"fqdn,omitempty"` 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 // Port represents a published port of a container
type Port struct { type Port struct {
// HostPort is the port number on the host // HostPort is the port number on the host

View File

@ -4,11 +4,13 @@
"Image": "nginx", "Image": "nginx",
"Command": "", "Command": "",
"CPUTime": 0, "CPUTime": 0,
"CPULimit": 0,
"MemoryUsage": 0, "MemoryUsage": 0,
"MemoryLimit": 0,
"PidsCurrent": 0, "PidsCurrent": 0,
"PidsLimit": 0, "PidsLimit": 0,
"Platform": "Linux", "HostConfig": {
"RestartPolicyCondition": "none" "RestartPolicy": "none",
"CPULimit": 0,
"MemoryLimit": 0
},
"Platform": "Linux"
} }

View File

@ -71,7 +71,9 @@ func (cs *containerService) Inspect(ctx context.Context, id string) (containers.
ID: "id", ID: "id",
Image: "nginx", Image: "nginx",
Platform: "Linux", Platform: "Linux",
RestartPolicyCondition: "none", HostConfig: &containers.HostConfig{
RestartPolicy: "none",
},
}, nil }, nil
} }

View File

@ -128,14 +128,14 @@ func toGrpcContainer(c containers.Container) *containersv1.Container {
Command: c.Command, Command: c.Command,
CpuTime: c.CPUTime, CpuTime: c.CPUTime,
MemoryUsage: c.MemoryUsage, MemoryUsage: c.MemoryUsage,
MemoryLimit: c.MemoryLimit, MemoryLimit: c.HostConfig.MemoryLimit,
Platform: c.Platform, Platform: c.Platform,
PidsCurrent: c.PidsCurrent, PidsCurrent: c.PidsCurrent,
PidsLimit: c.PidsLimit, PidsLimit: c.PidsLimit,
Labels: c.Labels, Labels: c.Config.Labels,
Ports: portsToGrpc(c.Ports), Ports: portsToGrpc(c.Ports),
CpuLimit: uint64(c.CPULimit), CpuLimit: uint64(c.HostConfig.CPULimit),
RestartPolicyCondition: c.RestartPolicyCondition, RestartPolicyCondition: c.HostConfig.RestartPolicy,
} }
} }

View File

@ -249,8 +249,8 @@ func TestRunVolume(t *testing.T) {
containerInspect, err := ParseContainerInspect(res.Stdout()) containerInspect, err := ParseContainerInspect(res.Stdout())
assert.NilError(t, err) assert.NilError(t, err)
assert.Equal(t, containerInspect.Platform, "Linux") assert.Equal(t, containerInspect.Platform, "Linux")
assert.Equal(t, containerInspect.CPULimit, 1.0) assert.Equal(t, containerInspect.HostConfig.CPULimit, 1.0)
assert.Equal(t, containerInspect.RestartPolicyCondition, containers.RestartPolicyNone) assert.Equal(t, containerInspect.HostConfig.RestartPolicy, containers.RestartPolicyNone)
assert.Assert(t, is.Len(containerInspect.Ports, 1)) assert.Assert(t, is.Len(containerInspect.Ports, 1))
hostIP = containerInspect.Ports[0].HostIP hostIP = containerInspect.Ports[0].HostIP
@ -395,9 +395,9 @@ func TestContainerRunAttached(t *testing.T) {
containerInspect, err := ParseContainerInspect(inspectRes.Stdout()) containerInspect, err := ParseContainerInspect(inspectRes.Stdout())
assert.NilError(t, err) assert.NilError(t, err)
assert.Equal(t, containerInspect.Platform, "Linux") assert.Equal(t, containerInspect.Platform, "Linux")
assert.Equal(t, containerInspect.CPULimit, 0.1) assert.Equal(t, containerInspect.HostConfig.CPULimit, 0.1)
assert.Equal(t, containerInspect.MemoryLimit, uint64(107374182)) assert.Equal(t, containerInspect.HostConfig.MemoryLimit, uint64(107374182))
assert.Equal(t, containerInspect.RestartPolicyCondition, containers.RestartPolicyOnFailure) assert.Equal(t, containerInspect.HostConfig.RestartPolicy, containers.RestartPolicyOnFailure)
assert.Assert(t, is.Len(containerInspect.Ports, 1)) assert.Assert(t, is.Len(containerInspect.Ports, 1))
port := containerInspect.Ports[0] port := containerInspect.Ports[0]

View File

@ -4,11 +4,13 @@
"Image": "nginx", "Image": "nginx",
"Command": "", "Command": "",
"CPUTime": 0, "CPUTime": 0,
"CPULimit": 0,
"MemoryUsage": 0, "MemoryUsage": 0,
"MemoryLimit": 0,
"PidsCurrent": 0, "PidsCurrent": 0,
"PidsLimit": 0, "PidsLimit": 0,
"Platform": "Linux", "HostConfig": {
"RestartPolicyCondition": "none" "RestartPolicy": "none",
"CPULimit": 0,
"MemoryLimit": 0
},
"Platform": "Linux"
} }