mirror of
https://github.com/containers/podman.git
synced 2025-06-21 01:19:15 +08:00
Merge pull request #10390 from jmguzik/fix-cmd-prune-filter-images
Fix image prune --filter cmd behavior
This commit is contained in:
@ -59,7 +59,15 @@ func prune(cmd *cobra.Command, args []string) error {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
filterMap, err := common.ParseFilters(filter)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for k, v := range filterMap {
|
||||
for _, val := range v {
|
||||
pruneOpts.Filter = append(pruneOpts.Filter, fmt.Sprintf("%s=%s", k, val))
|
||||
}
|
||||
}
|
||||
results, err := registry.ImageEngine().Prune(registry.GetContext(), pruneOpts)
|
||||
if err != nil {
|
||||
return err
|
||||
|
@ -451,19 +451,13 @@ func (p *PodmanTestIntegration) RunLsContainerInPod(name, pod string) (*PodmanSe
|
||||
// BuildImage uses podman build and buildah to build an image
|
||||
// called imageName based on a string dockerfile
|
||||
func (p *PodmanTestIntegration) BuildImage(dockerfile, imageName string, layers string) string {
|
||||
dockerfilePath := filepath.Join(p.TempDir, "Dockerfile")
|
||||
err := ioutil.WriteFile(dockerfilePath, []byte(dockerfile), 0755)
|
||||
Expect(err).To(BeNil())
|
||||
cmd := []string{"build", "--pull-never", "--layers=" + layers, "--file", dockerfilePath}
|
||||
if len(imageName) > 0 {
|
||||
cmd = append(cmd, []string{"-t", imageName}...)
|
||||
}
|
||||
cmd = append(cmd, p.TempDir)
|
||||
session := p.Podman(cmd)
|
||||
session.Wait(240)
|
||||
Expect(session).Should(Exit(0), fmt.Sprintf("BuildImage session output: %q", session.OutputToString()))
|
||||
output := session.OutputToStringArray()
|
||||
return output[len(output)-1]
|
||||
return p.buildImage(dockerfile, imageName, layers, "")
|
||||
}
|
||||
|
||||
// BuildImageWithLabel uses podman build and buildah to build an image
|
||||
// called imageName based on a string dockerfile, adds desired label to paramset
|
||||
func (p *PodmanTestIntegration) BuildImageWithLabel(dockerfile, imageName string, layers string, label string) string {
|
||||
return p.buildImage(dockerfile, imageName, layers, label)
|
||||
}
|
||||
|
||||
// PodmanPID execs podman and returns its PID
|
||||
@ -828,3 +822,22 @@ func (p *PodmanSessionIntegration) jq(jqCommand string) (string, error) {
|
||||
err := cmd.Run()
|
||||
return strings.TrimRight(out.String(), "\n"), err
|
||||
}
|
||||
|
||||
func (p *PodmanTestIntegration) buildImage(dockerfile, imageName string, layers string, label string) string {
|
||||
dockerfilePath := filepath.Join(p.TempDir, "Dockerfile")
|
||||
err := ioutil.WriteFile(dockerfilePath, []byte(dockerfile), 0755)
|
||||
Expect(err).To(BeNil())
|
||||
cmd := []string{"build", "--pull-never", "--layers=" + layers, "--file", dockerfilePath}
|
||||
if label != "" {
|
||||
cmd = append(cmd, "--label="+label)
|
||||
}
|
||||
if len(imageName) > 0 {
|
||||
cmd = append(cmd, []string{"-t", imageName}...)
|
||||
}
|
||||
cmd = append(cmd, p.TempDir)
|
||||
session := p.Podman(cmd)
|
||||
session.Wait(240)
|
||||
Expect(session).Should(Exit(0), fmt.Sprintf("BuildImage session output: %q", session.OutputToString()))
|
||||
output := session.OutputToStringArray()
|
||||
return output[len(output)-1]
|
||||
}
|
||||
|
@ -425,4 +425,25 @@ LABEL "com.example.vendor"="Example Vendor"
|
||||
Expect(result.OutputToStringArray()).To(Not(Equal(result1.OutputToStringArray())))
|
||||
})
|
||||
|
||||
It("podman image prune --filter", func() {
|
||||
dockerfile := `FROM quay.io/libpod/alpine:latest
|
||||
RUN > file
|
||||
`
|
||||
dockerfile2 := `FROM quay.io/libpod/alpine:latest
|
||||
RUN > file2
|
||||
`
|
||||
podmanTest.BuildImageWithLabel(dockerfile, "foobar.com/workdir:latest", "false", "abc")
|
||||
podmanTest.BuildImageWithLabel(dockerfile2, "foobar.com/workdir:latest", "false", "xyz")
|
||||
// --force used to to avoid y/n question
|
||||
result := podmanTest.Podman([]string{"image", "prune", "--filter", "label=abc", "--force"})
|
||||
result.WaitWithDefaultTimeout()
|
||||
Expect(result).Should(Exit(0))
|
||||
Expect(len(result.OutputToStringArray())).To(Equal(1))
|
||||
|
||||
//check if really abc is removed
|
||||
result = podmanTest.Podman([]string{"image", "list", "--filter", "label=abc"})
|
||||
Expect(len(result.OutputToStringArray())).To(Equal(0))
|
||||
|
||||
})
|
||||
|
||||
})
|
||||
|
Reference in New Issue
Block a user