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,26 +499,28 @@ 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,
Status: status, Status: status,
Image: to.String(cc.Image), Image: to.String(cc.Image),
Command: command, Command: command,
CPUTime: 0, CPUTime: 0,
CPULimit: cpuLimit, MemoryUsage: 0,
MemoryUsage: 0, PidsCurrent: 0,
MemoryLimit: uint64(memLimits), PidsLimit: 0,
PidsCurrent: 0, Ports: ToPorts(cg.IPAddress, *cc.Ports),
PidsLimit: 0, Platform: platform,
Labels: nil, Config: config,
Ports: ToPorts(cg.IPAddress, *cc.Ports), HostConfig: hostConfig,
Platform: platform,
RestartPolicyCondition: toContainerRestartPolicy(cg.RestartPolicy),
Config: config,
} }
return c return c

View File

@ -90,13 +90,11 @@ func TestContainerGroupToContainer(t *testing.T) {
} }
var expectedContainer = containers.Container{ var expectedContainer = containers.Container{
ID: "myContainerID", ID: "myContainerID",
Status: "Running", Status: "Running",
Image: "sha256:666", Image: "sha256:666",
Command: "mycommand", Command: "mycommand",
CPULimit: 3, Platform: "Linux",
MemoryLimit: 107374182,
Platform: "Linux",
Ports: []containers.Port{{ Ports: []containers.Port{{
HostPort: uint32(80), HostPort: uint32(80),
ContainerPort: uint32(80), ContainerPort: 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

@ -37,30 +37,35 @@ var RestartPolicyList = []string{RestartPolicyNone, RestartPolicyAny, RestartPol
// Container represents a created container // Container represents a created container
type Container struct { type Container struct {
ID string ID string
Status string Status string
Image string Image string
Command string Command string
CPUTime uint64 CPUTime uint64
CPULimit float64 MemoryUsage uint64
MemoryUsage uint64 PidsCurrent uint64
MemoryLimit uint64 PidsLimit uint64
PidsCurrent uint64 Config *RuntimeConfig `json:",omitempty"`
PidsLimit uint64 HostConfig *HostConfig `json:",omitempty"`
Config *RuntimeConfig `json:",omitempty"` Ports []Port `json:",omitempty"`
Labels []string `json:",omitempty"` Platform string
Ports []Port `json:",omitempty"`
Platform string
RestartPolicyCondition string
} }
// RuntimeConfig config of a created container // RuntimeConfig config of a created container
type RuntimeConfig struct { 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 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"
} }