Documentation ¶
Index ¶
- Constants
- Variables
- func AppendUnique(list *[]BlobDigester, elems ...BlobDigester)
- func ErrComponentVersionNotFound(name, version string) error
- func ErrComponentVersionNotFoundWrap(err error, name, version string) error
- func MustRegisterBlobHandler(handler BlobHandler, opts ...BlobHandlerOption)
- func MustRegisterDigester(digester BlobDigester, arttypes ...string)
- func NewStrictAccessTypeScheme(base ...AccessTypeScheme) runtime.VersionedTypeRegistry[AccessSpec, AccessType]
- func RegisterAccessType(atype AccessType)
- func RegisterBlobHandler(handler BlobHandler, opts ...BlobHandlerOption)
- func RegisterBlobHandlerRegistrationHandler(path string, handler BlobHandlerRegistrationHandler)
- func RegisterRepositorySpecHandler(hdlr RepositorySpecHandler, types ...string)
- func RegisterRepositoryType(atype RepositoryType)
- func SetDefaultDigester(d BlobDigester)
- type AccessMethod
- type AccessMethodSupport
- type AccessSpec
- type AccessSpecDecoder
- type AccessSpecRef
- func (a *AccessSpecRef) AccessMethod(access ComponentVersionAccess) (AccessMethod, error)
- func (a *AccessSpecRef) Describe(ctx Context) string
- func (a *AccessSpecRef) Evaluate(ctx Context) (AccessSpec, error)
- func (a *AccessSpecRef) GetInexpensiveContentVersionIdentity(access ComponentVersionAccess) string
- func (a *AccessSpecRef) GetKind() string
- func (a *AccessSpecRef) GetType() string
- func (a *AccessSpecRef) GetVersion() string
- func (a *AccessSpecRef) GlobalAccessSpec(ctx Context) AccessSpec
- func (a *AccessSpecRef) IsLocal(ctx Context) bool
- func (a *AccessSpecRef) MarshalJSON() ([]byte, error)
- func (a *AccessSpecRef) Set(spec AccessSpec)
- func (a *AccessSpecRef) UnmarshalJSON(data []byte) error
- type AccessType
- type AccessTypeProvider
- type AccessTypeScheme
- type BaseAccess
- type BlobAccess
- type BlobDigester
- type BlobDigesterRegistry
- type BlobHandler
- type BlobHandlerConfig
- type BlobHandlerKey
- type BlobHandlerOption
- type BlobHandlerOptions
- type BlobHandlerRegistrationHandler
- type BlobHandlerRegistrationRegistry
- type BlobHandlerRegistry
- type Builder
- func (b Builder) Bound() (Context, context.Context)
- func (b Builder) New(m ...datacontext.BuilderMode) Context
- func (b Builder) WithAccessTypeScheme(scheme AccessTypeScheme) Builder
- func (b Builder) WithBlobDigesters(reg BlobDigesterRegistry) Builder
- func (b Builder) WithBlobHandlers(reg BlobHandlerRegistry) Builder
- func (b Builder) WithContext(ctx context.Context) Builder
- func (b Builder) WithCredentials(ctx credentials.Context) Builder
- func (b Builder) WithOCIRepositories(ctx oci.Context) Builder
- func (b Builder) WithRepositoryDelegation(reg RepositoryDelegationRegistry) Builder
- func (b Builder) WithRepositorySpecHandlers(reg RepositorySpecHandlers) Builder
- func (b Builder) WithRepositoyTypeScheme(scheme RepositoryTypeScheme) Builder
- type ComponentAccess
- type ComponentAccessImpl
- type ComponentLister
- type ComponentReference
- type ComponentVersionAccess
- type ComponentVersionAccessImpl
- type ComponentVersionResolver
- type ConsumerIdentityProvider
- type Context
- type ContextProvider
- type DataAccess
- type DelegationRegistry
- type DigestDescriptor
- type DigesterType
- type EvaluatableAccessSpec
- type GenericAccessSpec
- func (s *GenericAccessSpec) AccessMethod(acc ComponentVersionAccess) (AccessMethod, error)
- func (s *GenericAccessSpec) Describe(ctx Context) string
- func (s *GenericAccessSpec) Evaluate(ctx Context) (AccessSpec, error)
- func (s *GenericAccessSpec) GetInexpensiveContentVersionIdentity(acc ComponentVersionAccess) string
- func (s *GenericAccessSpec) GlobalAccessSpec(ctx Context) AccessSpec
- func (s *GenericAccessSpec) IsLocal(ctx Context) bool
- type GenericRepositorySpec
- type HintProvider
- type ImplementationRepositoryType
- type IntermediateRepositorySpecAspect
- type LocalContextProvider
- type MatchingResolver
- func (r *MatchingResolver) AddRule(prefix string, spec RepositorySpec, prio ...int)
- func (r *MatchingResolver) Finalize() error
- func (r *MatchingResolver) GetRules() []*ResolverRule
- func (r *MatchingResolver) LookupComponentVersion(name string, version string) (ComponentVersionAccess, error)
- func (r *MatchingResolver) OCMContext() Context
- type MimeType
- type MultiBlobHandler
- type PrioBlobHandler
- type PriorityDecoder
- type RegistrationHandlerInfo
- type Repository
- type RepositoryCache
- type RepositoryDelegationRegistry
- type RepositoryImpl
- type RepositorySpec
- type RepositorySpecDecoder
- type RepositorySpecHandler
- type RepositorySpecHandlers
- type RepositoryType
- type RepositoryTypeProvider
- type RepositoryTypeScheme
- type ResolverRule
- type ResourceAccess
- type ResourceMeta
- type SourceAccess
- type SourceMeta
- type StorageContext
- type UniformRepositorySpec
- type UnknownAccessSpec
- func (s *UnknownAccessSpec) AccessMethod(ComponentVersionAccess) (AccessMethod, error)
- func (s *UnknownAccessSpec) Describe(ctx Context) string
- func (s *UnknownAccessSpec) GetInexpensiveContentVersionIdentity(ComponentVersionAccess) string
- func (_ *UnknownAccessSpec) GlobalAccessSpec(Context) AccessSpec
- func (_ *UnknownAccessSpec) IsLocal(Context) bool
- func (_ *UnknownAccessSpec) IsUnknown() bool
- type UnknownRepositorySpec
Constants ¶
const ( KIND_COMPONENTVERSION = "component version" KIND_RESOURCE = "component resource" KIND_SOURCE = "component source" KIND_REFERENCE = compdesc.KIND_REFERENCE KIND_REPOSITORYSPEC = "repository specification" )
const CONTEXT_TYPE = "ocm" + datacontext.OCM_CONTEXT_SUFFIX
const CommonTransportFormat = ctf.Type
const DEFAULT_BLOBHANDLER_PRIO = 100
Variables ¶
var DefaultAccessTypeScheme = NewAccessTypeScheme()
DefaultAccessTypeScheme contains all globally known access serializer.
var DefaultBlobDigesterRegistry = NewBlobDigesterRegistry()
var DefaultBlobHandlerRegistry = NewBlobHandlerRegistry()
var DefaultContext = Builder{}.New(datacontext.MODE_SHARED)
DefaultContext is the default context initialized by init functions.
var DefaultRepositoryDelegationRegistry = NewDelegationRegistry[Context, RepositorySpec]()
var DefaultRepositorySpecHandlers = NewRepositorySpecHandlers()
var DefaultRepositoryTypeScheme = NewRepositoryTypeScheme(nil)
DefaultRepositoryTypeScheme contains all globally known access serializer.
Functions ¶
func AppendUnique ¶
func AppendUnique(list *[]BlobDigester, elems ...BlobDigester)
func MustRegisterBlobHandler ¶
func MustRegisterBlobHandler(handler BlobHandler, opts ...BlobHandlerOption)
func MustRegisterDigester ¶
func MustRegisterDigester(digester BlobDigester, arttypes ...string)
func NewStrictAccessTypeScheme ¶ added in v0.3.0
func NewStrictAccessTypeScheme(base ...AccessTypeScheme) runtime.VersionedTypeRegistry[AccessSpec, AccessType]
func RegisterAccessType ¶ added in v0.3.0
func RegisterAccessType(atype AccessType)
func RegisterBlobHandler ¶
func RegisterBlobHandler(handler BlobHandler, opts ...BlobHandlerOption)
func RegisterBlobHandlerRegistrationHandler ¶
func RegisterBlobHandlerRegistrationHandler(path string, handler BlobHandlerRegistrationHandler)
func RegisterRepositorySpecHandler ¶
func RegisterRepositorySpecHandler(hdlr RepositorySpecHandler, types ...string)
func RegisterRepositoryType ¶ added in v0.3.0
func RegisterRepositoryType(atype RepositoryType)
func SetDefaultDigester ¶ added in v0.3.0
func SetDefaultDigester(d BlobDigester)
Types ¶
type AccessMethod ¶
type AccessMethod interface { DataAccess GetKind() string AccessSpec() AccessSpec MimeType Close() error }
AccessMethod described the access to a dedicated resource It can allocate external resources, which should be released with the Close() call. Resources SHOULD only be allocated, if the content is accessed via the DataAccess interface to avoid unnecessary effort if the method object is just used to access meta data.
type AccessMethodSupport ¶
type AccessMethodSupport interface { GetContext() Context LocalSupportForAccessSpec(spec AccessSpec) bool }
type AccessSpec ¶
type AccessSpec interface { compdesc.AccessSpec Describe(Context) string IsLocal(Context) bool GlobalAccessSpec(Context) AccessSpec // AccessMethod provides an access method implementation for // an access spec. This might be a repository local implementation // or a global one. It might be implemented directly by the AccessSpec // for global AccessMethods or forwarded to the ComponentVersion for // local access methods. It may only be forwarded for AccessSpecs stating // to be local (IsLocal()==true). // This forwarding is necessary because the concrete implementation of // the currently used OCM Repository is not known to the AccessSpec. AccessMethod(access ComponentVersionAccess) (AccessMethod, error) // GetInexpensiveContentVersionIdentity implements a method that attempts to provide an inexpensive identity. // Therefore, an identity that can be provided without requiring the entire object (e.g. calculating the digest from // the bytes), which would defeat the purpose of caching. // It follows the same contract as AccessMethod. GetInexpensiveContentVersionIdentity(access ComponentVersionAccess) string }
AccessSpec is the interface access method specifications must fulfill. The main task is to map the specification to a concrete implementation of the access method for a dedicated component version.
func CreateAccessSpec ¶
func CreateAccessSpec(t runtime.TypedObject) (AccessSpec, error)
func NewGenericAccessSpec ¶
func NewGenericAccessSpec(data []byte, unmarshaler ...runtime.Unmarshaler) (AccessSpec, error)
type AccessSpecDecoder ¶ added in v0.3.0
type AccessSpecDecoder = runtime.TypedObjectDecoder[AccessSpec]
type AccessSpecRef ¶
type AccessSpecRef struct {
// contains filtered or unexported fields
}
func NewAccessSpecRef ¶
func NewAccessSpecRef(spec AccessSpec) *AccessSpecRef
func NewRawAccessSpecRef ¶
func NewRawAccessSpecRef(data []byte, unmarshaler runtime.Unmarshaler) (*AccessSpecRef, error)
func (*AccessSpecRef) AccessMethod ¶
func (a *AccessSpecRef) AccessMethod(access ComponentVersionAccess) (AccessMethod, error)
func (*AccessSpecRef) Describe ¶
func (a *AccessSpecRef) Describe(ctx Context) string
func (*AccessSpecRef) Evaluate ¶
func (a *AccessSpecRef) Evaluate(ctx Context) (AccessSpec, error)
func (*AccessSpecRef) GetInexpensiveContentVersionIdentity ¶ added in v0.3.0
func (a *AccessSpecRef) GetInexpensiveContentVersionIdentity(access ComponentVersionAccess) string
func (*AccessSpecRef) GetKind ¶
func (a *AccessSpecRef) GetKind() string
func (*AccessSpecRef) GetType ¶
func (a *AccessSpecRef) GetType() string
func (*AccessSpecRef) GetVersion ¶
func (a *AccessSpecRef) GetVersion() string
func (*AccessSpecRef) GlobalAccessSpec ¶ added in v0.3.0
func (a *AccessSpecRef) GlobalAccessSpec(ctx Context) AccessSpec
func (*AccessSpecRef) IsLocal ¶
func (a *AccessSpecRef) IsLocal(ctx Context) bool
func (*AccessSpecRef) MarshalJSON ¶
func (a *AccessSpecRef) MarshalJSON() ([]byte, error)
MarshalJSON implements a custom json unmarshal method for a unstructured type.
func (*AccessSpecRef) Set ¶
func (a *AccessSpecRef) Set(spec AccessSpec)
func (*AccessSpecRef) UnmarshalJSON ¶
func (a *AccessSpecRef) UnmarshalJSON(data []byte) error
UnmarshalJSON implements a custom json unmarshal method for an access spec ref.
type AccessType ¶
type AccessType interface { runtime.VersionedTypedObjectType[AccessSpec] ConfigOptionTypeSetHandler() flagsets.ConfigOptionTypeSetHandler Description() string Format() string }
type AccessTypeProvider ¶ added in v0.3.0
type AccessTypeProvider = runtime.KnownTypesProvider[AccessSpec, AccessType]
type AccessTypeScheme ¶
type AccessTypeScheme interface { runtime.TypeScheme[AccessSpec, AccessType] CreateConfigTypeSetConfigProvider() flagsets.ConfigTypeOptionSetConfigProvider }
func NewAccessTypeScheme ¶
func NewAccessTypeScheme(base ...AccessTypeScheme) AccessTypeScheme
type BaseAccess ¶
type BaseAccess interface { ComponentVersion() ComponentVersionAccess Access() (AccessSpec, error) AccessMethod() (AccessMethod, error) }
type BlobAccess ¶
type BlobAccess = accessio.BlobAccess
type BlobDigester ¶
type BlobDigester interface { GetType() DigesterType DetermineDigest(resType string, meth AccessMethod, preferred signing.Hasher) (*DigestDescriptor, error) }
BlobDigester is the interface for digest providers for dedicated mime types. If found the digest provided by the digester will replace the standard digest calculated for the byte content of the blob.
type BlobDigesterRegistry ¶
type BlobDigesterRegistry interface { IsInitial() bool // MustRegisterDigester registers a blob digester for a dedicated exact mime type // Register(handler BlobDigester, restypes ...string) error // GetDigester returns the digester for a given type GetDigester(typ DigesterType) BlobDigester GetDigesterForType(t string) []BlobDigester DetermineDigests(typ string, preferred signing.Hasher, registry signing.Registry, acc AccessMethod, typs ...DigesterType) ([]DigestDescriptor, error) Copy() BlobDigesterRegistry }
BlobDigesterRegistry registers blob handlers to use in a dedicated ocm context.
func NewBlobDigesterRegistry ¶
func NewBlobDigesterRegistry(base ...BlobDigesterRegistry) BlobDigesterRegistry
type BlobHandler ¶
type BlobHandler interface { // StoreBlob has the chance to decide to store a local blob // in a repository specific fashion providing external access. // If this is possible and done an appropriate access spec // must be returned, if this is not done, nil has to be returned // without error StoreBlob(blob BlobAccess, artType, hint string, global AccessSpec, ctx StorageContext) (AccessSpec, error) }
BlobHandler s the interface for a dedicated handling of storing blobs for the LocalBlob access method in a dedicated kind of repository. with the possibility of access by an external distribution spec. (besides of the blob storage as part of a component version). The technical repository to use should be derivable from the chosen component directory or passed together with the storage context. The task of the handler is to store the local blob on its own responsibility and to return an appropriate global access method.
type BlobHandlerConfig ¶
type BlobHandlerConfig = registrations.HandlerConfig
type BlobHandlerKey ¶
type BlobHandlerKey struct { ImplementationRepositoryType `json:",inline"` ArtifactType string `json:"artifactType,omitempty"` MimeType string `json:"mimeType,omitempty"` }
BlobHandlerKey is the registration key for BlobHandlers.
func NewBlobHandlerKey ¶
func NewBlobHandlerKey(ctxtype, repotype, artifactType, mimetype string) BlobHandlerKey
func (BlobHandlerKey) ApplyBlobHandlerOptionTo ¶
func (k BlobHandlerKey) ApplyBlobHandlerOptionTo(opts *BlobHandlerOptions)
type BlobHandlerOption ¶
type BlobHandlerOption interface {
ApplyBlobHandlerOptionTo(*BlobHandlerOptions)
}
func ForArtifactType ¶
func ForArtifactType(artifacttype string) BlobHandlerOption
func ForMimeType ¶
func ForMimeType(mimetype string) BlobHandlerOption
func ForRepo ¶
func ForRepo(ctxtype, repotype string) BlobHandlerOption
func WithPrio ¶
func WithPrio(p int) BlobHandlerOption
type BlobHandlerOptions ¶
type BlobHandlerOptions struct { BlobHandlerKey `json:",inline"` Priority int `json:"priority,omitempty"` }
func NewBlobHandlerOptions ¶
func NewBlobHandlerOptions(olist ...BlobHandlerOption) *BlobHandlerOptions
func (*BlobHandlerOptions) ApplyBlobHandlerOptionTo ¶
func (o *BlobHandlerOptions) ApplyBlobHandlerOptionTo(opts *BlobHandlerOptions)
type BlobHandlerRegistrationHandler ¶
type BlobHandlerRegistrationHandler = registrations.HandlerRegistrationHandler[Context, BlobHandlerOption]
type BlobHandlerRegistrationRegistry ¶
type BlobHandlerRegistrationRegistry = registrations.HandlerRegistrationRegistry[Context, BlobHandlerOption]
func NewBlobHandlerRegistrationRegistry ¶
func NewBlobHandlerRegistrationRegistry(base ...BlobHandlerRegistrationRegistry) BlobHandlerRegistrationRegistry
type BlobHandlerRegistry ¶
type BlobHandlerRegistry interface { // BlobHandlerRegistrationRegistry registrations.HandlerRegistrationRegistry[Context, BlobHandlerOption] IsInitial() bool // Copy provides a new independend copy of the registry. Copy() BlobHandlerRegistry // RegisterBlobHandler registers a blob handler. It must specify either a sole mime type, // or a context and repository type, or all three keys. Register(handler BlobHandler, opts ...BlobHandlerOption) BlobHandlerRegistry // GetHandler returns the handler with the given key. GetHandler(key BlobHandlerKey) BlobHandler // LookupHandler returns handler trying all matches in the following order: // // - a handler matching all keys // - handlers matching the repo and mime type (from specific to more general by discarding + components) // - with artifact type // - without artifact type // - handlers matching artifact type // - handlers matching a sole mimetype handler (from specific to more general by discarding + components) // - a handler matching the repo // LookupHandler(repotype ImplementationRepositoryType, artifacttype, mimeType string) BlobHandler }
BlobHandlerRegistry registers blob handlers to use in a dedicated ocm context.
func NewBlobHandlerRegistry ¶
func NewBlobHandlerRegistry(base ...BlobHandlerRegistry) BlobHandlerRegistry
type Builder ¶
type Builder struct {
// contains filtered or unexported fields
}
func (Builder) New ¶
func (b Builder) New(m ...datacontext.BuilderMode) Context
func (Builder) WithAccessTypeScheme ¶
func (b Builder) WithAccessTypeScheme(scheme AccessTypeScheme) Builder
func (Builder) WithBlobDigesters ¶
func (b Builder) WithBlobDigesters(reg BlobDigesterRegistry) Builder
func (Builder) WithBlobHandlers ¶
func (b Builder) WithBlobHandlers(reg BlobHandlerRegistry) Builder
func (Builder) WithCredentials ¶
func (b Builder) WithCredentials(ctx credentials.Context) Builder
func (Builder) WithRepositoryDelegation ¶ added in v0.3.0
func (b Builder) WithRepositoryDelegation(reg RepositoryDelegationRegistry) Builder
func (Builder) WithRepositorySpecHandlers ¶
func (b Builder) WithRepositorySpecHandlers(reg RepositorySpecHandlers) Builder
func (Builder) WithRepositoyTypeScheme ¶
func (b Builder) WithRepositoyTypeScheme(scheme RepositoryTypeScheme) Builder
type ComponentAccess ¶
type ComponentAccess interface { resource.ResourceView[ComponentAccess] ComponentAccessImpl }
type ComponentAccessImpl ¶ added in v0.3.0
type ComponentAccessImpl interface { GetContext() Context GetName() string ListVersions() ([]string, error) LookupVersion(version string) (ComponentVersionAccess, error) HasVersion(vers string) (bool, error) AddVersion(ComponentVersionAccess) error NewVersion(version string, overrides ...bool) (ComponentVersionAccess, error) Close() error }
type ComponentLister ¶
type ComponentLister interface { // NumComponents returns the number of components found for a prefix // If the given prefix does not end with a /, a repository with the // prefix name is included NumComponents(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 GetComponents(prefix string, closure bool) ([]string, error) }
ComponentLister provides the optional repository list functionality of a repository.
type ComponentReference ¶
type ComponentReference = compdesc.ComponentReference
type ComponentVersionAccess ¶
type ComponentVersionAccess interface { resource.ResourceView[ComponentVersionAccess] ComponentVersionAccessImpl GetResources() []ResourceAccess GetResource(meta metav1.Identity) (ResourceAccess, error) GetResourceByIndex(i int) (ResourceAccess, error) GetResourcesByName(name string, selectors ...compdesc.IdentitySelector) ([]ResourceAccess, error) GetResourcesByIdentitySelectors(selectors ...compdesc.IdentitySelector) ([]ResourceAccess, error) GetResourcesByResourceSelectors(selectors ...compdesc.ResourceSelector) ([]ResourceAccess, error) GetSources() []SourceAccess GetSource(meta metav1.Identity) (SourceAccess, error) GetSourceByIndex(i int) (SourceAccess, error) GetReference(meta metav1.Identity) (ComponentReference, error) GetReferenceByIndex(i int) (ComponentReference, error) GetReferencesByName(name string, selectors ...compdesc.IdentitySelector) (compdesc.References, error) GetReferencesByIdentitySelectors(selectors ...compdesc.IdentitySelector) (compdesc.References, error) GetReferencesByReferenceSelectors(selectors ...compdesc.ReferenceSelector) (compdesc.References, error) // AddBlob adds a local blob and returns an appropriate local access spec. AddBlob(blob BlobAccess, artType, refName string, global AccessSpec) (AccessSpec, error) // AdjustResourceAccess is used to modify the access spec. The old and new one MUST refer to the same content. AdjustResourceAccess(meta *ResourceMeta, acc compdesc.AccessSpec) error SetResourceBlob(meta *ResourceMeta, blob BlobAccess, refname string, global AccessSpec) error AdjustSourceAccess(meta *SourceMeta, acc compdesc.AccessSpec) error SetSourceBlob(meta *SourceMeta, blob BlobAccess, refname string, global AccessSpec) error // AccessMethod provides an access method implementation for // an access spec. This might be a repository local implementation // or a global one. It might be called by the AccessSpec method // to map itself to a local implementation or called directly. // If called it should forward the call to the AccessSpec // if and only if this specs NOT states to be local IsLocal()==false // If the spec states to be local, the repository is responsible for // providing a local implementation or return nil if this is // not supported by the actual repository type. AccessMethod(AccessSpec) (AccessMethod, error) // GetInexpensiveContentVersionIdentity implements a method that attempts to provide an inexpensive identity for // the specified artifact. Therefore, an identity that can be provided without requiring the entire object (e.g. // calculating the digest from the bytes), which would defeat the purpose of caching. // It follows the same contract as AccessMethod. GetInexpensiveContentVersionIdentity(spec AccessSpec) string }
type ComponentVersionAccessImpl ¶ added in v0.3.0
type ComponentVersionAccessImpl interface { common.VersionedElement Repository() Repository GetContext() Context GetDescriptor() *compdesc.ComponentDescriptor SetResource(*ResourceMeta, compdesc.AccessSpec) error SetSource(*SourceMeta, compdesc.AccessSpec) error SetReference(ref *ComponentReference) error DiscardChanges() io.Closer }
type ComponentVersionResolver ¶
type ComponentVersionResolver interface {
LookupComponentVersion(name string, version string) (ComponentVersionAccess, error)
}
type ConsumerIdentityProvider ¶ added in v0.3.0
type ConsumerIdentityProvider = credentials.ConsumerIdentityProvider
ConsumerIdentityProvider is an interface for object requiring credentials, which want to expose the ConsumerId they are usingto request implicit credentials.
type Context ¶
type Context interface { datacontext.Context config.ContextProvider credentials.ContextProvider oci.ContextProvider ContextProvider RepositoryTypes() RepositoryTypeScheme AccessMethods() AccessTypeScheme RepositorySpecHandlers() RepositorySpecHandlers MapUniformRepositorySpec(u *UniformRepositorySpec) (RepositorySpec, error) BlobHandlers() BlobHandlerRegistry BlobDigesters() BlobDigesterRegistry RepositoryForSpec(spec RepositorySpec, creds ...credentials.CredentialsSource) (Repository, error) RepositoryForConfig(data []byte, unmarshaler runtime.Unmarshaler, creds ...credentials.CredentialsSource) (Repository, error) RepositorySpecForConfig(data []byte, unmarshaler runtime.Unmarshaler) (RepositorySpec, error) AccessSpecForSpec(spec compdesc.AccessSpec) (AccessSpec, error) AccessSpecForConfig(data []byte, unmarshaler runtime.Unmarshaler) (AccessSpec, error) Encode(AccessSpec, runtime.Marshaler) ([]byte, error) GetAlias(name string) RepositorySpec SetAlias(name string, spec RepositorySpec) GetResolver() ComponentVersionResolver AddResolverRule(prefix string, spec RepositorySpec, prio ...int) // Finalize finalizes elements implicitly opened during resource operations. // For example, registered blob handler may open objects, which are kept open // for performance reasons. At the end of a usage finalize should be called // to finalize those elements. This method can be called any time by a context // user to cleanup temporarily allocated resources. Therefore, only // elements should be added to the finalzer, which can be reopened/created // on-the fly whenever required. Finalize() error Finalizer() *Finalizer }
func FromContext ¶ added in v0.3.0
FromContext returns the Context to use for context.Context. This is either an explicit context or the default context.
func FromProvider ¶ added in v0.3.0
func FromProvider(p ContextProvider) Context
type ContextProvider ¶
type ContextProvider interface {
OCMContext() Context
}
func WrapContextProvider ¶ added in v0.3.0
func WrapContextProvider(ctx LocalContextProvider) ContextProvider
type DataAccess ¶
type DataAccess = accessio.DataAccess
type DelegationRegistry ¶ added in v0.3.0
type DelegationRegistry[C any, T runtime.TypedObject] interface { Register(name string, decoder PriorityDecoder[C, T]) Get(name string) PriorityDecoder[C, T] Delegations() map[string]PriorityDecoder[C, T] Decode(ctx C, data []byte, unmarshaller runtime.Unmarshaler) (T, error) Copy() DelegationRegistry[C, T] }
func NewDelegationRegistry ¶ added in v0.3.0
func NewDelegationRegistry[C any, T runtime.TypedObject](base ...DelegationRegistry[C, T]) DelegationRegistry[C, T]
type DigestDescriptor ¶
type DigestDescriptor = metav1.DigestSpec
func NewDigestDescriptor ¶
func NewDigestDescriptor(digest, hashAlgo, normAlgo string) *DigestDescriptor
type DigesterType ¶
func (DigesterType) IsInitial ¶ added in v0.3.0
func (d DigesterType) IsInitial() bool
func (DigesterType) Normalize ¶
func (d DigesterType) Normalize() DigesterType
func (DigesterType) String ¶ added in v0.3.0
func (d DigesterType) String() string
type EvaluatableAccessSpec ¶
type EvaluatableAccessSpec interface { AccessSpec Evaluate(ctx Context) (AccessSpec, error) }
type GenericAccessSpec ¶
type GenericAccessSpec struct {
runtime.UnstructuredVersionedTypedObject `json:",inline"`
}
func ToGenericAccessSpec ¶ added in v0.3.0
func ToGenericAccessSpec(spec AccessSpec) (*GenericAccessSpec, error)
func (*GenericAccessSpec) AccessMethod ¶
func (s *GenericAccessSpec) AccessMethod(acc ComponentVersionAccess) (AccessMethod, error)
func (*GenericAccessSpec) Describe ¶
func (s *GenericAccessSpec) Describe(ctx Context) string
func (*GenericAccessSpec) Evaluate ¶
func (s *GenericAccessSpec) Evaluate(ctx Context) (AccessSpec, error)
func (*GenericAccessSpec) GetInexpensiveContentVersionIdentity ¶ added in v0.3.0
func (s *GenericAccessSpec) GetInexpensiveContentVersionIdentity(acc ComponentVersionAccess) string
func (*GenericAccessSpec) GlobalAccessSpec ¶ added in v0.3.0
func (s *GenericAccessSpec) GlobalAccessSpec(ctx Context) AccessSpec
func (*GenericAccessSpec) IsLocal ¶
func (s *GenericAccessSpec) IsLocal(ctx Context) bool
type GenericRepositorySpec ¶
type GenericRepositorySpec struct {
runtime.UnstructuredVersionedTypedObject `json:",inline"`
}
func ToGenericRepositorySpec ¶
func ToGenericRepositorySpec(spec RepositorySpec) (*GenericRepositorySpec, error)
func (*GenericRepositorySpec) AsUniformSpec ¶
func (s *GenericRepositorySpec) AsUniformSpec(ctx Context) *UniformRepositorySpec
func (*GenericRepositorySpec) Evaluate ¶
func (s *GenericRepositorySpec) Evaluate(ctx Context) (RepositorySpec, error)
func (*GenericRepositorySpec) Repository ¶
func (s *GenericRepositorySpec) Repository(ctx Context, creds credentials.Credentials) (Repository, error)
type HintProvider ¶
type HintProvider interface {
GetReferenceHint(cv ComponentVersionAccess) string
}
HintProvider is used to provide a reference hint for local access method specs. It may optionally be provided by an access spec. When adding blobs to a repository the hint is used by blobhandlers for expanding a blob to a repository specific representation to determine a useful name.
type ImplementationRepositoryType ¶
type ImplementationRepositoryType struct { ContextType string `json:"contextType,omitempty"` RepositoryType string `json:"repositoryType,omitempty"` }
func (ImplementationRepositoryType) IsInitial ¶
func (t ImplementationRepositoryType) IsInitial() bool
func (ImplementationRepositoryType) String ¶
func (t ImplementationRepositoryType) String() string
type IntermediateRepositorySpecAspect ¶
type IntermediateRepositorySpecAspect = oci.IntermediateRepositorySpecAspect
type LocalContextProvider ¶ added in v0.3.0
type LocalContextProvider interface {
GetContext() Context
}
type MatchingResolver ¶ added in v0.3.0
type MatchingResolver struct {
// contains filtered or unexported fields
}
func NewMatchingResolver ¶ added in v0.3.0
func NewMatchingResolver(ctx ContextProvider, rules ...*ResolverRule) *MatchingResolver
func (*MatchingResolver) AddRule ¶ added in v0.3.0
func (r *MatchingResolver) AddRule(prefix string, spec RepositorySpec, prio ...int)
func (*MatchingResolver) Finalize ¶ added in v0.3.0
func (r *MatchingResolver) Finalize() error
func (*MatchingResolver) GetRules ¶ added in v0.3.0
func (r *MatchingResolver) GetRules() []*ResolverRule
func (*MatchingResolver) LookupComponentVersion ¶ added in v0.3.0
func (r *MatchingResolver) LookupComponentVersion(name string, version string) (ComponentVersionAccess, error)
func (*MatchingResolver) OCMContext ¶ added in v0.3.0
func (r *MatchingResolver) OCMContext() Context
type MultiBlobHandler ¶
type MultiBlobHandler []BlobHandler
MultiBlobHandler is a BlobHandler consisting of a sequence of handlers.
func (MultiBlobHandler) Len ¶
func (m MultiBlobHandler) Len() int
func (MultiBlobHandler) Less ¶
func (m MultiBlobHandler) Less(i, j int) bool
func (MultiBlobHandler) StoreBlob ¶
func (m MultiBlobHandler) StoreBlob(blob BlobAccess, artType, hint string, global AccessSpec, ctx StorageContext) (AccessSpec, error)
func (MultiBlobHandler) Swap ¶
func (m MultiBlobHandler) Swap(i, j int)
type PrioBlobHandler ¶
type PrioBlobHandler struct { BlobHandler Prio int }
type PriorityDecoder ¶ added in v0.3.0
type PriorityDecoder[C any, T runtime.TypedObject] interface { Decode(ctx C, data []byte, unmarshaler runtime.Unmarshaler) (T, error) Priority() int }
type RegistrationHandlerInfo ¶
type RegistrationHandlerInfo = registrations.RegistrationHandlerInfo[Context, BlobHandlerOption]
func NewRegistrationHandlerInfo ¶
func NewRegistrationHandlerInfo(path string, handler BlobHandlerRegistrationHandler) *RegistrationHandlerInfo
type Repository ¶
type Repository interface { resource.ResourceView[Repository] RepositoryImpl }
type RepositoryCache ¶ added in v0.3.0
type RepositoryCache struct {
// contains filtered or unexported fields
}
func NewRepositoryCache ¶ added in v0.3.0
func NewRepositoryCache() *RepositoryCache
func (*RepositoryCache) Finalize ¶ added in v0.3.0
func (c *RepositoryCache) Finalize() error
func (*RepositoryCache) LookupRepository ¶ added in v0.3.0
func (c *RepositoryCache) LookupRepository(ctx Context, spec RepositorySpec) (Repository, error)
type RepositoryDelegationRegistry ¶ added in v0.3.0
type RepositoryDelegationRegistry = DelegationRegistry[Context, RepositorySpec]
RepositoryDelegationRegistry is used to register handlers able to dynamically enrich the set of available OCM repository types, which are supported without explicit registration at the OCM repository type registry. The definition of such types is *delegated* to the delegation handler. For example, it is used to fade in all the OCI repositories types provided by an OCI context and mapped by the genericocireg repository mapping. It is used as default decoder for the OCM repository type scheme. The encoding is done by the spec objects on their own behalf. Therefore, multi version spec types MUST correctly implement the MarshalJSOM method on the internal version.
type RepositoryImpl ¶ added in v0.3.0
type RepositoryImpl interface { GetContext() Context GetSpecification() RepositorySpec ComponentLister() ComponentLister ExistsComponentVersion(name string, version string) (bool, error) LookupComponentVersion(name string, version string) (ComponentVersionAccess, error) LookupComponent(name string) (ComponentAccess, error) Close() error }
type RepositorySpec ¶
type RepositorySpec interface { runtime.VersionedTypedObject AsUniformSpec(Context) *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 RepositorySpecDecoder ¶ added in v0.3.0
type RepositorySpecDecoder = runtime.TypedObjectDecoder[RepositorySpec]
type RepositorySpecHandler ¶
type RepositorySpecHandler interface {
MapReference(ctx Context, u *UniformRepositorySpec) (RepositorySpec, error)
}
type RepositorySpecHandlers ¶
type RepositorySpecHandlers interface { Register(hdlr RepositorySpecHandler, types ...string) Copy() RepositorySpecHandlers KnownTypeNames() []string GetHandlers(typ string) []RepositorySpecHandler MapUniformRepositorySpec(ctx Context, u *UniformRepositorySpec) (RepositorySpec, error) }
func NewRepositorySpecHandlers ¶
func NewRepositorySpecHandlers() RepositorySpecHandlers
type RepositoryType ¶
type RepositoryType interface { runtime.VersionedTypedObjectType[RepositorySpec] }
type RepositoryTypeProvider ¶ added in v0.3.0
type RepositoryTypeProvider = runtime.KnownTypesProvider[RepositorySpec, RepositoryType]
type RepositoryTypeScheme ¶
type RepositoryTypeScheme interface { runtime.TypeScheme[RepositorySpec, RepositoryType] }
func NewRepositoryTypeScheme ¶
func NewRepositoryTypeScheme(defaultDecoder RepositorySpecDecoder, base ...RepositoryTypeScheme) RepositoryTypeScheme
func NewStrictRepositoryTypeScheme ¶ added in v0.3.0
func NewStrictRepositoryTypeScheme(base ...RepositoryTypeScheme) RepositoryTypeScheme
type ResolverRule ¶ added in v0.3.0
type ResolverRule struct {
// contains filtered or unexported fields
}
func NewResolverRule ¶ added in v0.3.0
func NewResolverRule(prefix string, spec RepositorySpec, prio ...int) *ResolverRule
func (*ResolverRule) Compare ¶ added in v0.3.0
func (r *ResolverRule) Compare(o *ResolverRule) int
func (*ResolverRule) GetPrefix ¶ added in v0.3.0
func (r *ResolverRule) GetPrefix() string
func (*ResolverRule) GetPriority ¶ added in v0.3.0
func (r *ResolverRule) GetPriority() int
func (*ResolverRule) GetSpecification ¶ added in v0.3.0
func (r *ResolverRule) GetSpecification() RepositorySpec
func (*ResolverRule) Match ¶ added in v0.3.0
func (r *ResolverRule) Match(name string) bool
type ResourceAccess ¶
type ResourceAccess interface { Meta() *ResourceMeta BaseAccess }
type ResourceMeta ¶
type ResourceMeta = compdesc.ResourceMeta
type SourceAccess ¶
type SourceAccess interface { Meta() *SourceMeta BaseAccess }
type SourceMeta ¶
type SourceMeta = compdesc.SourceMeta
type StorageContext ¶
type StorageContext interface { GetContext() Context TargetComponentVersion() ComponentVersionAccess TargetComponentRepository() Repository GetImplementationRepositoryType() ImplementationRepositoryType }
StorageContext is an object describing the storage context used for the mapping of a component repository to a base repository (e.g. oci api) It depends on the Context type of the used base repository.
type UniformRepositorySpec ¶
type UniformRepositorySpec struct { // Type Type string `json:"type,omitempty"` // Host is the hostname of an ocm ref. Host string `json:"host,omitempty"` // SubPath is the sub path spec used to host component versions SubPath string `json:"subPath,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"` // TypeHintshould be set if CreateIfMissing is true to help to decide what kind of repo to create TypeHint string `json:"typeHint,omitempty"` }
UniformRepositorySpec is generic specification of the repository for handling as part of standard references.
func UniformRepositorySpecForUnstructured ¶ added in v0.3.0
func UniformRepositorySpecForUnstructured(un *runtime.UnstructuredVersionedTypedObject) *UniformRepositorySpec
func (*UniformRepositorySpec) CredHost ¶
func (r *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) String ¶
func (u *UniformRepositorySpec) String() string
type UnknownAccessSpec ¶
type UnknownAccessSpec struct {
runtime.UnstructuredVersionedTypedObject `json:",inline"`
}
func (*UnknownAccessSpec) AccessMethod ¶
func (s *UnknownAccessSpec) AccessMethod(ComponentVersionAccess) (AccessMethod, error)
func (*UnknownAccessSpec) Describe ¶
func (s *UnknownAccessSpec) Describe(ctx Context) string
func (*UnknownAccessSpec) GetInexpensiveContentVersionIdentity ¶ added in v0.3.0
func (s *UnknownAccessSpec) GetInexpensiveContentVersionIdentity(ComponentVersionAccess) string
func (*UnknownAccessSpec) GlobalAccessSpec ¶ added in v0.3.0
func (_ *UnknownAccessSpec) GlobalAccessSpec(Context) AccessSpec
func (*UnknownAccessSpec) IsLocal ¶
func (_ *UnknownAccessSpec) IsLocal(Context) bool
func (*UnknownAccessSpec) IsUnknown ¶ added in v0.3.0
func (_ *UnknownAccessSpec) IsUnknown() bool
type UnknownRepositorySpec ¶
type UnknownRepositorySpec struct {
runtime.UnstructuredVersionedTypedObject `json:",inline"`
}
func (*UnknownRepositorySpec) AsUniformSpec ¶
func (r *UnknownRepositorySpec) AsUniformSpec(Context) *UniformRepositorySpec
func (*UnknownRepositorySpec) IsUnknown ¶ added in v0.3.0
func (_ *UnknownRepositorySpec) IsUnknown() bool
func (*UnknownRepositorySpec) Repository ¶
func (r *UnknownRepositorySpec) Repository(Context, credentials.Credentials) (Repository, error)