internal

package
v0.1.0-alpha.1 Latest Latest
Warning

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

Go to latest
Published: Nov 16, 2022 License: Apache-2.0 Imports: 20 Imported by: 0

Documentation

Index

Constants

View Source
const (
	KIND_OCIARTEFACT = "oci artefact"
	KIND_BLOB        = accessio.KIND_BLOB
	KIND_MEDIATYPE   = accessio.KIND_MEDIATYPE
)
View Source
const CONTEXT_TYPE = "oci" + datacontext.OCM_CONTEXT_SUFFIX
View Source
const CommonTransportFormat = "CommonTransportFormat"

Variables

View Source
var DefaultContext = Builder{}.New(datacontext.MODE_SHARED)

DefaultContext is the default context initialized by init functions.

View Source
var DefaultRepositorySpecHandlers = NewRepositorySpecHandlers()
View Source
var DefaultRepositoryTypeScheme = NewRepositoryTypeScheme(nil)

DefaultRepositoryTypeScheme contains all globally known access serializer.

Functions

func ErrUnknownArtefact

func ErrUnknownArtefact(name, version string) error

func RegisterRepositorySpecHandler

func RegisterRepositorySpecHandler(hdlr RepositorySpecHandler, types ...string)

func RegisterRepositoryType

func RegisterRepositoryType(name string, atype RepositoryType)

Types

type Artefact

type Artefact interface {
	IsManifest() bool
	IsIndex() bool

	Digest() digest.Digest
	Blob() (BlobAccess, error)
	Artefact() *artdesc.Artefact
	Manifest() (*artdesc.Manifest, error)
	Index() (*artdesc.Index, error)
}

type ArtefactAccess

type ArtefactAccess interface {
	Artefact
	BlobSource
	BlobSink

	GetDescriptor() *artdesc.Artefact
	ManifestAccess() ManifestAccess
	IndexAccess() IndexAccess
	GetBlob(digest digest.Digest) (BlobAccess, error)

	GetArtefact(digest digest.Digest) (ArtefactAccess, error)
	AddBlob(BlobAccess) error

	AddArtefact(Artefact, *artdesc.Platform) (BlobAccess, error)
	AddLayer(BlobAccess, *artdesc.Descriptor) (int, error)

	Close() error
}

type ArtefactSink

type ArtefactSink interface {
	AddBlob(BlobAccess) error
	AddArtefact(a Artefact, tags ...string) (BlobAccess, error)
	AddTags(digest digest.Digest, tags ...string) error
}

type ArtefactSource

type ArtefactSource interface {
	GetArtefact(version string) (ArtefactAccess, error)
	GetBlobData(digest digest.Digest) (int64, DataAccess, error)
}

type BlobAccess

type BlobAccess = accessio.BlobAccess

type BlobSink

type BlobSink interface {
	AddBlob(BlobAccess) error
}

type BlobSource

type BlobSource interface {
	GetBlobData(digest digest.Digest) (int64, DataAccess, error)
}

type Builder

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

func (Builder) Bound

func (b Builder) Bound() (Context, context.Context)

func (Builder) New

func (b Builder) New(m ...datacontext.BuilderMode) Context

func (Builder) WithContext

func (b Builder) WithContext(ctx context.Context) Builder

func (Builder) WithCredentials

func (b Builder) WithCredentials(ctx credentials.Context) Builder

func (Builder) WithRepositorySpecHandlers

func (b Builder) WithRepositorySpecHandlers(reg RepositorySpecHandlers) Builder

func (Builder) WithRepositoyTypeScheme

func (b Builder) WithRepositoyTypeScheme(scheme RepositoryTypeScheme) Builder

type Context

