Add golint to test (#255)
* Add a new lint rule to the Makefile Signed-off-by: Kenfe-Mickael Laventure <mickael.laventure@gmail.com> * Fix linter errors Signed-off-by: Kenfe-Mickael Laventure <mickael.laventure@gmail.com> * Allow replacing the default apt mirror Signed-off-by: Kenfe-Mickael Laventure <mickael.laventure@gmail.com>
This commit is contained in:
committed by
Michael Crosby
parent
4176ba7b52
commit
5624732128
@@ -16,6 +16,7 @@ import (
|
||||
ocs "github.com/opencontainers/runtime-spec/specs-go"
|
||||
)
|
||||
|
||||
// Container defines the operations allowed on a container
|
||||
type Container interface {
|
||||
// ID returns the container ID
|
||||
ID() string
|
||||
@@ -60,6 +61,7 @@ type Container interface {
|
||||
Status() (State, error)
|
||||
}
|
||||
|
||||
// OOM wraps a container OOM.
|
||||
type OOM interface {
|
||||
io.Closer
|
||||
FD() int
|
||||
@@ -68,12 +70,15 @@ type OOM interface {
|
||||
Removed() bool
|
||||
}
|
||||
|
||||
// Stdio holds the path to the 3 pipes used for the standard ios.
|
||||
type Stdio struct {
|
||||
Stdin string
|
||||
Stdout string
|
||||
Stderr string
|
||||
}
|
||||
|
||||
// NewStdio wraps the given standard io path into an Stdio struct.
|
||||
// If a given parameter is the empty string, it is replaced by "/dev/null"
|
||||
func NewStdio(stdin, stdout, stderr string) Stdio {
|
||||
for _, s := range []*string{
|
||||
&stdin, &stdout, &stderr,
|
||||
@@ -89,6 +94,7 @@ func NewStdio(stdin, stdout, stderr string) Stdio {
|
||||
}
|
||||
}
|
||||
|
||||
// ContainerOpts keeps the options passed at container creation
|
||||
type ContainerOpts struct {
|
||||
Root string
|
||||
ID string
|
||||
@@ -136,6 +142,7 @@ func New(opts ContainerOpts) (Container, error) {
|
||||
return c, nil
|
||||
}
|
||||
|
||||
// Load return a new container from the matchin state file on disk.
|
||||
func Load(root, id string, timeout time.Duration) (Container, error) {
|
||||
var s state
|
||||
f, err := os.Open(filepath.Join(root, id, StateFile))
|
||||
@@ -355,7 +362,7 @@ func (c *container) Checkpoint(cpt Checkpoint, checkpointDir string) error {
|
||||
if cpt.Shell {
|
||||
add("--shell-job")
|
||||
}
|
||||
if cpt.Tcp {
|
||||
if cpt.TCP {
|
||||
add("--tcp-established")
|
||||
}
|
||||
if cpt.UnixSockets {
|
||||
|
||||
@@ -15,6 +15,7 @@ import (
|
||||
"golang.org/x/sys/unix"
|
||||
)
|
||||
|
||||
// Process holds the operation allowed on a container's process
|
||||
type Process interface {
|
||||
io.Closer
|
||||
|
||||
|
||||
@@ -8,15 +8,17 @@ import (
|
||||
)
|
||||
|
||||
var (
|
||||
ErrNotChildProcess = errors.New("containerd: not a child process for container")
|
||||
ErrInvalidContainerType = errors.New("containerd: invalid container type for runtime")
|
||||
ErrCheckpointNotExists = errors.New("containerd: checkpoint does not exist for container")
|
||||
ErrCheckpointExists = errors.New("containerd: checkpoint already exists")
|
||||
ErrContainerExited = errors.New("containerd: container has exited")
|
||||
ErrTerminalsNotSupported = errors.New("containerd: terminals are not supported for runtime")
|
||||
ErrProcessNotExited = errors.New("containerd: process has not exited")
|
||||
ErrProcessExited = errors.New("containerd: process has exited")
|
||||
ErrContainerNotStarted = errors.New("containerd: container not started")
|
||||
// ErrContainerExited is returned when access to an exited
|
||||
// container is attempted
|
||||
ErrContainerExited = errors.New("containerd: container has exited")
|
||||
// ErrProcessNotExited is returned when trying to retrive the exit
|
||||
// status of an alive process
|
||||
ErrProcessNotExited = errors.New("containerd: process has not exited")
|
||||
// ErrContainerNotStarted is returned when a container fails to
|
||||
// start without error from the shim or the OCI runtime
|
||||
ErrContainerNotStarted = errors.New("containerd: container not started")
|
||||
// ErrContainerStartTimeout is returned if a container takes too
|
||||
// long to start
|
||||
ErrContainerStartTimeout = errors.New("containerd: container did not start before the specified timeout")
|
||||
|
||||
errNoPidFile = errors.New("containerd: no process pid file found")
|
||||
@@ -25,20 +27,30 @@ var (
|
||||
)
|
||||
|
||||
const (
|
||||
ExitFile = "exit"
|
||||
// ExitFile holds the name of the pipe used to monitor process
|
||||
// exit
|
||||
ExitFile = "exit"
|
||||
// ExitStatusFile holds the name of the file where the container
|
||||
// exit code is to be written
|
||||
ExitStatusFile = "exitStatus"
|
||||
StateFile = "state.json"
|
||||
ControlFile = "control"
|
||||
InitProcessID = "init"
|
||||
// StateFile holds the name of the file where the container state
|
||||
// is written
|
||||
StateFile = "state.json"
|
||||
// ControlFile holds the name of the pipe used to control the shim
|
||||
ControlFile = "control"
|
||||
// InitProcessID holds the special ID used for the very first
|
||||
// container's process
|
||||
InitProcessID = "init"
|
||||
)
|
||||
|
||||
// Checkpoint holds information regarding a container checkpoint
|
||||
type Checkpoint struct {
|
||||
// Timestamp is the time that checkpoint happened
|
||||
Created time.Time `json:"created"`
|
||||
// Name is the name of the checkpoint
|
||||
Name string `json:"name"`
|
||||
// Tcp checkpoints open tcp connections
|
||||
Tcp bool `json:"tcp"`
|
||||
// TCP checkpoints open tcp connections
|
||||
TCP bool `json:"tcp"`
|
||||
// UnixSockets persists unix sockets in the checkpoint
|
||||
UnixSockets bool `json:"unixSockets"`
|
||||
// Shell persists tty sessions in the checkpoint
|
||||
@@ -53,8 +65,11 @@ type PlatformProcessState struct {
|
||||
RootUID int `json:"rootUID"`
|
||||
RootGID int `json:"rootGID"`
|
||||
}
|
||||
|
||||
// State represents a container state
|
||||
type State string
|
||||
|
||||
// Resource regroups the various container limits that can be updated
|
||||
type Resource struct {
|
||||
CPUShares int64
|
||||
BlkioWeight uint16
|
||||
@@ -68,6 +83,7 @@ type Resource struct {
|
||||
MemorySwap int64
|
||||
}
|
||||
|
||||
// Possible container states
|
||||
const (
|
||||
Paused = State("paused")
|
||||
Stopped = State("stopped")
|
||||
@@ -86,6 +102,8 @@ type state struct {
|
||||
NoPivotRoot bool `json:"noPivotRoot"`
|
||||
}
|
||||
|
||||
// ProcessState holds the process OCI specs along with various fields
|
||||
// required by containerd
|
||||
type ProcessState struct {
|
||||
specs.ProcessSpec
|
||||
Exec bool `json:"exec"`
|
||||
|
||||
@@ -2,22 +2,25 @@ package runtime
|
||||
|
||||
import "time"
|
||||
|
||||
// Stat holds a container statistics
|
||||
type Stat struct {
|
||||
// Timestamp is the time that the statistics where collected
|
||||
Timestamp time.Time
|
||||
Cpu Cpu `json:"cpu"`
|
||||
CPU CPU `json:"cpu"`
|
||||
Memory Memory `json:"memory"`
|
||||
Pids Pids `json:"pids"`
|
||||
Blkio Blkio `json:"blkio"`
|
||||
Hugetlb map[string]Hugetlb `json:"hugetlb"`
|
||||
}
|
||||
|
||||
// Hugetlb holds information regarding a container huge tlb usage
|
||||
type Hugetlb struct {
|
||||
Usage uint64 `json:"usage,omitempty"`
|
||||
Max uint64 `json:"max,omitempty"`
|
||||
Failcnt uint64 `json:"failcnt"`
|
||||
}
|
||||
|
||||
// BlkioEntry represents a single record for a Blkio stat
|
||||
type BlkioEntry struct {
|
||||
Major uint64 `json:"major,omitempty"`
|
||||
Minor uint64 `json:"minor,omitempty"`
|
||||
@@ -25,6 +28,7 @@ type BlkioEntry struct {
|
||||
Value uint64 `json:"value,omitempty"`
|
||||
}
|
||||
|
||||
// Blkio regroups all the Blkio related stats
|
||||
type Blkio struct {
|
||||
IoServiceBytesRecursive []BlkioEntry `json:"ioServiceBytesRecursive,omitempty"`
|
||||
IoServicedRecursive []BlkioEntry `json:"ioServicedRecursive,omitempty"`
|
||||
@@ -36,18 +40,21 @@ type Blkio struct {
|
||||
SectorsRecursive []BlkioEntry `json:"sectorsRecursive,omitempty"`
|
||||
}
|
||||
|
||||
// Pids holds the stat of the pid usage of the machine
|
||||
type Pids struct {
|
||||
Current uint64 `json:"current,omitempty"`
|
||||
Limit uint64 `json:"limit,omitempty"`
|
||||
}
|
||||
|
||||
// Throttling holds a cpu throttling information
|
||||
type Throttling struct {
|
||||
Periods uint64 `json:"periods,omitempty"`
|
||||
ThrottledPeriods uint64 `json:"throttledPeriods,omitempty"`
|
||||
ThrottledTime uint64 `json:"throttledTime,omitempty"`
|
||||
}
|
||||
|
||||
type CpuUsage struct {
|
||||
// CPUUsage holds information regarding cpu usage
|
||||
type CPUUsage struct {
|
||||
// Units: nanoseconds.
|
||||
Total uint64 `json:"total,omitempty"`
|
||||
Percpu []uint64 `json:"percpu,omitempty"`
|
||||
@@ -55,11 +62,13 @@ type CpuUsage struct {
|
||||
User uint64 `json:"user"`
|
||||
}
|
||||
|
||||
type Cpu struct {
|
||||
Usage CpuUsage `json:"usage,omitempty"`
|
||||
// CPU regroups both a CPU usage and throttling information
|
||||
type CPU struct {
|
||||
Usage CPUUsage `json:"usage,omitempty"`
|
||||
Throttling Throttling `json:"throttling,omitempty"`
|
||||
}
|
||||
|
||||
// MemoryEntry regroups statistic about a given type of memory
|
||||
type MemoryEntry struct {
|
||||
Limit uint64 `json:"limit"`
|
||||
Usage uint64 `json:"usage,omitempty"`
|
||||
@@ -67,6 +76,7 @@ type MemoryEntry struct {
|
||||
Failcnt uint64 `json:"failcnt"`
|
||||
}
|
||||
|
||||
// Memory holds information regarding the different type of memories available
|
||||
type Memory struct {
|
||||
Cache uint64 `json:"cache,omitempty"`
|
||||
Usage MemoryEntry `json:"usage,omitempty"`
|
||||
|
||||
Reference in New Issue
Block a user