summaryrefslogtreecommitdiff
path: root/oci/container.go
diff options
context:
space:
mode:
Diffstat (limited to 'oci/container.go')
-rw-r--r--oci/container.go260
1 files changed, 0 insertions, 260 deletions
diff --git a/oci/container.go b/oci/container.go
deleted file mode 100644
index c0eff2fd1..000000000
--- a/oci/container.go
+++ /dev/null
@@ -1,260 +0,0 @@
-package oci
-
-import (
- "encoding/json"
- "fmt"
- "os"
- "path/filepath"
- "strings"
- "sync"
- "time"
-
- "github.com/containernetworking/plugins/pkg/ns"
- "github.com/docker/docker/pkg/signal"
- specs "github.com/opencontainers/runtime-spec/specs-go"
- "k8s.io/apimachinery/pkg/fields"
- pb "k8s.io/kubernetes/pkg/kubelet/apis/cri/v1alpha1/runtime"
-)
-
-const (
- defaultStopSignal = "TERM"
-)
-
-// Container represents a runtime container.
-type Container struct {
- id string
- name string
- logPath string
- labels fields.Set
- annotations fields.Set
- crioAnnotations fields.Set
- image string
- sandbox string
- netns ns.NetNS
- terminal bool
- stdin bool
- stdinOnce bool
- privileged bool
- trusted bool
- state *ContainerState
- metadata *pb.ContainerMetadata
- opLock sync.Locker
- // this is the /var/run/storage/... directory, erased on reboot
- bundlePath string
- // this is the /var/lib/storage/... directory
- dir string
- stopSignal string
- imageName string
- imageRef string
- volumes []ContainerVolume
- mountPoint string
- spec *specs.Spec
-}
-
-// ContainerVolume is a bind mount for the container.
-type ContainerVolume struct {
- ContainerPath string `json:"container_path"`
- HostPath string `json:"host_path"`
- Readonly bool `json:"readonly"`
-}
-
-// ContainerState represents the status of a container.
-type ContainerState struct {
- specs.State
- Created time.Time `json:"created"`
- Started time.Time `json:"started,omitempty"`
- Finished time.Time `json:"finished,omitempty"`
- ExitCode int32 `json:"exitCode,omitempty"`
- OOMKilled bool `json:"oomKilled,omitempty"`
- Error string `json:"error,omitempty"`
-}
-
-// NewContainer creates a container object.
-func NewContainer(id string, name string, bundlePath string, logPath string, netns ns.NetNS, labels map[string]string, crioAnnotations map[string]string, annotations map[string]string, image string, imageName string, imageRef string, metadata *pb.ContainerMetadata, sandbox string, terminal bool, stdin bool, stdinOnce bool, privileged bool, trusted bool, dir string, created time.Time, stopSignal string) (*Container, error) {
- state := &ContainerState{}
- state.Created = created
- c := &Container{
- id: id,
- name: name,
- bundlePath: bundlePath,
- logPath: logPath,
- labels: labels,
- sandbox: sandbox,
- netns: netns,
- terminal: terminal,
- stdin: stdin,
- stdinOnce: stdinOnce,
- privileged: privileged,
- trusted: trusted,
- metadata: metadata,
- annotations: annotations,
- crioAnnotations: crioAnnotations,
- image: image,
- imageName: imageName,
- imageRef: imageRef,
- dir: dir,
- state: state,
- stopSignal: stopSignal,
- opLock: new(sync.Mutex),
- }
- return c, nil
-}
-
-// SetSpec loads the OCI spec in the container struct
-func (c *Container) SetSpec(s *specs.Spec) {
- c.spec = s
-}
-
-// Spec returns a copy of the spec for the container
-func (c *Container) Spec() specs.Spec {
- return *c.spec
-}
-
-// GetStopSignal returns the container's own stop signal configured from the
-// image configuration or the default one.
-func (c *Container) GetStopSignal() string {
- if c.stopSignal == "" {
- return defaultStopSignal
- }
- cleanSignal := strings.TrimPrefix(strings.ToUpper(c.stopSignal), "SIG")
- _, ok := signal.SignalMap[cleanSignal]
- if !ok {
- return defaultStopSignal
- }
- return cleanSignal
-}
-
-// FromDisk restores container's state from disk
-func (c *Container) FromDisk() error {
- jsonSource, err := os.Open(c.StatePath())
- if err != nil {
- return err
- }
- defer jsonSource.Close()
-
- dec := json.NewDecoder(jsonSource)
- return dec.Decode(c.state)
-}
-
-// StatePath returns the containers state.json path
-func (c *Container) StatePath() string {
- return filepath.Join(c.dir, "state.json")
-}
-
-// CreatedAt returns the container creation time
-func (c *Container) CreatedAt() time.Time {
- return c.state.Created
-}
-
-// Name returns the name of the container.
-func (c *Container) Name() string {
- return c.name
-}
-
-// ID returns the id of the container.
-func (c *Container) ID() string {
- return c.id
-}
-
-// BundlePath returns the bundlePath of the container.
-func (c *Container) BundlePath() string {
- return c.bundlePath
-}
-
-// LogPath returns the log path of the container.
-func (c *Container) LogPath() string {
- return c.logPath
-}
-
-// Labels returns the labels of the container.
-func (c *Container) Labels() map[string]string {
- return c.labels
-}
-
-// Annotations returns the annotations of the container.
-func (c *Container) Annotations() map[string]string {
- return c.annotations
-}
-
-// CrioAnnotations returns the crio annotations of the container.
-func (c *Container) CrioAnnotations() map[string]string {
- return c.crioAnnotations
-}
-
-// Image returns the image of the container.
-func (c *Container) Image() string {
- return c.image
-}
-
-// ImageName returns the image name of the container.
-func (c *Container) ImageName() string {
- return c.imageName
-}
-
-// ImageRef returns the image ref of the container.
-func (c *Container) ImageRef() string {
- return c.imageRef
-}
-
-// Sandbox returns the sandbox name of the container.
-func (c *Container) Sandbox() string {
- return c.sandbox
-}
-
-// Dir returns the the dir of the container
-func (c *Container) Dir() string {
- return c.dir
-}
-
-// NetNsPath returns the path to the network namespace of the container.
-func (c *Container) NetNsPath() (string, error) {
- if c.state == nil {
- return "", fmt.Errorf("container state is not populated")
- }
-
- if c.netns == nil {
- return fmt.Sprintf("/proc/%d/ns/net", c.state.Pid), nil
- }
-
- return c.netns.Path(), nil
-}
-
-// Metadata returns the metadata of the container.
-func (c *Container) Metadata() *pb.ContainerMetadata {
- return c.metadata
-}
-
-// State returns the state of the running container
-func (c *Container) State() *ContainerState {
- c.opLock.Lock()
- defer c.opLock.Unlock()
- return c.state
-}
-
-// AddVolume adds a volume to list of container volumes.
-func (c *Container) AddVolume(v ContainerVolume) {
- c.volumes = append(c.volumes, v)
-}
-
-// Volumes returns the list of container volumes.
-func (c *Container) Volumes() []ContainerVolume {
- return c.volumes
-
-}
-
-// SetMountPoint sets the container mount point
-func (c *Container) SetMountPoint(mp string) {
- c.mountPoint = mp
-}
-
-// MountPoint returns the container mount point
-func (c *Container) MountPoint() string {
- return c.mountPoint
-}
-
-// SetState sets the conainer state
-//
-// XXX: DO NOT EVER USE THIS, THIS IS JUST USEFUL FOR MOCKING!!!
-func (c *Container) SetState(state *ContainerState) {
- c.state = state
-}