summaryrefslogtreecommitdiff
path: root/libpod/inspect_data.go
blob: 072b94ab2b2d6ab0348cc350ca4c17d8643a0466 (plain)
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
package libpod

import (
	"time"

	digest "github.com/opencontainers/go-digest"
	"github.com/opencontainers/image-spec/specs-go/v1"
	specs "github.com/opencontainers/runtime-spec/specs-go"
	"github.com/projectatomic/libpod/libpod/driver"
)

// ContainerInspectData handles the data used when inspecting a container
type ContainerInspectData struct {
	ID              string                 `json:"ID"`
	Created         time.Time              `json:"Created"`
	Path            string                 `json:"Path"`
	Args            []string               `json:"Args"`
	State           *ContainerInspectState `json:"State"`
	ImageID         string                 `json:"Image"`
	ImageName       string                 `json:"ImageName"`
	ResolvConfPath  string                 `json:"ResolvConfPath"`
	HostnamePath    string                 `json:"HostnamePath"` //TODO
	HostsPath       string                 `json:"HostsPath"`    //TODO
	StaticDir       string                 `json:"StaticDir"`
	LogPath         string                 `json:"LogPath"`
	Name            string                 `json:"Name"`
	RestartCount    int32                  `json:"RestartCount"` //TODO
	Driver          string                 `json:"Driver"`
	MountLabel      string                 `json:"MountLabel"`
	ProcessLabel    string                 `json:"ProcessLabel"`
	AppArmorProfile string                 `json:"AppArmorProfile"`
	ExecIDs         []string               `json:"ExecIDs"` //TODO
	GraphDriver     *driver.Data           `json:"GraphDriver"`
	SizeRw          int64                  `json:"SizeRw,omitempty"`
	SizeRootFs      int64                  `json:"SizeRootFs,omitempty"`
	Mounts          []specs.Mount          `json:"Mounts"`
	NetworkSettings *NetworkSettings       `json:"NetworkSettings"` //TODO
}

// ContainerInspectState represents the state of a container.
type ContainerInspectState struct {
	OciVersion string    `json:"OciVersion"`
	Status     string    `json:"Status"`
	Running    bool      `json:"Running"`
	Paused     bool      `json:"Paused"`
	Restarting bool      `json:"Restarting"` // TODO
	OOMKilled  bool      `json:"OOMKilled"`
	Dead       bool      `json:"Dead"`
	Pid        int       `json:"Pid"`
	ExitCode   int32     `json:"ExitCode"`
	Error      string    `json:"Error"` // TODO
	StartedAt  time.Time `json:"StartedAt"`
	FinishedAt time.Time `json:"FinishedAt"`
}

// NetworkSettings holds information about the newtwork settings of the container
type NetworkSettings struct {
	Bridge                 string              `json:"Bridge"`
	SandboxID              string              `json:"SandboxID"`
	HairpinMode            bool                `json:"HairpinMode"`
	LinkLocalIPv6Address   string              `json:"LinkLocalIPv6Address"`
	LinkLocalIPv6PrefixLen int                 `json:"LinkLocalIPv6PrefixLen"`
	Ports                  map[string]struct{} `json:"Ports"`
	SandboxKey             string              `json:"SandboxKey"`
	SecondaryIPAddresses   string              `json:"SecondaryIPAddresses"`   //idk type
	SecondaryIPv6Addresses string              `json:"SecondaryIPv6Addresses"` //idk type
	EndpointID             string              `json:"EndpointID"`
	Gateway                string              `json:"Gateway"`
	GlobalIPv6Addresses    string              `json:"GlobalIPv6Addresses"`
	GlobalIPv6PrefixLen    int                 `json:"GlobalIPv6PrefixLen"`
	IPAddress              string              `json:"IPAddress"`
	IPPrefixLen            int                 `json:"IPPrefixLen"`
	IPv6Gateway            string              `json:"IPv6Gateway"`
	MacAddress             string              `json:"MacAddress"`
}

// ImageData holds the inspect information of an image
type ImageData struct {
	ID           string            `json:"ID"`
	Digest       digest.Digest     `json:"Digest"`
	RepoTags     []string          `json:"RepoTags"`
	RepoDigests  []string          `json:"RepoDigests"`
	Parent       string            `json:"Parent"`
	Comment      string            `json:"Comment"`
	Created      *time.Time        `json:"Created"`
	Config       *v1.ImageConfig   `json:"Config"`
	Version      string            `json:"Version"`
	Author       string            `json:"Author"`
	Architecture string            `json:"Architecture"`
	Os           string            `json:"Os"`
	Size         int64             `json:"Size"`
	VirtualSize  int64             `json:"VirtualSize"`
	GraphDriver  *driver.Data      `json:"GraphDriver"`
	RootFS       *RootFS           `json:"RootFS"`
	Labels       map[string]string `json:"Labels"`
	Annotations  map[string]string `json:"Annotations"`
}

// RootFS holds the root fs information of an image
type RootFS struct {
	Type   string          `json:"Type"`
	Layers []digest.Digest `json:"Layers"`
}