type Context interface {
	datacontext.Context
	config.ContextProvider
	credentials.ContextProvider

	RepositorySpecHandlers() RepositorySpecHandlers
	MapUniformRepositorySpec(u *UniformRepositorySpec) (RepositorySpec, error)

	RepositoryTypes() RepositoryTypeScheme

	RepositoryForSpec(spec RepositorySpec, creds ...credentials.CredentialsSource) (Repository, error)
	RepositoryForConfig(data []byte, unmarshaler runtime.Unmarshaler, creds ...credentials.CredentialsSource) (Repository, error)

	GetAlias(name string) RepositorySpec
	SetAlias(name string, spec RepositorySpec)
}

func DefinedForContext

func DefinedForContext(ctx context.Context) (Context, bool)

func ForContext

func ForContext(ctx context.Context) Context

ForContext returns the Context to use for context.Context. This is either an explicit context or the default context.

type ContextProvider

type ContextProvider interface {
	OCIContext() Context
}

type DataAccess

type DataAccess = accessio.DataAccess

type GenericRepositorySpec

type GenericRepositorySpec struct {
	runtime.UnstructuredVersionedTypedObject `json:",inline"`
}

func ToGenericRepositorySpec

func ToGenericRepositorySpec(spec RepositorySpec) (*GenericRepositorySpec, error)

func (*GenericRepositorySpec) Evaluate

func (s *GenericRepositorySpec) Evaluate(ctx Context) (RepositorySpec, error)

func (*GenericRepositorySpec) Name

func (s *GenericRepositorySpec) Name() string

func (*GenericRepositorySpec) Repository

func (*GenericRepositorySpec) UniformRepositorySpec

func (s *GenericRepositorySpec) UniformRepositorySpec() *UniformRepositorySpec

type IndexAccess

type IndexAccess interface {
	Artefact

	GetDescriptor() *artdesc.Index
	GetBlobDescriptor(digest digest.Digest) *artdesc.Descriptor
	GetBlob(digest digest.Digest) (BlobAccess, error)

	GetArtefact(digest digest.Digest) (ArtefactAccess, error)

	AddBlob(BlobAccess) error
	AddArtefact(Artefact, *artdesc.Platform) (BlobAccess, error)
}

type IntermediateRepositorySpecAspect

type IntermediateRepositorySpecAspect interface {
	IsIntermediate() bool
}

type ManifestAccess

type ManifestAccess interface {
	Artefact

	GetDescriptor() *artdesc.Manifest
	GetBlobDescriptor(digest digest.Digest) *artdesc.Descriptor
	GetConfigBlob() (BlobAccess, error)
	GetBlob(digest digest.Digest) (BlobAccess, error)

	AddBlob(BlobAccess) error
	AddLayer(BlobAccess, *artdesc.Descriptor) (int, error)
	SetConfigBlob(blob BlobAccess, d *artdesc.Descriptor) error
}

type NamespaceAccess

type NamespaceAccess interface {
	ArtefactSource
	ArtefactSink

	GetNamespace() string
	ListTags() ([]string, error)

	NewArtefact(...*artdesc.Artefact) (ArtefactAccess, error)

	Close() error
}

type NamespaceLister

type NamespaceLister interface {
	// NumNamespaces returns the number of namespaces found for a prefix
	// If the given prefix does not end with a /, a repository with the
	// prefix name is included
	NumNamespaces(prefix string) (int, error)

	// GetNamespaces returns the name of namespaces found for a prefix
	// If the given prefix does not end with a /, a repository with the
	// prefix name is included
	GetNamespaces(prefix string, closure bool) ([]string, error)
}

NamespaceLister provides the optional repository list functionality of a repository.

type Repository

type Repository interface {
	GetSpecification() RepositorySpec
	NamespaceLister() NamespaceLister

	ExistsArtefact(name string, ref string) (bool, error)
	LookupArtefact(name string, ref string) (ArtefactAccess, error)
	LookupNamespace(name string) (NamespaceAccess, error)
	Close() error
}

type RepositorySource

type RepositorySource interface {
	GetRepository() Repository
}

type RepositorySpec

type RepositorySpec interface {
	runtime.VersionedTypedObject

	Name() string
	UniformRepositorySpec() *UniformRepositorySpec
	Repository(Context, credentials.Credentials) (Repository, error)
}

func CreateRepositorySpec

func CreateRepositorySpec(t runtime.TypedObject) (RepositorySpec, error)

func NewGenericRepositorySpec

func NewGenericRepositorySpec(data []byte, unmarshaler runtime.Unmarshaler) (RepositorySpec, error)

type RepositorySpecHandler

type RepositorySpecHandler interface {
	MapReference(ctx Context, u *UniformRepositorySpec) (RepositorySpec, error)
}

type RepositorySpecHandlers

type RepositorySpecHandlers interface {
	Register(hdlr RepositorySpecHandler, types ...string)
	Copy() RepositorySpecHandlers
	MapUniformRepositorySpec(ctx Context, u *UniformRepositorySpec) (RepositorySpec, error)
}

func NewRepositorySpecHandlers

func NewRepositorySpecHandlers() RepositorySpecHandlers

type RepositoryType

type RepositoryType interface {
	runtime.TypedObjectDecoder
	runtime.VersionedTypedObject
}

type RepositoryTypeScheme

type RepositoryTypeScheme interface {
	runtime.Scheme
	AddKnownTypes(s RepositoryTypeScheme)

	GetRepositoryType(name string) RepositoryType
	Register(name string, atype RepositoryType)

	DecodeRepositorySpec(data []byte, unmarshaler runtime.Unmarshaler) (RepositorySpec, error)
	CreateRepositorySpec(obj runtime.TypedObject) (RepositorySpec, error)
}

func NewRepositoryTypeScheme

func NewRepositoryTypeScheme(defaultRepoDecoder runtime.TypedObjectDecoder, base ...RepositoryTypeScheme) RepositoryTypeScheme

type UniformRepositorySpec

type UniformRepositorySpec struct {
	// Type
	Type string `json:"type,omitempty"`
	// Scheme
	Scheme string `json:"scheme,omitempty"`
	// Host is the hostname of an oci ref.
	Host string `json:"host,omitempty"`
	// Info is the file path used to host ctf component versions
	Info string `json:"filePath,omitempty"`

	// CreateIfMissing indicates whether a file based or dynamic repo should be created if it does not exist
	CreateIfMissing bool `json:"createIfMissing,omitempty"`
	// TypeHint should be set if CreateIfMissing is true to help to decide what kind of repo to create
	TypeHint string `json:"typeHint,omitempty"`
}

UniformRepositorySpec is a generic specification of the repository for handling as part of standard references.

func UniformRepositorySpecForHostURL

func UniformRepositorySpecForHostURL(typ string, host string) *UniformRepositorySpec

func (*UniformRepositorySpec) ComposeRef

func (u *UniformRepositorySpec) ComposeRef(art string) string

ComposeRef joins the actual repository spec and a given artefact spec.

func (*UniformRepositorySpec) CredHost

func (u *UniformRepositorySpec) CredHost() string

CredHost fallback to legacy docker domain if applicable this is how containerd translates the old domain for DockerHub to the new one, taken from containerd/reference/docker/reference.go:674.

func (*UniformRepositorySpec) HostPort

func (u *UniformRepositorySpec) HostPort() (string, string)

func (*UniformRepositorySpec) RepositoryRef

func (u *UniformRepositorySpec) RepositoryRef() string

func (*UniformRepositorySpec) String

func (u *UniformRepositorySpec) String() string

type UnknownRepositorySpec

type UnknownRepositorySpec struct {
	runtime.UnstructuredVersionedTypedObject `json:",inline"`
}

func (*UnknownRepositorySpec) Name

func (r *UnknownRepositorySpec) Name() string

func (*UnknownRepositorySpec) Repository

func (*UnknownRepositorySpec) UniformRepositorySpec

func (r *UnknownRepositorySpec) UniformRepositorySpec() *UniformRepositorySpec

Jump to

Keyboard shortcuts

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