compdesc

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: 23 Imported by: 0

Documentation

Index

Constants

View Source
const (
	SystemIdentityName    = "name"
	SystemIdentityVersion = "version"
)
View Source
const (
	KIND_HASH_ALGORITHM   = "hash algorithm"
	KIND_SIGN_ALGORITHM   = "signing algorithm"
	KIND_NORM_ALGORITHM   = "normalization algorithm"
	KIND_VERIFY_ALGORITHM = "signature verification algorithm"
	KIND_PUBLIC_KEY       = "public key"
	KIND_PRIVATE_KEY      = "private key"
	KIND_SIGNATURE        = "signature"
)
View Source
const ComponentDescriptorFileName = "component-descriptor.yaml"
View Source
const DefaultSchemeVersion = "v2"
View Source
const InternalSchemaVersion = "internal"
View Source
const KIND_REFERENCE = "component reference"

Variables

DefaultJSONCodec implements Codec interface with the json decoder encoder.

View Source
var DefaultSchemes = Schemes{}
View Source
var DefaultYAMLCodec = CodecWrapper{
	Decoder:       DecoderFunc(func(data []byte, obj interface{}) error { return yaml.Unmarshal(data, obj) }),
	StrictDecoder: StrictDecoderFunc(func(data []byte, obj interface{}) error { return yaml.UnmarshalStrict(data, obj) }),
	Encoder:       EncoderFunc(yaml.Marshal),
}

DefaultYAMLCodec implements Codec interface with the yaml decoder encoder.

View Source
var Normalizations = NormalizationAlgorithms{/* contains filtered or unexported fields */}
View Source
var NotFound = errors.ErrNotFound()

Functions

func And

func And[T any](sel ...any) T

func CatchConversionError

func CatchConversionError(errp *error)

func DefaultResources

func DefaultResources(component *ComponentDescriptor)

DefaultResources defaults a list of resources. The version of the component is defaulted for local resources that do not contain a version. adds the version as identity if the resource identity would clash otherwise.

func Encode

func Encode(obj *ComponentDescriptor, opts ...EncodeOption) ([]byte, error)

Encode encodes a component into the given object. If the serialization version is left blank, the schema version configured in the component descriptor will be used.

func Hash

func Hash(cd *ComponentDescriptor, normAlgo string, hash hash.Hash) (string, error)

Hash return the hash for the component-descriptor, if it is normalizeable (= componentReferences and resources contain digest field).

func MatchLabels

func MatchLabels(labels v1.Labels, sel ...LabelSelector) (bool, error)

MatchLabels checks whether a set of labels matches the given label selectors.

func MatchReferencesByReferenceSelector

func MatchReferencesByReferenceSelector(obj ReferenceSelectionContext, resourceSelectors ...ReferenceSelector) (bool, error)

MatchReferencesByReferenceSelector applies all resource selector against the given resource object.

func MatchResourceByResourceSelector

func MatchResourceByResourceSelector(obj ResourceSelectionContext, resourceSelectors ...ResourceSelector) (bool, error)

MatchResourceByResourceSelector applies all resource selector against the given resource object.

func NormHash

func NormHash(cd *ComponentDescriptor, normAlgo string, hash hash.Hash) ([]byte, string, error)

func Normalize

func Normalize(cd *ComponentDescriptor, normAlgo string) ([]byte, error)

func Not

func Not[T any](sel any) T

func Or

func Or[T any](sel ...any) T

func RegisterScheme

func RegisterScheme(scheme Scheme)

func SelectLabels

func SelectLabels(labels v1.Labels, sel ...LabelSelector) (v1.Labels, error)

SelectLabels returns labels matching the given label selectors.

func Sign

func Sign(cctx credentials.Context, cd *ComponentDescriptor, privateKey interface{}, signer signing.Signer, hasher signing.Hasher, signatureName, issuer string) error

Sign signs the given component-descriptor with the signer. The component-descriptor has to contain digests for componentReferences and resources.

func ThrowConversionError

func ThrowConversionError(err error)

func Validate

func Validate(desc *ComponentDescriptor) error

func Verify

func Verify(cd *ComponentDescriptor, registry signing.Registry, signatureName string) error

Verify verifies the signature (selected by signatureName) and hash of the component-descriptor (as specified in the signature). Does NOT resolve resources or referenced component-descriptors. Returns error if verification fails.

Types

type AccessSpec

type AccessSpec interface {
	runtime.VersionedTypedObject
}

AccessSpec is an abstract specification of an access method The outbound object is typicall a runtime.UnstructuredTypedObject. Inbound any serializable AccessSpec implementation is possible.

func GenericAccessSpec

func GenericAccessSpec(un *runtime.UnstructuredTypedObject) AccessSpec

GenericAccessSpec returns a generic AccessSpec implementation for an unstructured object. It can always be used instead of a dedicated access spec implementation. The core methods will map these spec into effective ones before an access is returned to the caller.

