internal

package
v2.0.0-...-98cc131 Latest Latest
Warning

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

Go to latest
Published: Jul 26, 2023 License: Apache-2.0 Imports: 22 Imported by: 0

Documentation

Index

Constants

View Source
const (
	KIND_OCIARTIFACT = "oci artifact"
	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 ErrUnknownArtifact

func ErrUnknownArtifact(name, version string) error

func RegisterRepositorySpecHandler

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

func RegisterRepositoryType

func RegisterRepositoryType(atype RepositoryType)

Types

type Artifact

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

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

type ArtifactAccessImpl

type ArtifactAccessImpl interface {
	Artifact
	BlobSource
	BlobSink

	GetDescriptor() *artdesc.Artifact
	GetBlob(digest digest.Digest) (BlobAccess, error)

	GetArtifact(digest digest.Digest) (ArtifactAccess, error)
	AddBlob(BlobAccess) error

	AddArtifact(Artifact, *artdesc.Platform) (BlobAccess, error)
	AddLayer(BlobAccess, *artdesc.Descriptor) (int, error)

	NewArtifact(...*artdesc.Artifact) (ArtifactAccess, error)

	io.Closer
}

type ArtifactAccessSlaves

type ArtifactAccessSlaves interface {
	ManifestAccess() ManifestAccess
	IndexAccess() IndexAccess
}

type ArtifactSink

type ArtifactSink interface {
	AddBlob(BlobAccess) error
	AddArtifact(a Artifact, tags ...string) (BlobAccess, error)
	AddTags(digest digest.Digest, tags ...string) error
}

type ArtifactSource

type ArtifactSource interface {
	GetArtifact(version string) (ArtifactAccess, 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 ConsumerIdentityProvider

type ConsumerIdentityProvider = credentials.ConsumerIdentityProvider

ConsumerIdentityProvider is an optional interface for repositories to tell about their credential requests.

type Context

type Context interface {
	datacontext.Context
	config.ContextProvider
	credentials.ContextProvider
	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.

func FromProvider

func FromProvider(p ContextProvider) 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 {
	Artifact

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

	GetArtifact(digest digest.Digest) (ArtifactAccess, error)

	AddBlob(BlobAccess) error
	AddArtifact(Artifact, *artdesc.Platform) (BlobAccess, error)
}

type IntermediateRepositorySpecAspect

type IntermediateRepositorySpecAspect interface {
	IsIntermediate() bool
}

type ManifestAccess

type ManifestAccess interface {
	Artifact

	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 {
	resource.ResourceView[NamespaceAccess]

	NamespaceAccessImpl
}

type NamespaceAccessImpl

type NamespaceAccessImpl interface {
	ArtifactSource
	ArtifactSink
	GetNamespace() string
	ListTags() ([]string, error)

	HasArtifact(vers string) (bool, error)

	NewArtifact(...*artdesc.Artifact) (ArtifactAccess, error)
	io.Closer
}

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 {
	resource.ResourceView[Repository]

	RepositoryImpl
}

type RepositoryImpl

type RepositoryImpl interface {
	GetSpecification() RepositorySpec
	GetContext() Context

	NamespaceLister() NamespaceLister
	ExistsArtifact(name string, ref string) (bool, error)
	LookupArtifact(name string, ref string) (ArtifactAccess, error)
	LookupNamespace(name string) (NamespaceAccess, error)

	io.Closer
}

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.VersionedTypedObjectType[RepositorySpec]
}

type RepositoryTypeScheme

type RepositoryTypeScheme interface {
	runtime.TypeScheme[RepositorySpec, RepositoryType]
}

func NewRepositoryTypeScheme

func NewRepositoryTypeScheme(defaultDecoder RepositorySpecDecoder, 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 artifact 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) IsUnknown

func (r *UnknownRepositorySpec) IsUnknown() bool

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