forked from TrueCloudLab/distribution
065ddf0186
Further differentiate the APIEndpoint used with V2 with the endpoint type which is only used for v1 registry interactions Rename Endpoint to V1Endpoint and remove version ambiguity Use distribution token handler for login Signed-off-by: Derek McGowan <derek@mcgstyle.net> Signed-off-by: Aaron Lehmann <aaron.lehmann@docker.com>
70 lines
2 KiB
Go
70 lines
2 KiB
Go
package registry
|
|
|
|
import (
|
|
"github.com/docker/docker/reference"
|
|
registrytypes "github.com/docker/engine-api/types/registry"
|
|
)
|
|
|
|
// RepositoryData tracks the image list, list of endpoints, and list of tokens
|
|
// for a repository
|
|
type RepositoryData struct {
|
|
// ImgList is a list of images in the repository
|
|
ImgList map[string]*ImgData
|
|
// Endpoints is a list of endpoints returned in X-Docker-Endpoints
|
|
Endpoints []string
|
|
// Tokens is currently unused (remove it?)
|
|
Tokens []string
|
|
}
|
|
|
|
// ImgData is used to transfer image checksums to and from the registry
|
|
type ImgData struct {
|
|
// ID is an opaque string that identifies the image
|
|
ID string `json:"id"`
|
|
Checksum string `json:"checksum,omitempty"`
|
|
ChecksumPayload string `json:"-"`
|
|
Tag string `json:",omitempty"`
|
|
}
|
|
|
|
// PingResult contains the information returned when pinging a registry. It
|
|
// indicates the registry's version and whether the registry claims to be a
|
|
// standalone registry.
|
|
type PingResult struct {
|
|
// Version is the registry version supplied by the registry in a HTTP
|
|
// header
|
|
Version string `json:"version"`
|
|
// Standalone is set to true if the registry indicates it is a
|
|
// standalone registry in the X-Docker-Registry-Standalone
|
|
// header
|
|
Standalone bool `json:"standalone"`
|
|
}
|
|
|
|
// APIVersion is an integral representation of an API version (presently
|
|
// either 1 or 2)
|
|
type APIVersion int
|
|
|
|
func (av APIVersion) String() string {
|
|
return apiVersions[av]
|
|
}
|
|
|
|
// API Version identifiers.
|
|
const (
|
|
_ = iota
|
|
APIVersion1 APIVersion = iota
|
|
APIVersion2
|
|
)
|
|
|
|
var apiVersions = map[APIVersion]string{
|
|
APIVersion1: "v1",
|
|
APIVersion2: "v2",
|
|
}
|
|
|
|
// RepositoryInfo describes a repository
|
|
type RepositoryInfo struct {
|
|
reference.Named
|
|
// Index points to registry information
|
|
Index *registrytypes.IndexInfo
|
|
// Official indicates whether the repository is considered official.
|
|
// If the registry is official, and the normalized name does not
|
|
// contain a '/' (e.g. "foo"), then it is considered an official repo.
|
|
Official bool
|
|
}
|