aboutsummaryrefslogtreecommitdiff
path: root/libpod/stats.go
diff options
context:
space:
mode:
authorDaniel J Walsh <dwalsh@redhat.com>2018-01-18 15:54:16 -0500
committerAtomic Bot <atomic-devel@projectatomic.io>2018-01-19 17:00:15 +0000
commit70306466d08c0e52a5a70c6d8eb8b021f95d22de (patch)
tree26497a9a1efbbb33b1f3e960abbbc49d95a0ded4 /libpod/stats.go
parenta4701b56311d5d934543e2b4306b08baa844ec3f (diff)
downloadpodman-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/stats.go')
-rw-r--r--libpod/stats.go6
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)