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 }