summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhaircommander <pehunt@redhat.com>2018-07-20 11:35:40 -0400
committerhaircommander <pehunt@redhat.com>2018-07-20 11:38:54 -0400
commit7716628e6f86f79b5366716f7938f7fc3d83eafc (patch)
tree3be5c4b0471caeb9d44d65e9e6bfb628517aaf03
parentba1871dac033783ab0329c9b3c9113a34a90992f (diff)
downloadpodman-7716628e6f86f79b5366716f7938f7fc3d83eafc.tar.gz
podman-7716628e6f86f79b5366716f7938f7fc3d83eafc.tar.bz2
podman-7716628e6f86f79b5366716f7938f7fc3d83eafc.zip
Pod ps now uses pod.Status()
It used to call ctr.State() to figure out what the pod status was, which certainly locked/unlocked excessively. Status now uses the libpod/pod function that bypasses this. Signed-off-by: haircommander <pehunt@redhat.com>
-rw-r--r--cmd/podman/pod_ps.go36
1 files changed, 14 insertions, 22 deletions
diff --git a/cmd/podman/pod_ps.go b/cmd/podman/pod_ps.go
index 470810901..0f5c7a51d 100644
--- a/cmd/podman/pod_ps.go
+++ b/cmd/podman/pod_ps.go
@@ -296,17 +296,13 @@ func generatePodFilterFuncs(filter, filterValue string, runtime *libpod.Runtime)
return nil, errors.Errorf("%s is not a valid status", filterValue)
}
return func(p *libpod.Pod) bool {
- ctrs, err := p.AllContainers()
+ ctr_statuses, err := p.Status()
if err != nil {
return false
}
- for _, ctr := range ctrs {
- status, err := ctr.State()
- if err != nil {
- return false
- }
- state := status.String()
- if status == libpod.ContainerStateConfigured {
+ for _, ctr_status := range ctr_statuses {
+ state := ctr_status.String()
+ if ctr_status == libpod.ContainerStateConfigured {
state = "created"
}
if state == filterValue {
@@ -328,11 +324,7 @@ func generatePodFilterFuncs(filter, filterValue string, runtime *libpod.Runtime)
return nil, errors.Errorf("%s is not a valid pod status", filterValue)
}
return func(p *libpod.Pod) bool {
- ctrs, err := p.AllContainers()
- if err != nil {
- return false
- }
- status, err := getPodStatus(ctrs)
+ status, err := getPodStatus(p)
if err != nil {
return false
}
@@ -468,8 +460,12 @@ func getPodTemplateOutput(psParams []podPsJSONParams, opts podPsOptions) ([]podP
return psOutput, nil
}
-func getPodStatus(ctrs []*libpod.Container) (string, error) {
- ctrNum := len(ctrs)
+func getPodStatus(pod *libpod.Pod) (string, error) {
+ ctr_statuses, err := pod.Status()
+ if err != nil {
+ return ERROR, err
+ }
+ ctrNum := len(ctr_statuses)
if ctrNum == 0 {
return CREATED, nil
}
@@ -480,12 +476,8 @@ func getPodStatus(ctrs []*libpod.Container) (string, error) {
CREATED: 0,
ERROR: 0,
}
- for _, ctr := range ctrs {
- state, err := ctr.State()
- if err != nil {
- return "", err
- }
- switch state {
+ for _, ctr_status := range ctr_statuses {
+ switch ctr_status {
case libpod.ContainerStateStopped:
statuses[STOPPED]++
case libpod.ContainerStateRunning:
@@ -527,7 +519,7 @@ func getAndSortPodJSONParams(pods []*libpod.Pod, opts podPsOptions, runtime *lib
return nil, err
}
ctrNum := len(ctrs)
- status, err := getPodStatus(ctrs)
+ status, err := getPodStatus(pod)
if err != nil {
return nil, err
}