mirror of
https://github.com/containers/podman.git
synced 2025-06-22 01:48:54 +08:00
Major fixes to podman ps --format=json output
A number of fields were never being populated. Populate them as best we can. Add a new field, exited, to indicate whether the exit code has meaning (IE, the container has exited). Fix handling of running time - it stops ticking when the container stops. There is further work needed here, I suspect. Signed-off-by: Matthew Heon <mheon@redhat.com>
This commit is contained in:
@ -38,6 +38,7 @@ type BatchContainerStruct struct {
|
||||
ConConfig *libpod.ContainerConfig
|
||||
ConState libpod.ContainerStatus
|
||||
ExitCode int32
|
||||
Exited bool
|
||||
Pid int
|
||||
RootFsSize, RwSize int64
|
||||
StartedTime time.Time
|
||||
@ -63,6 +64,7 @@ func BatchContainerOp(ctr *libpod.Container, opts PsOptions) (BatchContainerStru
|
||||
conState libpod.ContainerStatus
|
||||
err error
|
||||
exitCode int32
|
||||
exited bool
|
||||
pid int
|
||||
rootFsSize, rwSize int64
|
||||
startedTime time.Time
|
||||
@ -75,7 +77,7 @@ func BatchContainerOp(ctr *libpod.Container, opts PsOptions) (BatchContainerStru
|
||||
return errors.Wrapf(err, "unable to obtain container state")
|
||||
}
|
||||
|
||||
exitCode, _, err = c.ExitCode()
|
||||
exitCode, exited, err = c.ExitCode()
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "unable to obtain container exit code")
|
||||
}
|
||||
@ -115,6 +117,7 @@ func BatchContainerOp(ctr *libpod.Container, opts PsOptions) (BatchContainerStru
|
||||
ConConfig: conConfig,
|
||||
ConState: conState,
|
||||
ExitCode: exitCode,
|
||||
Exited: exited,
|
||||
Pid: pid,
|
||||
RootFsSize: rootFsSize,
|
||||
RwSize: rwSize,
|
||||
|
@ -58,6 +58,7 @@ type psJSONParams struct {
|
||||
Command []string `json:"command"`
|
||||
CreatedAt time.Time `json:"createdAt"`
|
||||
ExitCode int32 `json:"exitCode"`
|
||||
Exited bool `json:"exited"`
|
||||
RunningFor time.Duration `json:"runningFor"`
|
||||
Status string `json:"status"`
|
||||
PID int `json:"PID"`
|
||||
@ -576,22 +577,26 @@ func getAndSortJSONParams(containers []*libpod.Container, opts batchcontainer.Ps
|
||||
ns = batchcontainer.GetNamespaces(batchInfo.Pid)
|
||||
}
|
||||
params := psJSONParams{
|
||||
ID: ctr.ID(),
|
||||
Image: batchInfo.ConConfig.RootfsImageName,
|
||||
ImageID: batchInfo.ConConfig.RootfsImageID,
|
||||
Command: batchInfo.ConConfig.Spec.Process.Args,
|
||||
CreatedAt: batchInfo.ConConfig.CreatedTime,
|
||||
Status: batchInfo.ConState.String(),
|
||||
Ports: batchInfo.ConConfig.PortMappings,
|
||||
RootFsSize: batchInfo.RootFsSize,
|
||||
RWSize: batchInfo.RwSize,
|
||||
Names: batchInfo.ConConfig.Name,
|
||||
Labels: batchInfo.ConConfig.Labels,
|
||||
Mounts: batchInfo.ConConfig.UserVolumes,
|
||||
Namespaces: ns,
|
||||
ID: ctr.ID(),
|
||||
Image: batchInfo.ConConfig.RootfsImageName,
|
||||
ImageID: batchInfo.ConConfig.RootfsImageID,
|
||||
Command: batchInfo.ConConfig.Spec.Process.Args,
|
||||
CreatedAt: batchInfo.ConConfig.CreatedTime,
|
||||
ExitCode: batchInfo.ExitCode,
|
||||
Exited: batchInfo.Exited,
|
||||
Status: batchInfo.ConState.String(),
|
||||
PID: batchInfo.Pid,
|
||||
Ports: batchInfo.ConConfig.PortMappings,
|
||||
RootFsSize: batchInfo.RootFsSize,
|
||||
RWSize: batchInfo.RwSize,
|
||||
Names: batchInfo.ConConfig.Name,
|
||||
Labels: batchInfo.ConConfig.Labels,
|
||||
Mounts: batchInfo.ConConfig.UserVolumes,
|
||||
ContainerRunning: batchInfo.ConState == libpod.ContainerStateRunning,
|
||||
Namespaces: ns,
|
||||
}
|
||||
|
||||
if !batchInfo.StartedTime.IsZero() {
|
||||
if !batchInfo.StartedTime.IsZero() && batchInfo.ConState == libpod.ContainerStateRunning {
|
||||
params.RunningFor = time.Since(batchInfo.StartedTime)
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user