diff options
Diffstat (limited to 'libpod/container.go')
-rw-r--r-- | libpod/container.go | 66 |
1 files changed, 11 insertions, 55 deletions
diff --git a/libpod/container.go b/libpod/container.go index d3359e24d..89cf83707 100644 --- a/libpod/container.go +++ b/libpod/container.go @@ -181,9 +181,13 @@ type ContainerState struct { PID int `json:"pid,omitempty"` // ConmonPID is the PID of the container's conmon ConmonPID int `json:"conmonPid,omitempty"` - // ExecSessions contains active exec sessions for container - // Exec session ID is mapped to PID of exec process - ExecSessions map[string]*ExecSession `json:"execSessions,omitempty"` + // ExecSessions contains all exec sessions that are associated with this + // container. + ExecSessions map[string]*ExecSession `json:"newExecSessions,omitempty"` + // LegacyExecSessions are legacy exec sessions from older versions of + // Podman. + // These are DEPRECATED and will be removed in a future release. + LegacyExecSessions map[string]*legacyExecSession `json:"execSessions,omitempty"` // NetworkStatus contains the configuration results for all networks // the pod is attached to. Only populated if we created a network // namespace for the container, and the network namespace is currently @@ -214,54 +218,6 @@ type ContainerState struct { containerPlatformState } -// ExecSession contains information on an active exec session -type ExecSession struct { - // ID is the ID of the exec session. - ID string `json:"id"` - // Command the the command that will be invoked in the exec session. - Command []string `json:"command"` - // State is the state of the exec session. - State define.ContainerExecStatus `json:"state"` - // PID is the PID of the process created by the exec session. - PID int `json:"pid,omitempty"` - - // Terminal is whether the exec session will allocate a pseudoterminal. - Terminal bool `json:"terminal,omitempty"` - // AttachStdin is whether the STDIN stream will be forwarded to the exec - // session's first process when attaching. Only available if Terminal is - // false. - AttachStdin bool `json:"attachStdin,omitempty"` - // AttachStdout is whether the STDOUT stream will be forwarded to the - // exec session's first process when attaching. Only available if - // Terminal is false. - AttachStdout bool `json:"attachStdout,omitempty"` - // AttachStderr is whether the STDERR stream will be forwarded to the - // exec session's first process when attaching. Only available if - // Terminal is false. - AttachStderr bool `json:"attachStderr,omitempty"` - // DetachKeys are keys that will be used to detach from the exec - // session. Here, nil will use the default detach keys, where a pointer - // to the empty string ("") will disable detaching via detach keys. - DetachKeys *string `json:"detachKeys,omitempty"` - // Environment is a set of environment variables that will be set for - // the first process started by the exec session. - Environment map[string]string `json:"environment,omitempty"` - // Privileged is whether the exec session will be privileged - that is, - // will be granted additional capabilities. - Privileged bool `json:"privileged,omitempty"` - // User is the user the exec session will be run as. - User string `json:"user,omitempty"` - // WorkDir is the working directory for the first process that will be - // launched by the exec session. - WorkDir string `json:"workDir,omitempty"` - // PreserveFDs indicates that a number of extra FDs from the process - // running libpod will be passed into the container. These are assumed - // to begin at 3 (immediately after the standard streams). The number - // given is the number that will be passed into the exec session, - // starting at 3. - PreserveFDs uint `json:"preserveFds,omitempty"` -} - // ContainerConfig contains all information that was used to create the // container. It may not be changed once created. // It is stored, read-only, on disk @@ -973,13 +929,13 @@ func (c *Container) ExecSession(id string) (*ExecSession, error) { session, ok := c.state.ExecSessions[id] if !ok { - return nil, errors.Wrapf(define.ErrNoSuchCtr, "no exec session with ID %s found in container %s", id, c.ID()) + return nil, errors.Wrapf(define.ErrNoSuchExecSession, "no exec session with ID %s found in container %s", id, c.ID()) } returnSession := new(ExecSession) - returnSession.ID = session.ID - returnSession.Command = session.Command - returnSession.PID = session.PID + if err := JSONDeepCopy(session, returnSession); err != nil { + return nil, errors.Wrapf(err, "error copying contents of container %s exec session %s", c.ID(), session.ID()) + } return returnSession, nil } |