/
container.go
70 lines (65 loc) · 1.89 KB
/
container.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package formatter
import (
"fmt"
"time"
"github.com/alibaba/pouch/apis/types"
"github.com/alibaba/pouch/pkg/utils"
)
// ContainerHeader is the map to show container head
var ContainerHeader = map[string]string{
"Names": "Name",
"ID": "ID",
"Status": "Status",
"RunningFor": "Created",
"Image": "Image",
"Runtime": "Runtime",
"Command": "Command",
"ImageID": "ImageID",
"Labels": "Labels",
"Mounts": "Mounts",
"State": "State",
"Ports": "Ports",
"Size": "Size",
"LocalVolumes": "LocalVolumes",
"Networks": "Networks",
"CreatedAt": "CreatedAt",
}
// ContainerContext is the map to show container context detail
type ContainerContext map[string]string
// NewContainerContext is to generate a ContainerContext to be show
func NewContainerContext(c *types.Container, flagNoTrunc bool) (containerContext ContainerContext, err error) {
id := c.ID[:6]
if flagNoTrunc {
id = c.ID
}
runningFor, err := utils.FormatTimeInterval(0, c.Created)
if err != nil {
return nil, err
}
createdAt := time.Unix(0, c.Created).String()
networks := c.HostConfig.NetworkMode
ports := PortBindingsToString(c.HostConfig.PortBindings)
size := SizeToString(c.SizeRw, c.SizeRootFs)
labels := LabelsToString(c.Labels)
mount := MountPointToString(c.Mounts)
localVolume := LocalVolumes(c.Mounts)
containerContext = ContainerContext{
"Names": c.Names[0],
"ID": id,
"Status": c.Status,
"RunningFor": fmt.Sprintf("%s ago", runningFor),
"Image": c.Image,
"Runtime": c.HostConfig.Runtime,
"Command": c.Command,
"ImageID": c.ImageID,
"Labels": labels,
"Mounts": mount,
"State": c.State,
"Ports": ports,
"Size": size,
"LocalVolumes": localVolume,
"Networks": networks,
"CreatedAt": createdAt,
}
return containerContext, nil
}