mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Resolve ambiguity on registry v2 ping
v2 ping now checks for a Docker-Distribution-API-Version header that identifies the endpoint as "registry/2.0" Docker-DCO-1.1-Signed-off-by: Josh Hawn <josh.hawn@docker.com> (github: jlhawn)
This commit is contained in:
parent
5f5e02d22c
commit
f46923be8e
3 changed files with 78 additions and 2 deletions
|
|
@ -227,6 +227,21 @@ func (e *Endpoint) pingV2() (RegistryInfo, error) {
|
|||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
// The endpoint may have multiple supported versions.
|
||||
// Ensure it supports the v2 Registry API.
|
||||
var supportsV2 bool
|
||||
|
||||
for _, versionName := range resp.Header[http.CanonicalHeaderKey("Docker-Distribution-API-Version")] {
|
||||
if versionName == "registry/2.0" {
|
||||
supportsV2 = true
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if !supportsV2 {
|
||||
return RegistryInfo{}, fmt.Errorf("%s does not appear to be a v2 registry endpoint", e)
|
||||
}
|
||||
|
||||
if resp.StatusCode == http.StatusOK {
|
||||
// It would seem that no authentication/authorization is required.
|
||||
// So we don't need to parse/add any authorization schemes.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue