registry

package
v0.12.1-0...-6c953a3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 11, 2014 License: Apache-2.0 Imports: 23 Imported by: 0

Documentation

Index

Constants

View Source
const CONFIGFILE = ".dockercfg"

Where we store the config file

View Source
const INDEXSERVER = "https://index.docker.io/v1/"

Only used for user auth + account creation

Variables

View Source
var (
	ErrAlreadyExists         = errors.New("Image already exists")
	ErrInvalidRepositoryName = errors.New("Invalid repository name (ex: \"registry.domain.tld/myrepos\")")
)
View Source
var (
	ErrConfigFileMissing = errors.New("The Auth config file is missing")
)

Functions

func AddRequiredHeadersToRedirectedRequests

func AddRequiredHeadersToRedirectedRequests(req *http.Request, via []*http.Request) error

func ExpandAndVerifyRegistryUrl

func ExpandAndVerifyRegistryUrl(hostname string) (string, error)

this method expands the registry name as used in the prefix of a repo to a full url. if it already is a url, there will be no change. The registry is pinged to test if it http or https

func HTTPRequestFactory

func HTTPRequestFactory(metaHeaders map[string][]string) *utils.HTTPRequestFactory

func IndexServerAddress

func IndexServerAddress() string

func Login

func Login(authConfig *AuthConfig, factory *utils.HTTPRequestFactory) (string, error)

try to register/login to the registry server

func ResolveRepositoryName

func ResolveRepositoryName(reposName string) (string, string, error)

Resolves a repository name to a hostname + name

func SaveConfig

func SaveConfig(configFile *ConfigFile) error

save the auth config

Types

type AuthConfig

type AuthConfig struct {
	Username      string `json:"username,omitempty"`
	Password      string `json:"password,omitempty"`
	Auth          string `json:"auth"`
	Email         string `json:"email"`
	ServerAddress string `json:"serveraddress,omitempty"`
}

type ConfigFile

type ConfigFile struct {
	Configs map[string]AuthConfig `json:"configs,omitempty"`
	// contains filtered or unexported fields
}

func LoadConfig

func LoadConfig(rootPath string) (*ConfigFile, error)

load up the auth config information and return values FIXME: use the internal golang config parser

func (*ConfigFile) ResolveAuthConfig

func (config *ConfigFile) ResolveAuthConfig(hostname string) AuthConfig

this method matches a auth configuration to a server address or a url

type ImgData

type ImgData struct {
	ID              string `json:"id"`
	Checksum        string `json:"checksum,omitempty"`
	ChecksumPayload string `json:"-"`
	Tag             string `json:",omitempty"`
}

type Registry

type Registry struct {
	// contains filtered or unexported fields
}

func NewRegistry

func NewRegistry(authConfig *AuthConfig, factory *utils.HTTPRequestFactory, indexEndpoint string, timeout bool) (r *Registry, err error)

func (*Registry) GetAuthConfig

func (r *Registry) GetAuthConfig(withPasswd bool) *AuthConfig

func (*Registry) GetRemoteHistory

func (r *Registry) GetRemoteHistory(imgID, registry string, token []string) ([]string, error)

Retrieve the history of a given image from the Registry. Return a list of the parent's json (requested image included)

func (*Registry) GetRemoteImageJSON

func (r *Registry) GetRemoteImageJSON(imgID, registry string, token []string) ([]byte, int, error)

Retrieve an image from the Registry.

func (*Registry) GetRemoteImageLayer

func (r *Registry) GetRemoteImageLayer(imgID, registry string, token []string, imgSize int64) (io.ReadCloser, error)

func (*Registry) GetRemoteTags

func (r *Registry) GetRemoteTags(registries []string, repository string, token []string) (map[string]string, error)

func (*Registry) GetRepositoryData

func (r *Registry) GetRepositoryData(remote string) (*RepositoryData, error)

func (*Registry) LookupRemoteImage

func (r *Registry) LookupRemoteImage(imgID, registry string, token []string) bool

Check if an image exists in the Registry TODO: This method should return the errors instead of masking them and returning false

func (*Registry) PushImageChecksumRegistry

func (r *Registry) PushImageChecksumRegistry(imgData *ImgData, registry string, token []string) error

func (*Registry) PushImageJSONIndex

func (r *Registry) PushImageJSONIndex(remote string, imgList []*ImgData, validate bool, regs []string) (*RepositoryData, error)

func (*Registry) PushImageJSONRegistry

func (r *Registry) PushImageJSONRegistry(imgData *ImgData, jsonRaw []byte, registry string, token []string) error

Push a local image to the registry

func (*Registry) PushImageLayerRegistry

func (r *Registry) PushImageLayerRegistry(imgID string, layer io.Reader, registry string, token []string, jsonRaw []byte) (checksum string, checksumPayload string, err error)

func (*Registry) PushRegistryTag

func (r *Registry) PushRegistryTag(remote, revision, tag, registry string, token []string) error

push a tag on the registry. Remote has the format '<user>/<repo>

func (*Registry) SearchRepositories

func (r *Registry) SearchRepositories(term string) (*SearchResults, error)

type RegistryInfo

type RegistryInfo struct {
	Version    string `json:"version"`
	Standalone bool   `json:"standalone"`
}

type RepositoryData

type RepositoryData struct {
	ImgList   map[string]*ImgData
	Endpoints []string
	Tokens    []string
}

type SearchResult

type SearchResult struct {
	StarCount   int    `json:"star_count"`
	IsOfficial  bool   `json:"is_official"`
	Name        string `json:"name"`
	IsTrusted   bool   `json:"is_trusted"`
	Description string `json:"description"`
}

type SearchResults

type SearchResults struct {
	Query      string         `json:"query"`
	NumResults int            `json:"num_results"`
	Results    []SearchResult `json:"results"`
}

type Service

type Service struct {
}

Service exposes registry capabilities in the standard Engine interface. Once installed, it extends the engine with the following calls:

'auth': Authenticate against the public registry
'search': Search for images on the public registry
'pull': Download images from any registry (TODO)
'push': Upload images to any registry (TODO)

func NewService

func NewService() *Service

NewService returns a new instance of Service ready to be installed no an engine.

func (*Service) Auth

func (s *Service) Auth(job *engine.Job) engine.Status

Auth contacts the public registry with the provided credentials, and returns OK if authentication was sucessful. It can be used to verify the validity of a client's credentials.

func (*Service) Install

func (s *Service) Install(eng *engine.Engine) error

Install installs registry capabilities to eng.

func (*Service) Search

func (s *Service) Search(job *engine.Job) engine.Status

Search queries the public registry for images matching the specified search terms, and returns the results.

Argument syntax: search TERM

Option environment:

'authConfig': json-encoded credentials to authenticate against the registry.
	The search extends to images only accessible via the credentials.

'metaHeaders': extra HTTP headers to include in the request to the registry.
	The headers should be passed as a json-encoded dictionary.

Output:

Results are sent as a collection of structured messages (using engine.Table).
Each result is sent as a separate message.
Results are ordered by number of stars on the public registry.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL