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)}
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

View File

@ -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")

View File

@ -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

View File

@ -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"
}

View File

@ -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
}

View File

@ -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,
}
}

View File

@ -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]

View File

@ -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"
}