github.com/containers/podman/v2@v2.2.2-0.20210501105131-c1e07d070c4c/libpod/define/containerstate.go (about)

     1  package define
     2  
     3  import "github.com/pkg/errors"
     4  
     5  // ContainerStatus represents the current state of a container
     6  type ContainerStatus int
     7  
     8  const (
     9  	// ContainerStateUnknown indicates that the container is in an error
    10  	// state where information about it cannot be retrieved
    11  	ContainerStateUnknown ContainerStatus = iota
    12  	// ContainerStateConfigured indicates that the container has had its
    13  	// storage configured but it has not been created in the OCI runtime
    14  	ContainerStateConfigured ContainerStatus = iota
    15  	// ContainerStateCreated indicates the container has been created in
    16  	// the OCI runtime but not started
    17  	ContainerStateCreated ContainerStatus = iota
    18  	// ContainerStateRunning indicates the container is currently executing
    19  	ContainerStateRunning ContainerStatus = iota
    20  	// ContainerStateStopped indicates that the container was running but has
    21  	// exited
    22  	ContainerStateStopped ContainerStatus = iota
    23  	// ContainerStatePaused indicates that the container has been paused
    24  	ContainerStatePaused ContainerStatus = iota
    25  	// ContainerStateExited indicates the the container has stopped and been
    26  	// cleaned up
    27  	ContainerStateExited ContainerStatus = iota
    28  	// ContainerStateRemoving indicates the container is in the process of
    29  	// being removed.
    30  	ContainerStateRemoving ContainerStatus = iota
    31  )
    32  
    33  // ContainerStatus returns a string representation for users
    34  // of a container state
    35  func (t ContainerStatus) String() string {
    36  	switch t {
    37  	case ContainerStateUnknown:
    38  		return "unknown"
    39  	case ContainerStateConfigured:
    40  		return "configured"
    41  	case ContainerStateCreated:
    42  		return "created"
    43  	case ContainerStateRunning:
    44  		return "running"
    45  	case ContainerStateStopped:
    46  		return "stopped"
    47  	case ContainerStatePaused:
    48  		return "paused"
    49  	case ContainerStateExited:
    50  		return "exited"
    51  	case ContainerStateRemoving:
    52  		return "removing"
    53  	}
    54  	return "bad state"
    55  }
    56  
    57  // StringToContainerStatus converts a string representation of a containers
    58  // status into an actual container status type
    59  func StringToContainerStatus(status string) (ContainerStatus, error) {
    60  	switch status {
    61  	case ContainerStateUnknown.String():
    62  		return ContainerStateUnknown, nil
    63  	case ContainerStateConfigured.String():
    64  		return ContainerStateConfigured, nil
    65  	case ContainerStateCreated.String():
    66  		return ContainerStateCreated, nil
    67  	case ContainerStateRunning.String():
    68  		return ContainerStateRunning, nil
    69  	case ContainerStateStopped.String():
    70  		return ContainerStateStopped, nil
    71  	case ContainerStatePaused.String():
    72  		return ContainerStatePaused, nil
    73  	case ContainerStateExited.String():
    74  		return ContainerStateExited, nil
    75  	case ContainerStateRemoving.String():
    76  		return ContainerStateRemoving, nil
    77  	default:
    78  		return ContainerStateUnknown, errors.Wrapf(ErrInvalidArg, "unknown container state: %s", status)
    79  	}
    80  }
    81  
    82  // ContainerExecStatus is the status of an exec session within a container.
    83  type ContainerExecStatus int
    84  
    85  const (
    86  	// ExecStateUnknown indicates that the state of the exec session is not
    87  	// known.
    88  	ExecStateUnknown ContainerExecStatus = iota
    89  	// ExecStateCreated indicates that the exec session has been created but
    90  	// not yet started
    91  	ExecStateCreated ContainerExecStatus = iota
    92  	// ExecStateRunning indicates that the exec session has been started but
    93  	// has not yet exited.
    94  	ExecStateRunning ContainerExecStatus = iota
    95  	// ExecStateStopped indicates that the exec session has stopped and is
    96  	// no longer running.
    97  	ExecStateStopped ContainerExecStatus = iota
    98  )
    99  
   100  // String returns a string representation of a given exec state.
   101  func (s ContainerExecStatus) String() string {
   102  	switch s {
   103  	case ExecStateUnknown:
   104  		return "unknown"
   105  	case ExecStateCreated:
   106  		return "created"
   107  	case ExecStateRunning:
   108  		return "running"
   109  	case ExecStateStopped:
   110  		return "stopped"
   111  	default:
   112  		return "bad state"
   113  	}
   114  }
   115  
   116  // ContainerStats contains the statistics information for a running container
   117  type ContainerStats struct {
   118  	ContainerID   string
   119  	Name          string
   120  	PerCPU        []uint64
   121  	CPU           float64
   122  	CPUNano       uint64
   123  	CPUSystemNano uint64
   124  	SystemNano    uint64
   125  	MemUsage      uint64
   126  	MemLimit      uint64
   127  	MemPerc       float64
   128  	NetInput      uint64
   129  	NetOutput     uint64
   130  	BlockInput    uint64
   131  	BlockOutput   uint64
   132  	PIDs          uint64
   133  }