type ArtifactAccess

type ArtifactAccess func(cd *ComponentDescriptor) ArtifactAccessor

ArtifactAccess provides access to a dedicated kind of artifact set in the component descriptor (resources or sources).

type ArtifactAccessor

type ArtifactAccessor interface {
	Len() int
	GetArtifact(i int) ElementArtifactAccessor
}

ArtifactAccessor provides generic access to list of artifacts. There are resources or sources.

func ResourceArtifacts

func ResourceArtifacts(cd *ComponentDescriptor) ArtifactAccessor

func SourceArtifacts

func SourceArtifacts(cd *ComponentDescriptor) ArtifactAccessor

type Codec

type Codec interface {
	Decoder
	StrictDecoder
	Encoder
}

Codec describes an encoding for en object.

type CodecWrapper

type CodecWrapper struct {
	Decoder
	StrictDecoder
	Encoder
}

CodecWrapper is a simple struct that implements the Codec interface.

func (CodecWrapper) ApplyDecodeOption

func (o CodecWrapper) ApplyDecodeOption(options *DecodeOptions)

ApplyDecodeOption applies the configured codec.

func (CodecWrapper) ApplyEncodeOption

func (o CodecWrapper) ApplyEncodeOption(options *EncodeOptions)

ApplyEncodeOption applies the configured codec.

type ComponentDescriptor

type ComponentDescriptor struct {
	// Metadata specifies the schema version of the component.
	Metadata Metadata `json:"meta"`
	// Spec contains the specification of the component.
	ComponentSpec `json:"component"`
	// Signatures contains a list of signatures for the ComponentDescriptor
	Signatures metav1.Signatures `json:"signatures,omitempty"`

	// NestedDigets describe calculated resource digests for aggregated
	// component versions, which might not be persisted, but incorporated
	// into signatures of the actual component version
	NestedDigests metav1.NestedDigests `json:"nestedDigests,omitempty"`
}

ComponentDescriptor defines a versioned component with a source and dependencies. +k8s:deepcopy-gen=true +k8s:openapi-gen=true

func Decode

func Decode(data []byte, opts ...DecodeOption) (*ComponentDescriptor, error)

Decode decodes a component into the given object.

func DefaultComponent

func DefaultComponent(component *ComponentDescriptor) *ComponentDescriptor

DefaultComponent applies defaults to a component.

func New

func New(name, version string) *ComponentDescriptor

func (*ComponentDescriptor) AddRepositoryContext

func (cd *ComponentDescriptor) AddRepositoryContext(repoCtx runtime.TypedObject) error

AddRepositoryContext appends the given repository context to components descriptor repository history. The context is not appended if the effective repository context already matches the current context.

func (*ComponentDescriptor) Copy

func (*ComponentDescriptor) Equal

func (*ComponentDescriptor) Equivalent

func (cd *ComponentDescriptor) Equivalent(o *ComponentDescriptor) bool

func (*ComponentDescriptor) GetComponentReferenceIndex

func (cd *ComponentDescriptor) GetComponentReferenceIndex(ref ComponentReference) int

GetComponentReferenceIndex returns the index of a given component reference. If the index is not found -1 is returned.

func (*ComponentDescriptor) GetComponentReferences

func (cd *ComponentDescriptor) GetComponentReferences(selectors ...IdentitySelector) ([]ComponentReference, error)

GetComponentReferences returns all component references that matches the given selectors.

func (*ComponentDescriptor) GetEffectiveRepositoryContext

func (cd *ComponentDescriptor) GetEffectiveRepositoryContext() *runtime.UnstructuredTypedObject

GetEffectiveRepositoryContext returns the currently active repository context.

func (*ComponentDescriptor) GetExternalResource

func (cd *ComponentDescriptor) GetExternalResource(rtype, name, version string) (Resource, error)

GetExternalResource returns external resource with the given type, name and version. If multiple resources match, the first one is returned.

func (*ComponentDescriptor) GetExternalResources

func (cd *ComponentDescriptor) GetExternalResources(rtype, name, version string) (Resources, error)

GetExternalResources returns external resource with the given type, name and version.

func (*ComponentDescriptor) GetLocalResource

func (cd *ComponentDescriptor) GetLocalResource(rtype, name, version string) (Resource, error)

GetLocalResource returns a local resource with the given type, name and version. If multiple resources match, the first one is returned.

func (*ComponentDescriptor) GetLocalResources

func (cd *ComponentDescriptor) GetLocalResources(rtype, name, version string) (Resources, error)

GetLocalResources returns all local resources with the given type, name and version.

func (*ComponentDescriptor) GetReferenceByIdentity

func (cd *ComponentDescriptor) GetReferenceByIdentity(id v1.Identity) (ComponentReference, error)

GetReferenceByIdentity returns reference that match the given identity.

func (*ComponentDescriptor) GetReferenceIndex

func (cd *ComponentDescriptor) GetReferenceIndex(src *ElementMeta) int

