diff options
author | Daniel J Walsh <dwalsh@redhat.com> | 2018-01-18 15:54:16 -0500 |
---|---|---|
committer | Atomic Bot <atomic-devel@projectatomic.io> | 2018-01-19 17:00:15 +0000 |
commit | 70306466d08c0e52a5a70c6d8eb8b021f95d22de (patch) | |
tree | 26497a9a1efbbb33b1f3e960abbbc49d95a0ded4 /libpod | |
parent | a4701b56311d5d934543e2b4306b08baa844ec3f (diff) | |
download | podman-70306466d08c0e52a5a70c6d8eb8b021f95d22de.tar.gz podman-70306466d08c0e52a5a70c6d8eb8b021f95d22de.tar.bz2 podman-70306466d08c0e52a5a70c6d8eb8b021f95d22de.zip |
Cleanup of podman stats
Fix errors when containers are not running.
--all, --latest, containers can not be used at same time.
Should match the output of docker stats, 0 values replaced by "--"
Should return stats right away if container is not running.
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
Closes: #244
Approved by: TomSweeneyRedHat
Diffstat (limited to 'libpod')
-rw-r--r-- | libpod/stats.go | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/libpod/stats.go b/libpod/stats.go index 86da0679e..e87654277 100644 --- a/libpod/stats.go +++ b/libpod/stats.go @@ -29,11 +29,16 @@ type ContainerStats struct { // GetContainerStats gets the running stats for a given container func (c *Container) GetContainerStats(previousStats *ContainerStats) (*ContainerStats, error) { stats := new(ContainerStats) + stats.ContainerID = c.ID() c.lock.Lock() defer c.lock.Unlock() if err := c.syncContainer(); err != nil { return stats, errors.Wrapf(err, "error updating container %s state", c.ID()) } + if c.state.State != ContainerStateRunning { + return stats, nil + } + cgroup, err := cgroups.Load(cgroups.V1, c.CGroupPath()) if err != nil { return stats, errors.Wrapf(err, "unable to load cgroup at %+v", c.CGroupPath()) @@ -50,7 +55,6 @@ func (c *Container) GetContainerStats(previousStats *ContainerStats) (*Container previousCPU := previousStats.CPUNano previousSystem := previousStats.SystemNano - stats.ContainerID = c.ID() stats.CPU = calculateCPUPercent(cgroupStats, previousCPU, previousSystem) stats.MemUsage = cgroupStats.Memory.Usage.Usage stats.MemLimit = getMemLimit(cgroupStats.Memory.Usage.Limit) |