mirror of
https://github.com/containers/podman.git
synced 2025-06-26 12:56:45 +08:00
correct stats err with non-running containers
when doing stats -a|--all, if you have non-running containers, we should not error on not being able to get information like PID, etc on them. Signed-off-by: baude <bbaude@redhat.com>
This commit is contained in:
@ -84,8 +84,7 @@ func statsCmd(c *cli.Context) error {
|
|||||||
if ctr > 1 {
|
if ctr > 1 {
|
||||||
return errors.Errorf("--all, --latest and containers cannot be used together")
|
return errors.Errorf("--all, --latest and containers cannot be used together")
|
||||||
} else if ctr == 0 {
|
} else if ctr == 0 {
|
||||||
// If user didn't specify, imply --all
|
return errors.Errorf("you must specify --all, --latest, or at least one container")
|
||||||
all = true
|
|
||||||
}
|
}
|
||||||
|
|
||||||
runtime, err := libpodruntime.GetRuntime(c)
|
runtime, err := libpodruntime.GetRuntime(c)
|
||||||
@ -126,6 +125,10 @@ func statsCmd(c *cli.Context) error {
|
|||||||
for _, ctr := range ctrs {
|
for _, ctr := range ctrs {
|
||||||
initialStats, err := ctr.GetContainerStats(&libpod.ContainerStats{})
|
initialStats, err := ctr.GetContainerStats(&libpod.ContainerStats{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
// when doing "all", dont worry about containers that are not running
|
||||||
|
if c.Bool("all") && errors.Cause(err) == libpod.ErrCtrRemoved || errors.Cause(err) == libpod.ErrNoSuchCtr || errors.Cause(err) == libpod.ErrCtrStateInvalid {
|
||||||
|
continue
|
||||||
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
containerStats[ctr.ID()] = initialStats
|
containerStats[ctr.ID()] = initialStats
|
||||||
|
@ -31,12 +31,6 @@ var _ = Describe("Podman stats", func() {
|
|||||||
GinkgoWriter.Write([]byte(timedResult))
|
GinkgoWriter.Write([]byte(timedResult))
|
||||||
})
|
})
|
||||||
|
|
||||||
It("podman stats should run with no containers", func() {
|
|
||||||
session := podmanTest.Podman([]string{"stats", "--no-stream"})
|
|
||||||
session.WaitWithDefaultTimeout()
|
|
||||||
Expect(session.ExitCode()).To(Equal(0))
|
|
||||||
})
|
|
||||||
|
|
||||||
It("podman stats with bogus container", func() {
|
It("podman stats with bogus container", func() {
|
||||||
session := podmanTest.Podman([]string{"stats", "--no-stream", "123"})
|
session := podmanTest.Podman([]string{"stats", "--no-stream", "123"})
|
||||||
session.WaitWithDefaultTimeout()
|
session.WaitWithDefaultTimeout()
|
||||||
@ -53,15 +47,6 @@ var _ = Describe("Podman stats", func() {
|
|||||||
Expect(session.ExitCode()).To(Equal(0))
|
Expect(session.ExitCode()).To(Equal(0))
|
||||||
})
|
})
|
||||||
|
|
||||||
It("podman stats on a running container no id", func() {
|
|
||||||
session := podmanTest.RunTopContainer("")
|
|
||||||
session.WaitWithDefaultTimeout()
|
|
||||||
Expect(session.ExitCode()).To(Equal(0))
|
|
||||||
session = podmanTest.Podman([]string{"stats", "--no-stream"})
|
|
||||||
session.WaitWithDefaultTimeout()
|
|
||||||
Expect(session.ExitCode()).To(Equal(0))
|
|
||||||
})
|
|
||||||
|
|
||||||
It("podman stats on all containers", func() {
|
It("podman stats on all containers", func() {
|
||||||
session := podmanTest.RunTopContainer("")
|
session := podmanTest.RunTopContainer("")
|
||||||
session.WaitWithDefaultTimeout()
|
session.WaitWithDefaultTimeout()
|
||||||
@ -75,7 +60,7 @@ var _ = Describe("Podman stats", func() {
|
|||||||
session := podmanTest.RunTopContainer("")
|
session := podmanTest.RunTopContainer("")
|
||||||
session.WaitWithDefaultTimeout()
|
session.WaitWithDefaultTimeout()
|
||||||
Expect(session.ExitCode()).To(Equal(0))
|
Expect(session.ExitCode()).To(Equal(0))
|
||||||
session = podmanTest.Podman([]string{"stats", "--no-stream", "--format", "\"{{.Container}}\""})
|
session = podmanTest.Podman([]string{"stats", "--all", "--no-stream", "--format", "\"{{.Container}}\""})
|
||||||
session.WaitWithDefaultTimeout()
|
session.WaitWithDefaultTimeout()
|
||||||
Expect(session.ExitCode()).To(Equal(0))
|
Expect(session.ExitCode()).To(Equal(0))
|
||||||
})
|
})
|
||||||
@ -84,7 +69,7 @@ var _ = Describe("Podman stats", func() {
|
|||||||
session := podmanTest.RunTopContainer("")
|
session := podmanTest.RunTopContainer("")
|
||||||
session.WaitWithDefaultTimeout()
|
session.WaitWithDefaultTimeout()
|
||||||
Expect(session.ExitCode()).To(Equal(0))
|
Expect(session.ExitCode()).To(Equal(0))
|
||||||
session = podmanTest.Podman([]string{"stats", "--no-stream", "--format", "json"})
|
session = podmanTest.Podman([]string{"stats", "--all", "--no-stream", "--format", "json"})
|
||||||
session.WaitWithDefaultTimeout()
|
session.WaitWithDefaultTimeout()
|
||||||
Expect(session.ExitCode()).To(Equal(0))
|
Expect(session.ExitCode()).To(Equal(0))
|
||||||
Expect(session.IsJSONOutputValid()).To(BeTrue())
|
Expect(session.IsJSONOutputValid()).To(BeTrue())
|
||||||
|
Reference in New Issue
Block a user