Merge pull request #2557 from QiWang19/filter2241

fix bug in podman images list all images with same name
This commit is contained in:
OpenShift Merge Robot
2019-03-08 09:23:36 -08:00
committed by GitHub
3 changed files with 29 additions and 16 deletions

View File

@ -2,6 +2,7 @@ package main
import ( import (
"context" "context"
"fmt"
"reflect" "reflect"
"sort" "sort"
"strings" "strings"
@ -128,7 +129,7 @@ func init() {
func imagesCmd(c *cliconfig.ImagesValues) error { func imagesCmd(c *cliconfig.ImagesValues) error {
var ( var (
filterFuncs []imagefilters.ResultFilter filterFuncs []imagefilters.ResultFilter
newImage *adapter.ContainerImage image string
) )
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(&c.PodmanCommand)
@ -137,24 +138,24 @@ func imagesCmd(c *cliconfig.ImagesValues) error {
} }
defer runtime.Shutdown(false) defer runtime.Shutdown(false)
if len(c.InputArgs) == 1 { if len(c.InputArgs) == 1 {
newImage, err = runtime.NewImageFromLocal(c.InputArgs[0]) image = c.InputArgs[0]
if err != nil {
return err
} }
}
if len(c.InputArgs) > 1 { if len(c.InputArgs) > 1 {
return errors.New("'podman images' requires at most 1 argument") return errors.New("'podman images' requires at most 1 argument")
} }
if len(c.Filter) > 0 && image != "" {
return errors.New("can not specify an image and a filter")
}
ctx := getContext() ctx := getContext()
if len(c.Filter) > 0 || newImage != nil { if len(c.Filter) > 0 {
filterFuncs, err = CreateFilterFuncs(ctx, runtime, c.Filter, newImage) filterFuncs, err = CreateFilterFuncs(ctx, runtime, c.Filter, nil)
} else {
filterFuncs, err = CreateFilterFuncs(ctx, runtime, []string{fmt.Sprintf("reference=%s", image)}, nil)
}
if err != nil { if err != nil {
return err return err
} }
}
opts := imagesOptions{ opts := imagesOptions{
quiet: c.Quiet, quiet: c.Quiet,
@ -174,7 +175,7 @@ func imagesCmd(c *cliconfig.ImagesValues) error {
var filteredImages []*adapter.ContainerImage var filteredImages []*adapter.ContainerImage
//filter the images //filter the images
if len(c.Filter) > 0 || newImage != nil { if len(c.Filter) > 0 || len(c.InputArgs) == 1 {
filteredImages = imagefilters.FilterImages(images, filterFuncs) filteredImages = imagefilters.FilterImages(images, filterFuncs)
} else { } else {
filteredImages = images filteredImages = images

View File

@ -112,6 +112,18 @@ var _ = Describe("Podman images", func() {
session.WaitWithDefaultTimeout() session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0)) Expect(session.ExitCode()).To(Equal(0))
Expect(len(session.OutputToStringArray())).To(Equal(1)) Expect(len(session.OutputToStringArray())).To(Equal(1))
session = podmanTest.Podman([]string{"tag", ALPINE, "foo:a"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
session = podmanTest.Podman([]string{"tag", BB, "foo:b"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
session = podmanTest.Podman([]string{"images", "-q", "foo"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
Expect(len(session.OutputToStringArray())).To(Equal(2))
}) })
It("podman images filter reference", func() { It("podman images filter reference", func() {

View File

@ -190,7 +190,7 @@ var _ = Describe("Podman load", func() {
load.WaitWithDefaultTimeout() load.WaitWithDefaultTimeout()
Expect(load.ExitCode()).To(Equal(0)) Expect(load.ExitCode()).To(Equal(0))
result := podmanTest.Podman([]string{"images", "-f", "label", "hello:world"}) result := podmanTest.Podman([]string{"images", "hello:world"})
result.WaitWithDefaultTimeout() result.WaitWithDefaultTimeout()
Expect(result.LineInOutputContains("docker")).To(Not(BeTrue())) Expect(result.LineInOutputContains("docker")).To(Not(BeTrue()))
Expect(result.LineInOutputContains("localhost")).To(BeTrue()) Expect(result.LineInOutputContains("localhost")).To(BeTrue())
@ -216,7 +216,7 @@ var _ = Describe("Podman load", func() {
load.WaitWithDefaultTimeout() load.WaitWithDefaultTimeout()
Expect(load.ExitCode()).To(Equal(0)) Expect(load.ExitCode()).To(Equal(0))
result := podmanTest.Podman([]string{"images", "-f", "label", "hello:latest"}) result := podmanTest.Podman([]string{"images", "hello:latest"})
result.WaitWithDefaultTimeout() result.WaitWithDefaultTimeout()
Expect(result.LineInOutputContains("docker")).To(Not(BeTrue())) Expect(result.LineInOutputContains("docker")).To(Not(BeTrue()))
Expect(result.LineInOutputContains("localhost")).To(BeTrue()) Expect(result.LineInOutputContains("localhost")).To(BeTrue())
@ -241,7 +241,7 @@ var _ = Describe("Podman load", func() {
load.WaitWithDefaultTimeout() load.WaitWithDefaultTimeout()
Expect(load.ExitCode()).To(Equal(0)) Expect(load.ExitCode()).To(Equal(0))
result := podmanTest.Podman([]string{"images", "-f", "label", "load:latest"}) result := podmanTest.Podman([]string{"images", "load:latest"})
result.WaitWithDefaultTimeout() result.WaitWithDefaultTimeout()
Expect(result.LineInOutputContains("docker")).To(Not(BeTrue())) Expect(result.LineInOutputContains("docker")).To(Not(BeTrue()))
Expect(result.LineInOutputContains("localhost")).To(BeTrue()) Expect(result.LineInOutputContains("localhost")).To(BeTrue())