GetReferenceIndex returns the index of a given source. If the index is not found -1 is returned.

func (*ComponentDescriptor) GetReferencesByIdentitySelectors

func (cd *ComponentDescriptor) GetReferencesByIdentitySelectors(selectors ...IdentitySelector) (References, error)

GetReferencesByIdentitySelectors returns resources that match the given identity selectors.

func (*ComponentDescriptor) GetReferencesByName

func (cd *ComponentDescriptor) GetReferencesByName(name string, selectors ...IdentitySelector) (References, error)

GetReferencesByName returns references that match the given name.

func (*ComponentDescriptor) GetReferencesByReferenceSelectors

func (cd *ComponentDescriptor) GetReferencesByReferenceSelectors(selectors ...ReferenceSelector) (References, error)

GetReferencesByReferenceSelectors returns resources that match the given resource selectors.

func (*ComponentDescriptor) GetReferencesBySelectors

func (cd *ComponentDescriptor) GetReferencesBySelectors(selectors []IdentitySelector, referenceSelectors []ReferenceSelector) (References, error)

GetReferencesBySelectors returns resources that match the given selector.

func (*ComponentDescriptor) GetResourceByDefaultSelector

func (cd *ComponentDescriptor) GetResourceByDefaultSelector(sel interface{}) (Resources, error)

GetResourceByDefaultSelector returns resources that match the given selectors.

func (*ComponentDescriptor) GetResourceByIdentity

func (cd *ComponentDescriptor) GetResourceByIdentity(id v1.Identity) (Resource, error)

GetResourceByIdentity returns resource that match the given identity.

func (*ComponentDescriptor) GetResourceByJSONScheme

func (cd *ComponentDescriptor) GetResourceByJSONScheme(src interface{}) (Resources, error)

GetResourceByJSONScheme returns resources that match the given selectors.

func (*ComponentDescriptor) GetResourceByRegexSelector

func (cd *ComponentDescriptor) GetResourceByRegexSelector(sel interface{}) (Resources, error)

GetResourceByRegexSelector returns resources that match the given selectors.

func (*ComponentDescriptor) GetResourceIndex

func (cd *ComponentDescriptor) GetResourceIndex(res *ResourceMeta) int

GetResourceIndex returns the index of a given resource. If the index is not found -1 is returned.

func (*ComponentDescriptor) GetResourcesByIdentitySelectors

func (cd *ComponentDescriptor) GetResourcesByIdentitySelectors(selectors ...IdentitySelector) (Resources, error)

GetResourcesByIdentitySelectors returns resources that match the given identity selectors.

func (*ComponentDescriptor) GetResourcesByName

func (cd *ComponentDescriptor) GetResourcesByName(name string, selectors ...IdentitySelector) (Resources, error)

GetResourcesByName returns all local and external resources with a name.

func (*ComponentDescriptor) GetResourcesByResourceSelectors

func (cd *ComponentDescriptor) GetResourcesByResourceSelectors(selectors ...ResourceSelector) (Resources, error)

GetResourcesByResourceSelectors returns resources that match the given resource selectors.

func (*ComponentDescriptor) GetResourcesBySelectors

func (cd *ComponentDescriptor) GetResourcesBySelectors(selectors []IdentitySelector, resourceSelectors []ResourceSelector) (Resources, error)

GetResourcesBySelectors returns resources that match the given selector.

func (*ComponentDescriptor) GetResourcesByType

func (cd *ComponentDescriptor) GetResourcesByType(rtype string, selectors ...IdentitySelector) (Resources, error)

GetResourcesByType returns all resources that match the given type and selectors.

func (*ComponentDescriptor) GetSignatureIndex

func (cd *ComponentDescriptor) GetSignatureIndex(name string) int

GetSignatureIndex returns the index of the signature with the given name If the index is not found -1 is returned.

func (*ComponentDescriptor) GetSourceByIdentity

func (cd *ComponentDescriptor) GetSourceByIdentity(id v1.Identity) (Source, error)

GetSourceByIdentity returns source that match the given identity.

func (*ComponentDescriptor) GetSourceIndex

func (cd *ComponentDescriptor) GetSourceIndex(src *SourceMeta) int

GetSourceIndex returns the index of a given source. If the index is not found -1 is returned.

func (*ComponentDescriptor) GetSourcesByIdentitySelectors

func (cd *ComponentDescriptor) GetSourcesByIdentitySelectors(selectors ...IdentitySelector) (Sources, error)

GetSourcesByIdentitySelectors returns references that match the given selector.

func (*ComponentDescriptor) IsNormalizeable

func (cd *ComponentDescriptor) IsNormalizeable() error

IsNormalizeable checks if componentReferences and resources contain digest. Resources are allowed to omit the digest, if res.access.type == None or res.access == nil. Does NOT verify if the digests are correct.

func (*ComponentDescriptor) Reset

func (cd *ComponentDescriptor) Reset()

func (*ComponentDescriptor) SchemaVersion

func (cd *ComponentDescriptor) SchemaVersion() string

SchemaVersion returns the scheme version configured in the representation.

func (*ComponentDescriptor) SelectSignatureByName

func (cd *ComponentDescriptor) SelectSignatureByName(signatureName string) *metav1.Signature

SelectSignatureByName returns the Signature (Digest and SigantureSpec) matching the given name.

type ComponentDescriptorVersion

type ComponentDescriptorVersion interface {
	SchemaVersion() string
	GetName() string
	GetVersion() string
	Normalize(normAlgo string) ([]byte, error)
}

func Convert

Convert converts a component descriptor into a dedicated scheme version. If the serialization version is left blank, the schema version configured in the component descriptor will be used.

type ComponentReference

type ComponentReference struct {
	ElementMeta `json:",inline"`
	// ComponentName describes the remote name of the referenced object
	ComponentName string `json:"componentName"`
	// Digest is the optional digest of the referenced component.
	// +optional
	Digest *metav1.DigestSpec `json:"digest,omitempty"`
}

ComponentReference describes the reference to another component in the registry. +k8s:deepcopy-gen=true +k8s:openapi-gen=true

func NewComponentReference

func NewComponentReference(name, componentName, version string, extraIdentity metav1.Identity) *ComponentReference

func (*ComponentReference) Copy

func (*ComponentReference) GetComponentName

func (r *ComponentReference) GetComponentName() string

func (*ComponentReference) GetMeta

func (r *ComponentReference) GetMeta() *ElementMeta

func (*ComponentReference) IsEquivalent

func (r *ComponentReference) IsEquivalent(e ElementMetaAccessor) bool

func (ComponentReference) String

func (r ComponentReference) String() string

type ComponentSpec

type ComponentSpec struct {
	metav1.ObjectMeta `json:",inline"`
	// RepositoryContexts defines the previous repositories of the component
	RepositoryContexts runtime.UnstructuredTypedObjectList `json:"repositoryContexts"`
	// Sources defines sources that produced the component
	Sources Sources `json:"sources"`
	// References references component dependencies that can be resolved in the current context.
	References References `json:"componentReferences"`
	// Resources defines all resources that are created by the component and by a third party.
	Resources Resources `json:"resources"`
}

ComponentSpec defines a virtual component with a repository context, source and dependencies. +k8s:deepcopy-gen=true +k8s:openapi-gen=true

type DecodeOption

type DecodeOption interface {
	ApplyDecodeOption(options *DecodeOptions)
}

DecodeOption is the interface to specify different cache options.

type DecodeOptions

type DecodeOptions struct {
	Codec             Codec
	DisableValidation bool
	StrictMode        bool
}

DecodeOptions defines decode options for the codec.

func (*DecodeOptions) ApplyDecodeOption

func (o *DecodeOptions) ApplyDecodeOption(options *DecodeOptions)

ApplyDecodeOption applies the actual options.

func (*DecodeOptions) ApplyOptions

func (o *DecodeOptions) ApplyOptions(opts []DecodeOption) *DecodeOptions

ApplyOptions applies the given list options on these options, and then returns itself (for convenient chaining).

type Decoder

type Decoder interface {
	Decode(data []byte, obj interface{}) error
}

Decoder defines a decoder for an object.

type DecoderFunc

type DecoderFunc func(data []byte, obj interface{}) error

DecoderFunc is a simple function that implements the Decoder interface.

func (DecoderFunc) Decode

func (e DecoderFunc) Decode(data []byte, obj interface{}) error

Decode is the Decode implementation of the Decoder interface.

type DisableValidation

type DisableValidation bool

DisableValidation enables or disables validation of the component descriptor.

func (DisableValidation) ApplyDecodeOption

func (v DisableValidation) ApplyDecodeOption(options *DecodeOptions)

ApplyDecodeOption applies the validation disable option.

type ElementAccessor

type ElementAccessor interface {
	Len() int
	Get(i int) ElementMetaAccessor
}

ElementAccessor provides generic access to list of elements.

type ElementArtifactAccessor

type ElementArtifactAccessor interface {
	ElementMetaAccessor
	GetAccess() AccessSpec
}

ElementArtifactAccessor provides access to generic artifact information of an element.

type ElementBasedSelector

type ElementBasedSelector interface {
	ElementSelector
	ResourceSelector
	ReferenceSelector
}

type ElementMeta

type ElementMeta struct {
	// Name is the context unique name of the object.
	Name string `json:"name"`
	// Version is the semver version of the object.
	Version string `json:"version"`
	// ExtraIdentity is the identity of an object.
	// An additional label with key "name" ist not allowed
	ExtraIdentity metav1.Identity `json:"extraIdentity,omitempty"`
	// Labels defines an optional set of additional labels
	// describing the object.
	// +optional
	Labels metav1.Labels `json:"labels,omitempty"`
}

ElementMeta defines a object that is uniquely identified by its identity. +k8s:deepcopy-gen=true +k8s:openapi-gen=true

func (*ElementMeta) Copy

func (o *ElementMeta) Copy() *ElementMeta

func (*ElementMeta) GetIdentity

func (o *ElementMeta) GetIdentity(accessor ElementAccessor) metav1.Identity

GetIdentity returns the identity of the object.

func (*ElementMeta) GetIdentityDigest

func (o *ElementMeta) GetIdentityDigest(accessor ElementAccessor) []byte

GetIdentityDigest returns the digest of the object's identity.

func (*ElementMeta) GetLabels

func (o *ElementMeta) GetLabels() metav1.Labels

GetLabels returns the label of the object.

func (*ElementMeta) GetMatchBaseIdentity

func (o *ElementMeta) GetMatchBaseIdentity() metav1.Identity

GetMatchBaseIdentity returns all possible identity attributes for resource matching.

func (*ElementMeta) GetName

func (o *ElementMeta) GetName() string

GetName returns the name of the object.

func (*ElementMeta) GetRawIdentity

func (o *ElementMeta) GetRawIdentity() metav1.Identity

GetRawIdentity returns the identity plus version.

func (*ElementMeta) GetVersion

func (o *ElementMeta) GetVersion() string

GetVersion returns the version of the object.

func (*ElementMeta) RemoveLabel

func (o *ElementMeta) RemoveLabel(name string) bool

RemoveLabel removes a single label.

func (*ElementMeta) SetExtraIdentity

func (o *ElementMeta) SetExtraIdentity(identity metav1.Identity)

SetExtraIdentity sets the identity of the object.

func (*ElementMeta) SetLabel

func (o *ElementMeta) SetLabel(name string, value interface{}) error

SetLabel sets a single label to an effective value. If the value is no byte slice, it is marshaled.

func (*ElementMeta) SetLabels

func (o *ElementMeta) SetLabels(labels []metav1.Label)

SetLabels sets the labels of the object.

func (*ElementMeta) SetName

func (o *ElementMeta) SetName(name string)

SetName sets the name of the object.

func (*ElementMeta) SetVersion

func (o *ElementMeta) SetVersion(version string)

SetVersion sets the version of the object.

type ElementMetaAccessor

type ElementMetaAccessor interface {
	GetMeta() *ElementMeta
	IsEquivalent(ElementMetaAccessor) bool
}

ElementMetaAccessor provides generic access an elements meta information.

type ElementSelectionContext

type ElementSelectionContext = *elementSelectionContext

func NewElementSelectionContext

func NewElementSelectionContext(index int, elems ElementAccessor) ElementSelectionContext

type ElementSelector

type ElementSelector interface {
	MatchElement(obj ElementSelectionContext) (bool, error)
}

type EncodeOption

type EncodeOption interface {
	ApplyEncodeOption(options *EncodeOptions)
}

EncodeOption is the interface to specify different encode options.

type EncodeOptions

type EncodeOptions struct {
	Codec         Codec
	SchemaVersion string
}

func (*EncodeOptions) ApplyEncodeOption

func (o *EncodeOptions) ApplyEncodeOption(options *EncodeOptions)

ApplyDecodeOption applies the actual options.

func (*EncodeOptions) ApplyOptions

func (o *EncodeOptions) ApplyOptions(opts []EncodeOption) *EncodeOptions

ApplyOptions applies the given list options on these options, and then returns itself (for convenient chaining).

func (*EncodeOptions) DefaultFor

func (o *EncodeOptions) DefaultFor(cd *ComponentDescriptor) *EncodeOptions

type Encoder

type Encoder interface {
	Encode(obj interface{}) ([]byte, error)
}

Encoder defines a encoder for an object.

type EncoderFunc

type EncoderFunc func(obj interface{}) ([]byte, error)

EncoderFunc is a simple function that implements the Encoder interface.

func (EncoderFunc) Encode

func (e EncoderFunc) Encode(obj interface{}) ([]byte, error)

Encode is the Encode implementation of the Encoder interface.

type IdentityBasedSelector

type IdentityBasedSelector interface {
	IdentitySelector
	ElementSelector
	ResourceSelector
	ReferenceSelector
}

func ByIdentity

func ByIdentity(name string, extras ...string) IdentityBasedSelector

ByIdentity creates a new resource and identity selector that selects a resource based on its identity.

func ByName

func ByName(name string) IdentityBasedSelector

ByName creates a new selector that selects an element based on its name.

func ByPartialIdentity

func ByPartialIdentity(name string, extras ...string) IdentityBasedSelector

ByPartialIdentity creates a new resource and identity selector that selects a resource based on its partial identity. All given attributes must match, but potential additional attributes of a resource identity are ignored.

func ByVersion

func ByVersion(version string) IdentityBasedSelector

ByVersion creates a new selector that selects an element based on its version.

func WithExtraIdentity

