Refactored method of getting pods

Now, for commands that have --latest and --all, the context flags are checked, and pods are grabbed in a single function

Signed-off-by: haircommander <pehunt@redhat.com>

Closes: #1161
Approved by: rhatdan
This commit is contained in:
haircommander
2018-07-25 17:31:21 -04:00
committed by Atomic Bot
parent 3dd577e93c
commit 876a30590b
6 changed files with 65 additions and 153 deletions

View File

@ -174,3 +174,44 @@ func checkMutuallyExclusiveFlags(c *cli.Context) error {
}
return nil
}
// For pod commands that have a latest and all flag, getPodsFromContext gets
// pods the user specifies. If there's an error before getting pods, the pods slice
// will be empty and error will be not nil. If an error occured after, the pod slice
// will hold all of the successful pods, and error will hold the last error.
// The remaining errors will be logged. On success, pods will hold all pods and
// error will be nil.
func getPodsFromContext(c *cli.Context, r *libpod.Runtime) ([]*libpod.Pod, error) {
args := c.Args()
var pods []*libpod.Pod
var lastError error
var err error
if c.Bool("all") {
pods, err = r.Pods()
if err != nil {
return nil, errors.Wrapf(err, "unable to get running pods")
}
}
if c.Bool("latest") {
pod, err := r.GetLatestPod()
if err != nil {
return nil, errors.Wrapf(err, "unable to get latest pod")
}
pods = append(pods, pod)
}
for _, i := range args {
pod, err := r.LookupPod(i)
if err != nil {
if lastError != nil {
logrus.Errorf("%q", lastError)
}
lastError = errors.Wrapf(err, "unable to find pod %s", i)
continue
}
pods = append(pods, pod)
}
return pods, lastError
}