mirror of
https://github.com/containers/podman.git
synced 2025-05-21 00:56:36 +08:00
Search registries with an empty query
Adds functionality to search registries implementing the v2 endpoint with an empty query, that is the results will be all the available images on the registries. If this is tried with a v1 registry an error will occur. To search a whole registry, there needs to be a trailing slash at the end, i.e `podman search registry.fedoraproject.org/`. Signed-off-by: Urvashi Mohnani <umohnani@redhat.com> Closes: #1444 Approved by: rhatdan
This commit is contained in:

committed by
Atomic Bot

parent
9bc3c9d11c
commit
70b160ae03
@ -345,6 +345,11 @@ func matchesOfficialFilter(filter searchFilterParams, result docker.SearchResult
|
||||
}
|
||||
|
||||
func getRegistry(image string) (string, error) {
|
||||
// It is possible to only have the registry name in the format "myregistry/"
|
||||
// if so, just trim the "/" from the end and return the registry name
|
||||
if strings.HasSuffix(image, "/") {
|
||||
return strings.TrimSuffix(image, "/"), nil
|
||||
}
|
||||
imgRef, err := reference.Parse(image)
|
||||
if err != nil {
|
||||
return "", err
|
||||
|
@ -10,10 +10,12 @@ podman\-search - Search a registry for an image
|
||||
**podman search** searches a registry or a list of registries for a matching image.
|
||||
The user can specify which registry to search by prefixing the registry in the search term
|
||||
(example **registry.fedoraproject.org/fedora**), default is the registries in the
|
||||
**registires.search** table in the config file - **/etc/containers/registries.conf**.
|
||||
**registries.search** table in the config file - **/etc/containers/registries.conf**.
|
||||
The number of results can be limited using the **--limit** flag. If more than one registry
|
||||
is being searched, the limit will be applied to each registry. The output can be filtered
|
||||
using the **--filter** flag.
|
||||
using the **--filter** flag. To get all available images in a registry without a specific
|
||||
search term, the user can just enter the registry name with a trailing "/" (example **registry.fedoraproject.org/**).
|
||||
Note, searching without a search term will only work for registries that implement the v2 API.
|
||||
|
||||
**podman [GLOBAL OPTIONS]**
|
||||
|
||||
@ -116,6 +118,27 @@ INDEX NAME
|
||||
fedoraproject.org fedoraproject.org/fedora
|
||||
fedoraproject.org fedoraproject.org/fedora-minimal
|
||||
```
|
||||
|
||||
```
|
||||
$ podman search registry.fedoraproject.org/
|
||||
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
|
||||
fedoraproject.org registry.fedoraproject.org/f25/cockpit 0
|
||||
fedoraproject.org registry.fedoraproject.org/f25/container-engine 0
|
||||
fedoraproject.org registry.fedoraproject.org/f25/docker 0
|
||||
fedoraproject.org registry.fedoraproject.org/f25/etcd 0
|
||||
fedoraproject.org registry.fedoraproject.org/f25/flannel 0
|
||||
fedoraproject.org registry.fedoraproject.org/f25/httpd 0
|
||||
fedoraproject.org registry.fedoraproject.org/f25/kubernetes-apiserver 0
|
||||
fedoraproject.org registry.fedoraproject.org/f25/kubernetes-controller-manager 0
|
||||
fedoraproject.org registry.fedoraproject.org/f25/kubernetes-kubelet 0
|
||||
fedoraproject.org registry.fedoraproject.org/f25/kubernetes-master 0
|
||||
fedoraproject.org registry.fedoraproject.org/f25/kubernetes-node 0
|
||||
fedoraproject.org registry.fedoraproject.org/f25/kubernetes-proxy 0
|
||||
fedoraproject.org registry.fedoraproject.org/f25/kubernetes-scheduler 0
|
||||
fedoraproject.org registry.fedoraproject.org/f25/mariadb 0
|
||||
```
|
||||
Note: This works only with registries that implement the v2 API. If tried with a v1 registry an error will be returned.
|
||||
|
||||
## FILES
|
||||
|
||||
**registries.conf** (`/etc/containers/registries.conf`)
|
||||
|
@ -84,7 +84,7 @@ var _ = Describe("Podman search", func() {
|
||||
})
|
||||
|
||||
It("podman search limit flag", func() {
|
||||
search := podmanTest.Podman([]string{"search", "--limit", "3", "alpine"})
|
||||
search := podmanTest.Podman([]string{"search", "--limit", "3", "docker.io/alpine"})
|
||||
search.WaitWithDefaultTimeout()
|
||||
Expect(search.ExitCode()).To(Equal(0))
|
||||
Expect(len(search.OutputToStringArray())).To(Equal(4))
|
||||
@ -120,6 +120,13 @@ var _ = Describe("Podman search", func() {
|
||||
}
|
||||
})
|
||||
|
||||
It("podman search v2 registry with empty query", func() {
|
||||
search := podmanTest.Podman([]string{"search", "registry.fedoraproject.org/"})
|
||||
search.WaitWithDefaultTimeout()
|
||||
Expect(search.ExitCode()).To(Equal(0))
|
||||
Expect(len(search.OutputToStringArray())).To(BeNumerically(">=", 1))
|
||||
})
|
||||
|
||||
It("podman search attempts HTTP if tls-verify flag is set false", func() {
|
||||
podmanTest.RestoreArtifact(registry)
|
||||
fakereg := podmanTest.Podman([]string{"run", "-d", "--name", "registry", "-p", "5000:5000", registry, "/entrypoint.sh", "/etc/docker/registry/config.yml"})
|
||||
|
Reference in New Issue
Block a user