func WithExtraIdentity(args ...string) IdentityBasedSelector

WithExtraIdentity creates a new selector that selects an element based on extra identities.

type IdentitySelector

type IdentitySelector = selector.Interface

type LabelBasedSelector

type LabelBasedSelector interface {
	LabelSelector
	ElementSelector
	ResourceSelector
	ReferenceSelector
}

func ByLabel

func ByLabel(sel ...LabelSelector) LabelBasedSelector

ByLabel matches a resource or element for a list of given label selectors matching the same label. If multiple label related selectors should be used, they should be grouped into a single label selector to be applied in combination. Otherwise, a resource might match if the label selectors all match, but different labels.

func ByLabelName

func ByLabelName(name string) LabelBasedSelector

ByLabelName matches an element by a label name.

func ByLabelValue

func ByLabelValue(value interface{}) LabelBasedSelector

ByLabelValue matches a resource or label by a label value. This selector should typically be combined with ByLabelName.

func ByLabelVersion

func ByLabelVersion(version string) LabelBasedSelector

ByLabelVersion matches a resource or label by a label version. This selector should typically be combined with ByLabelName.

func BySignedLabel

func BySignedLabel(flags ...bool) LabelBasedSelector

BySignedLabel matches a resource or label by a label indicated to be signed. This selector should typically be combined with ByLabelName.

type LabelSelector

type LabelSelector interface {
	MatchLabel(l v1.Label) (bool, error)
}

LabelSelector is used to match a label in a label set.

func AndL

func AndL(sel ...LabelSelector) LabelSelector

AndL is an AND label selector.

func NotL

func NotL(sel LabelSelector) LabelSelector

NotL is a negated label selector.

func OrL

func OrL(sel ...LabelSelector) LabelSelector

OrL is an OR label selector.

type LabelSelectorFunc

type LabelSelectorFunc func(l v1.Label) (bool, error)

LabelSelectorFunc is a function used as LabelSelector.

func (LabelSelectorFunc) MatchLabel

func (l LabelSelectorFunc) MatchLabel(label v1.Label) (bool, error)

type LabelsAccessor

type LabelsAccessor interface {
	// GetLabels returns the labels of the object.
	GetLabels() metav1.Labels
	// SetLabels sets the labels of the object.
	SetLabels(labels []metav1.Label)
}

LabelsAccessor describes a accessor for a labeled object.

type Metadata

type Metadata struct {
	ConfiguredVersion string `json:"configuredSchemaVersion"`
}

Metadata defines the configured metadata of the component descriptor. It is taken from the original serialization format. It can be set to define a default serialization version.

type NameAccessor

type NameAccessor interface {
	// GetName returns the name of the object.
	GetName() string
	// SetName sets the name of the object.
	SetName(name string)
}

NameAccessor describes a accessor for a named object.

type NormalisationAlgorithm

type NormalisationAlgorithm = string

NormalisationAlgorithm types and versions the algorithm used for digest generation.

const (
	JsonNormalisationV1 NormalisationAlgorithm = "jsonNormalisation/v1"
	JsonNormalisationV2 NormalisationAlgorithm = "jsonNormalisation/v2"
)

type Normalization

type Normalization interface {
	Normalize(cd *ComponentDescriptor) ([]byte, error)
}

type NormalizationAlgorithms

type NormalizationAlgorithms struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

func (*NormalizationAlgorithms) Get

func (*NormalizationAlgorithms) Names

func (n *NormalizationAlgorithms) Names() []string

func (*NormalizationAlgorithms) Normalize

func (n *NormalizationAlgorithms) Normalize(cd *ComponentDescriptor, algo string) ([]byte, error)

func (*NormalizationAlgorithms) Register

func (n *NormalizationAlgorithms) Register(name string, norm Normalization)

type ObjectMeta

type ObjectMeta = metav1.ObjectMeta

type ObjectMetaAccessor

type ObjectMetaAccessor interface {
	NameAccessor
	VersionAccessor
	LabelsAccessor
}

ObjectMetaAccessor describes a accessor for named and versioned object.

type Provider

type Provider = metav1.Provider

type ReferenceSelectionContext

type ReferenceSelectionContext = *referenceSelectionContext

ReferenceSelectionContext describes the selection context for a reference selector. It contains the reference and provides access to its identity in the context of its component descriptor.

func NewReferenceSelectionContext

func NewReferenceSelectionContext(index int, refs References) ReferenceSelectionContext

type ReferenceSelector

type ReferenceSelector interface {
	MatchReference(obj ReferenceSelectionContext) (bool, error)
}

ReferenceSelector defines a selector based on reference attributes.

func AndC

AndC is an AND reference selector.

func ByComponent

func ByComponent(name string) ReferenceSelector

func NotC

NotC is a negated resource selector.

func OrC

OrC is an OR resource selector.

type ReferenceSelectorFunc

type ReferenceSelectorFunc func(obj ReferenceSelectionContext) (bool, error)

ReferenceSelectorFunc defines a function to filter a resource.

func (ReferenceSelectorFunc) MatchReference

func (s ReferenceSelectorFunc) MatchReference(obj ReferenceSelectionContext) (bool, error)

type References

type References []ComponentReference

func (References) Copy

func (r References) Copy() References

func (References) Get

func (References) Len

func (r References) Len() int

func (References) Less

func (r References) Less(i, j int) bool

func (References) Swap

func (r References) Swap(i, j int)

type Resource

type Resource struct {
	ResourceMeta `json:",inline"`
	// Access describes the type specific method to
	// access the defined resource.
	Access AccessSpec `json:"access"`
}

Resource describes a resource dependency of a component. +k8s:deepcopy-gen=true +k8s:openapi-gen=true

func (*Resource) Copy

func (r *Resource) Copy() *Resource

func (*Resource) GetAccess

func (r *Resource) GetAccess() AccessSpec

func (*Resource) GetMeta

func (r *Resource) GetMeta() *ElementMeta

func (*Resource) IsEquivalent

func (r *Resource) IsEquivalent(e ElementMetaAccessor) bool

type ResourceMeta

type ResourceMeta struct {
	ElementMeta `json:",inline"`

	// Type describes the type of the object.
	Type string `json:"type"`

	// Relation describes the relation of the resource to the component.
	// Can be a local or external resource
	Relation metav1.ResourceRelation `json:"relation,omitempty"`

	// SourceRef defines a list of source names.
	// These names reference the sources defines in `component.sources`.
	SourceRef SourceRefs `json:"srcRef,omitempty"`

	// Digest is the optional digest of the referenced resource.
	// +optional
	Digest *metav1.DigestSpec `json:"digest,omitempty"`
}

ResourceMeta describes the meta data of a resource. +k8s:deepcopy-gen=true +k8s:openapi-gen=true

func NewResourceMeta

func NewResourceMeta(name string, typ string, relation metav1.ResourceRelation) *ResourceMeta

func (*ResourceMeta) Copy

func (o *ResourceMeta) Copy() *ResourceMeta

Copy copies a resource meta.

func (*ResourceMeta) GetType

func (o *ResourceMeta) GetType() string

GetType returns the type of the object.

func (*ResourceMeta) HashEqual

func (o *ResourceMeta) HashEqual(r *ResourceMeta) bool

HashEqual indicates whether the digest hash would be equal. Excluded: Labels Adapt together with version specific hash excludes.

func (*ResourceMeta) SetType

func (o *ResourceMeta) SetType(ttype string)

SetType sets the type of the object.

type ResourceSelectionContext

type ResourceSelectionContext = *resourceSelectionContext

ResourceSelectionContext describes the selction context for a resource selector. It contains the resource and provides access to its identity in the context of its component descriptor.

func NewResourceSelectionContext

func NewResourceSelectionContext(index int, rscs Resources) ResourceSelectionContext

type ResourceSelector

type ResourceSelector interface {
	MatchResource(obj ResourceSelectionContext) (bool, error)
}

ResourceSelector defines a selector based on resource attributes.

func AndR

AndR is an AND resource selector.

func ByAccessMethod

func ByAccessMethod(name string) ResourceSelector

ByAccessMethod creates a new selector that matches a resource access method type.

func ByResourceType

func ByResourceType(ttype string) ResourceSelector

ByResourceType creates a new resource selector that selects a resource based on its type.

func ForExecutable

func ForExecutable(name string) ResourceSelector

ForExecutable creates a new selector that matches a resource for an executable.

func NotR

NotR is a negated resource selector.

func OrR

OrR is an OR resource selector.

type ResourceSelectorFunc

type ResourceSelectorFunc func(obj ResourceSelectionContext) (bool, error)

ResourceSelectorFunc defines a function to filter a resource.

func ByRelation

func ByRelation(relation v1.ResourceRelation) ResourceSelectorFunc

ByRelation creates a new resource selector that selects a resource based on its relation type.

func (ResourceSelectorFunc) MatchResource

func (s ResourceSelectorFunc) MatchResource(obj ResourceSelectionContext) (bool, error)

type Resources

type Resources []Resource

Resources describes a set of resource specifications.

func (Resources) Copy

func (r Resources) Copy() Resources

func (Resources) Get

func (Resources) GetArtifact

func (r Resources) GetArtifact(i int) ElementArtifactAccessor

func (Resources) Len

func (r Resources) Len() int

type SchemaVersion

type SchemaVersion string

SchemaVersion enforces a dedicated schema version .

func (SchemaVersion) ApplyEncodeOption

func (o SchemaVersion) ApplyEncodeOption(options *EncodeOptions)

ApplyEncodeOption applies the configured schema version.

type Scheme

type Scheme interface {
	GetVersion() string

	Decode(data []byte, opts *DecodeOptions) (ComponentDescriptorVersion, error)
	ConvertFrom(desc *ComponentDescriptor) (ComponentDescriptorVersion, error)
	ConvertTo(ComponentDescriptorVersion) (*ComponentDescriptor, error)
}

type Schemes

type Schemes map[string]Scheme

func (Schemes) Names

func (v Schemes) Names() []string

func (Schemes) Register

func (v Schemes) Register(scheme Scheme)

type Source

type Source struct {
	SourceMeta `json:",inline"`
	Access     AccessSpec `json:"access"`
}

Source is the definition of a component's source. +k8s:deepcopy-gen=true +k8s:openapi-gen=true

func (*Source) Copy

func (s *Source) Copy() *Source

func (*Source) GetAccess

func (s *Source) GetAccess() AccessSpec

func (*Source) GetMeta

func (s *Source) GetMeta() *ElementMeta

func (*Source) IsEquivalent

func (r *Source) IsEquivalent(e ElementMetaAccessor) bool

type SourceMeta

type SourceMeta struct {
	ElementMeta
	// Type describes the type of the object.
	Type string `json:"type"`
}

SourceMeta is the definition of the meta data of a source. +k8s:deepcopy-gen=true +k8s:openapi-gen=true

func (*SourceMeta) Copy

func (o *SourceMeta) Copy() *SourceMeta

Copy copies a source meta.

func (*SourceMeta) GetType

func (o *SourceMeta) GetType() string

GetType returns the type of the object.

func (*SourceMeta) SetType

func (o *SourceMeta) SetType(ttype string)

SetType sets the type of the object.

type SourceRef

type SourceRef struct {
	// IdentitySelector defines the identity that is used to match a source.
	IdentitySelector metav1.StringMap `json:"identitySelector,omitempty"`
	// Labels defines an optional set of additional labels
	// describing the object.
	// +optional
	Labels metav1.Labels `json:"labels,omitempty"`
}

SourceRef defines a reference to a source +k8s:deepcopy-gen=true +k8s:openapi-gen=true

func (*SourceRef) Copy

func (r *SourceRef) Copy() *SourceRef

Copy copy a source ref.

type SourceRefs

type SourceRefs []SourceRef

func (SourceRefs) Copy

func (r SourceRefs) Copy() SourceRefs

Copy copies a list of source refs.

type Sources

type Sources []Source

Sources describes a set of source specifications.

func (Sources) Copy

func (s Sources) Copy() Sources

func (Sources) Get

func (s Sources) Get(i int) ElementMetaAccessor

func (Sources) GetArtifact

func (s Sources) GetArtifact(i int) ElementArtifactAccessor

func (Sources) Len

func (s Sources) Len() int

type StrictDecoder

type StrictDecoder interface {
	DecodeStrict(data []byte, obj interface{}) error
}

StrictDecoder defines a decoder for an object.

type StrictDecoderFunc

type StrictDecoderFunc func(data []byte, obj interface{}) error

StrictDecoderFunc is a simple function that implements the StrictDecoder interface.

func (StrictDecoderFunc) DecodeStrict

func (e StrictDecoderFunc) DecodeStrict(data []byte, obj interface{}) error

StrictDecode is the Decode implementation of the Decoder interface.

type StrictMode

type StrictMode bool

StrictMode enables or disables strict mode parsing.

func (StrictMode) ApplyDecodeOption

func (s StrictMode) ApplyDecodeOption(options *DecodeOptions)

ApplyDecodeOption applies the configured strict mode.

type VersionAccessor

type VersionAccessor interface {
	// GetVersion returns the version of the object.
	GetVersion() string
	// SetVersion sets the version of the object.
	SetVersion(version string)
}

VersionAccessor describes a accessor for a versioned object.

Directories

Path Synopsis
meta
v1
jsonv1
Package jsonv1 provides a normalization which uses schema specific normalizations.
Package jsonv1 provides a normalization which uses schema specific normalizations.
jsonv2
Package jsonv2 provides a normalization which is completely based on the abstract (internal) version of the component descriptor and is therefore agnostic of the final serialization format.
Package jsonv2 provides a normalization which is completely based on the abstract (internal) version of the component descriptor and is therefore agnostic of the final serialization format.
ocm.gardener.cloud/v3alpha1/jsonscheme
Package jsonscheme generated by go-bindata.
Package jsonscheme generated by go-bindata.
ocm.software/v3alpha1/jsonscheme
Package jsonscheme generated by go-bindata.// sources: ../../../../../../../../resources/component-descriptor-ocm-v3-schema.yaml
Package jsonscheme generated by go-bindata.// sources: ../../../../../../../../resources/component-descriptor-ocm-v3-schema.yaml
v2
v2/jsonscheme
Package jsonscheme generated by go-bindata.// sources: ../../../../../../../resources/component-descriptor-v2-schema.yaml
Package jsonscheme generated by go-bindata.// sources: ../../../../../../../resources/component-descriptor-v2-schema.yaml

Jump to

Keyboard shortcuts

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