v1

package
v0.0.6 Latest Latest
Warning

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

Go to latest
Published: Apr 30, 2024 License: MIT Imports: 4 Imported by: 0

Documentation

Overview

+kubebuilder:object:generate=true +groupName=eno.azure.io

Index

Constants

This section is empty.

Variables

View Source
var (
	SchemeGroupVersion = schema.GroupVersion{Group: "eno.azure.io", Version: "v1"}
	SchemeBuilder      = &scheme.Builder{GroupVersion: SchemeGroupVersion}
)

Functions

This section is empty.

Types

type Binding added in v0.0.2

type Binding struct {
	// Key determines which ref this binding binds to. Opaque.
	//
	// +required
	Key string `json:"key"`

	// +required
	Resource ResourceBinding `json:"resource"`
}

Bindings map a specific Kubernetes resource to a ref exposed by a synthesizer. Compositions use bindings to populate inputs supported by their synthesizer.

func (*Binding) DeepCopy added in v0.0.2

func (in *Binding) DeepCopy() *Binding

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Binding.

func (*Binding) DeepCopyInto added in v0.0.2

func (in *Binding) DeepCopyInto(out *Binding)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Composition

type Composition struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   CompositionSpec   `json:"spec,omitempty"`
	Status CompositionStatus `json:"status,omitempty"`
}

Compositions represent a collection of related, synthesized resources.

For example: when managing Postgres with Eno, one would create a composition per distinct instance of Postgres, all referencing a single synthesizer resource.

Changing the spec of a composition will result in re-synthesis.

Eno guarantees that a composition's resources will be deleted before the composition finishes deletion by holding a finalizer on it. To delete the composition while leaving the resources in place, set the annotation `eno.azure.io/deletion-strategy` to "orphan".

+kubebuilder:object:root=true +kubebuilder:subresource:status +kubebuilder:printcolumn:name="Synthesizer",type=string,JSONPath=`.spec.synthesizer.name`

func (*Composition) DeepCopy

func (in *Composition) DeepCopy() *Composition

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Composition.

func (*Composition) DeepCopyInto

func (in *Composition) DeepCopyInto(out *Composition)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Composition) DeepCopyObject

func (in *Composition) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type CompositionList

type CompositionList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []Composition `json:"items"`
}

+kubebuilder:object:root=true

func (*CompositionList) DeepCopy

func (in *CompositionList) DeepCopy() *CompositionList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CompositionList.

func (*CompositionList) DeepCopyInto

func (in *CompositionList) DeepCopyInto(out *CompositionList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*CompositionList) DeepCopyObject

func (in *CompositionList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type CompositionSpec

type CompositionSpec struct {
	// Compositions are synthesized by a Synthesizer, referenced by name.
	Synthesizer SynthesizerRef `json:"synthesizer,omitempty"`

	// Synthesizers can accept Kubernetes resources as inputs.
	// Bindings allow compositions to specify which resource to use for a particular input "reference".
	// Declaring extra bindings not (yet) supported by the synthesizer is valid.
	Bindings []Binding `json:"bindings,omitempty"`
}

func (*CompositionSpec) DeepCopy

func (in *CompositionSpec) DeepCopy() *CompositionSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CompositionSpec.

func (*CompositionSpec) DeepCopyInto

func (in *CompositionSpec) DeepCopyInto(out *CompositionSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type CompositionStatus

type CompositionStatus struct {
	CurrentSynthesis  *Synthesis `json:"currentSynthesis,omitempty"`
	PreviousSynthesis *Synthesis `json:"previousSynthesis,omitempty"`
}

func (*CompositionStatus) DeepCopy

func (in *CompositionStatus) DeepCopy() *CompositionStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CompositionStatus.

func (*CompositionStatus) DeepCopyInto

func (in *CompositionStatus) DeepCopyInto(out *CompositionStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Input added in v0.0.2

type Input struct {
	metav1.TypeMeta `json:",inline"`
	// +required
	Key string `json:"key"`
	// +required
	Resource InputResource `json:"resource"`
}

Input is passed to Synthesis Pods at runtime and represents a bound ref.

func NewInput added in v0.0.2

func NewInput(key string, res InputResource) Input

NewInput is used to create an `Input` with TypeMeta populated. This is required because `Input` is not a CRD, but we still want proper encoding/decoding via the Unstructured codec.

func (*Input) DeepCopy added in v0.0.2

func (in *Input) DeepCopy() *Input

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Input.

func (*Input) DeepCopyInto added in v0.0.2

func (in *Input) DeepCopyInto(out *Input)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type InputResource added in v0.0.2

type InputResource struct {
	// +required
	Name      string `json:"name"`
	Namespace string `json:"namespace,omitempty"`
	// +required
	Kind  string `json:"kind"`
	Group string `json:"group"`
}

func (*InputResource) DeepCopy added in v0.0.2

func (in *InputResource) DeepCopy() *InputResource

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InputResource.

func (*InputResource) DeepCopyInto added in v0.0.2

func (in *InputResource) DeepCopyInto(out *InputResource)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Manifest

type Manifest struct {
	// +required
	Manifest string `json:"manifest,omitempty"`

	// Deleted is true when this manifest represents a "tombstone" - a resource that should no longer exist.
	Deleted bool `json:"deleted,omitempty"`
}

func (*Manifest) DeepCopy

func (in *Manifest) DeepCopy() *Manifest

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Manifest.

func (*Manifest) DeepCopyInto

func (in *Manifest) DeepCopyInto(out *Manifest)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Ref added in v0.0.2

type Ref struct {
	// Key corresponds to bindings to this ref.
	//
	// +required
	Key string `json:"key"`

	// +required
	Resource ResourceRef `json:"resource"`

	// Allows control over re-synthesis when inputs changed.
	// A non-deferred input will trigger a synthesis immediately, whereas a
	// deferred input will respect the cooldown period.
	Defer bool `json:"defer,omitempty"`
}

Ref defines a synthesizer input. Inputs are typed using the Kubernetes API - they are just normal Kubernetes resources. The consumer (synthesizer) specifies the resource's kind/group, while the producer (composition) specifies a specific resource name/namespace.

Compositions that use the synthesizer will be re-synthesized when the resource bound to this ref changes. Re-synthesis happens automatically while honoring the globally configured cooldown period.

func (*Ref) DeepCopy added in v0.0.2

func (in *Ref) DeepCopy() *Ref

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Ref.

func (*Ref) DeepCopyInto added in v0.0.2

func (in *Ref) DeepCopyInto(out *Ref)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ResourceBinding added in v0.0.2

type ResourceBinding struct {
	// +required
	Name      string `json:"name"`
	Namespace string `json:"namespace,omitempty"`
}

A reference to a specific resource name and optionally namespace.

func (*ResourceBinding) DeepCopy added in v0.0.2

func (in *ResourceBinding) DeepCopy() *ResourceBinding

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceBinding.

func (*ResourceBinding) DeepCopyInto added in v0.0.2

func (in *ResourceBinding) DeepCopyInto(out *ResourceBinding)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ResourceRef added in v0.0.2

type ResourceRef struct {
	// +required
	Kind  string `json:"kind"`
	Group string `json:"group,omitempty"`
}

A reference to a resource kind/group.

func (*ResourceRef) DeepCopy added in v0.0.2

func (in *ResourceRef) DeepCopy() *ResourceRef

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceRef.

func (*ResourceRef) DeepCopyInto added in v0.0.2

func (in *ResourceRef) DeepCopyInto(out *ResourceRef)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ResourceSlice

type ResourceSlice struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   ResourceSliceSpec   `json:"spec,omitempty"`
	Status ResourceSliceStatus `json:"status,omitempty"`
}

+kubebuilder:object:root=true +kubebuilder:subresource:status

func (*ResourceSlice) DeepCopy

func (in *ResourceSlice) DeepCopy() *ResourceSlice

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceSlice.

func (*ResourceSlice) DeepCopyInto

func (in *ResourceSlice) DeepCopyInto(out *ResourceSlice)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ResourceSlice) DeepCopyObject

func (in *ResourceSlice) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type ResourceSliceList

type ResourceSliceList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []ResourceSlice `json:"items"`
}

+kubebuilder:object:root=true

func (*ResourceSliceList) DeepCopy

func (in *ResourceSliceList) DeepCopy() *ResourceSliceList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceSliceList.

func (*ResourceSliceList) DeepCopyInto

func (in *ResourceSliceList) DeepCopyInto(out *ResourceSliceList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ResourceSliceList) DeepCopyObject

func (in *ResourceSliceList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type ResourceSliceRef

type ResourceSliceRef struct {
	Name string `json:"name,omitempty"`
}

func (*ResourceSliceRef) DeepCopy

func (in *ResourceSliceRef) DeepCopy() *ResourceSliceRef

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceSliceRef.

func (*ResourceSliceRef) DeepCopyInto

func (in *ResourceSliceRef) DeepCopyInto(out *ResourceSliceRef)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ResourceSliceSpec

type ResourceSliceSpec struct {
	CompositionGeneration int64      `json:"compositionGeneration,omitempty"`
	Resources             []Manifest `json:"resources,omitempty"`
}

func (*ResourceSliceSpec) DeepCopy

func (in *ResourceSliceSpec) DeepCopy() *ResourceSliceSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceSliceSpec.

func (*ResourceSliceSpec) DeepCopyInto

func (in *ResourceSliceSpec) DeepCopyInto(out *ResourceSliceSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ResourceSliceStatus

type ResourceSliceStatus struct {
	// Elements of resources correspond in index to those in spec.resources at the observed generation.
	Resources []ResourceState `json:"resources,omitempty"`
}

func (*ResourceSliceStatus) DeepCopy

func (in *ResourceSliceStatus) DeepCopy() *ResourceSliceStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceSliceStatus.

func (*ResourceSliceStatus) DeepCopyInto

func (in *ResourceSliceStatus) DeepCopyInto(out *ResourceSliceStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ResourceState

type ResourceState struct {
	Reconciled bool         `json:"reconciled,omitempty"`
	Ready      *metav1.Time `json:"ready,omitempty"`
	Deleted    bool         `json:"deleted,omitempty"`
}

func (*ResourceState) DeepCopy

func (in *ResourceState) DeepCopy() *ResourceState

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceState.

func (*ResourceState) DeepCopyInto

func (in *ResourceState) DeepCopyInto(out *ResourceState)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Symphony added in v0.0.4

type Symphony struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   SymphonySpec   `json:"spec,omitempty"`
	Status SymphonyStatus `json:"status,omitempty"`
}

Symphony is a set of variations on a composition. Useful for creating several compositions that use a common set of bindings but different synthesizers.

This pattern is highly opinionated for use-cases in which a single "unit of management" includes multiple distinct components. For example: deploying many instances of an application that is comprised of several components (Wordpress, etc.).

+kubebuilder:object:root=true +kubebuilder:subresource:status

func (*Symphony) DeepCopy added in v0.0.4

func (in *Symphony) DeepCopy() *Symphony

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Symphony.

func (*Symphony) DeepCopyInto added in v0.0.4

func (in *Symphony) DeepCopyInto(out *Symphony)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Symphony) DeepCopyObject added in v0.0.4

func (in *Symphony) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type SymphonyList added in v0.0.4

type SymphonyList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []Symphony `json:"items"`
}

+kubebuilder:object:root=true

func (*SymphonyList) DeepCopy added in v0.0.4

func (in *SymphonyList) DeepCopy() *SymphonyList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SymphonyList.

func (*SymphonyList) DeepCopyInto added in v0.0.4

func (in *SymphonyList) DeepCopyInto(out *SymphonyList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*SymphonyList) DeepCopyObject added in v0.0.4

func (in *SymphonyList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type SymphonySpec added in v0.0.4

type SymphonySpec struct {
	// Each variation will result in the creation of a composition.
	// Synthesizer refs must be unique across variations.
	// Removing a variation will cause the composition to be deleted!
	Variations []Variation `json:"variations,omitempty"`

	// Bindings are inherited from all compositions managed by this symphony.
	Bindings []Binding `json:"bindings,omitempty"`
}

func (*SymphonySpec) DeepCopy added in v0.0.4

func (in *SymphonySpec) DeepCopy() *SymphonySpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SymphonySpec.

func (*SymphonySpec) DeepCopyInto added in v0.0.4

func (in *SymphonySpec) DeepCopyInto(out *SymphonySpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SymphonyStatus added in v0.0.4

type SymphonyStatus struct {
	ObservedGeneration int64            `json:"observedGeneration,omitempty"`
	Synthesized        *metav1.Time     `json:"synthesized,omitempty"`
	Reconciled         *metav1.Time     `json:"reconciled,omitempty"`
	Ready              *metav1.Time     `json:"ready,omitempty"`
	Synthesizers       []SynthesizerRef `json:"synthesizers,omitempty"`
}

func (*SymphonyStatus) DeepCopy added in v0.0.4

func (in *SymphonyStatus) DeepCopy() *SymphonyStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SymphonyStatus.

func (*SymphonyStatus) DeepCopyInto added in v0.0.4

func (in *SymphonyStatus) DeepCopyInto(out *SymphonyStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Synthesis

type Synthesis struct {
	// A random UUID scoped to this particular synthesis operation.
	// Used internally for strict ordering semantics.
	UUID string `json:"uuid,omitempty"`

	// The value of the composition's metadata.generation at the time the synthesis began.
	// This is a min i.e. a newer composition may have been used.
	ObservedCompositionGeneration int64 `json:"observedCompositionGeneration,omitempty"`

	// The value of the synthesizer's metadata.generation at the time the synthesis began.
	// This is a min i.e. a newer composition may have been used.
	ObservedSynthesizerGeneration int64 `json:"observedSynthesizerGeneration,omitempty"`

	// Time at which the most recent synthesizer pod was created.
	PodCreation *metav1.Time `json:"podCreation,omitempty"`

	// Time at which the synthesis completed i.e. resourceSlices was written
	Synthesized *metav1.Time `json:"synthesized,omitempty"`

	// Time at which the synthesis's resources were reconciled into real Kubernetes resources.
	Reconciled *metav1.Time `json:"reconciled,omitempty"`

	// Time at which the synthesis's reconciled resources became ready.
	Ready *metav1.Time `json:"ready,omitempty"`

	// Counter used internally to calculate back off when retrying failed syntheses.
	Attempts int `json:"attempts,omitempty"`

	// References to every resource slice that contains the resources comprising this synthesis.
	// Immutable.
	ResourceSlices []*ResourceSliceRef `json:"resourceSlices,omitempty"`
}

A synthesis is the result of synthesizing a composition. In other words: it's a collection of resources returned from a synthesizer.

func (*Synthesis) DeepCopy

func (in *Synthesis) DeepCopy() *Synthesis

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Synthesis.

func (*Synthesis) DeepCopyInto

func (in *Synthesis) DeepCopyInto(out *Synthesis)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Synthesizer

type Synthesizer struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   SynthesizerSpec   `json:"spec,omitempty"`
	Status SynthesizerStatus `json:"status,omitempty"`
}

Synthesizers are any process that can run in a Kubernetes container that implements the [KRM Functions Specification](https://github.com/kubernetes-sigs/kustomize/blob/master/cmd/config/docs/api-conventions/functions-spec.md).

Synthesizer processes are given some metadata about the composition they are synthesizing, and are expected to return a set of Kubernetes resources. Essentially they generate the desired state for a set of Kubernetes resources.

Eno honors a handful of annotations on resources emitted from synthesizers. They are consumed by Eno i.e. are not passed to the "real", reconciled resource. - eno.azure.io/reconcile-interval: How often to correct for any configuration drift. Accepts durations parsable by time.ParseDuration. - eno.azure.io/disable-updates: Ensure that the resource exists but never update it. Useful for populating resources you expect another user/process to mutate. - eno.azure.io/readiness: CEL expression used to assert that the resource is ready. More details below. - eno.azure.io/readiness-*: Same as above, allows for multiple readiness checks. All checks must pass for the resource to be considered ready.

Readiness expressions can return either bool or a Kubernetes condition struct. If a condition is returned it will be used as the resource's readiness time, otherwise the controller will use wallclock time at the first moment it noticed the truthy value. When possible, match on a timestamp to preserve accuracy.

Example matching on a condition: ```cel

self.status.conditions.filter(item, item.type == 'Test' && item.status == 'False')

```

Example matching on a boolean: ```cel

self.status.foo == 'bar'

```

A special resource can be returned from synthesizers: `eno.azure.io/v1.Patch`. Example:

```yaml

 # - Nothing will happen if the resource doesn't exist
 # - Patches are only applied when they would result in a change
 # - Deleting the Patch will not delete the referenced resource
	apiVersion: eno.azure.io/v1
	kind: Patch
	metadata:
		name: resource-to-be-patched
		namespace: default
	patch:
		apiVersion: v1
		kind: ConfigMap
		ops: # standard jsonpatch operations
		  - { "op": "add", "path": "/data/hello", "value": "world" }
		  - { "op": "add", "path": "/metadata/deletionTimestamp", "value": "anything" } # setting any deletion timestamp will delete the resource

```

+kubebuilder:object:root=true +kubebuilder:subresource:status +kubebuilder:resource:scope=Cluster +kubebuilder:printcolumn:name="Image",type=string,JSONPath=`.spec.image`

func (*Synthesizer) DeepCopy

func (in *Synthesizer) DeepCopy() *Synthesizer

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Synthesizer.

func (*Synthesizer) DeepCopyInto

func (in *Synthesizer) DeepCopyInto(out *Synthesizer)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Synthesizer) DeepCopyObject

func (in *Synthesizer) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type SynthesizerList

type SynthesizerList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []Synthesizer `json:"items"`
}

+kubebuilder:object:root=true

func (*SynthesizerList) DeepCopy

func (in *SynthesizerList) DeepCopy() *SynthesizerList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SynthesizerList.

func (*SynthesizerList) DeepCopyInto

func (in *SynthesizerList) DeepCopyInto(out *SynthesizerList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*SynthesizerList) DeepCopyObject

func (in *SynthesizerList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type SynthesizerRef

type SynthesizerRef struct {
	// +required
	Name string `json:"name,omitempty"`
}

func (*SynthesizerRef) DeepCopy

func (in *SynthesizerRef) DeepCopy() *SynthesizerRef

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SynthesizerRef.

func (*SynthesizerRef) DeepCopyInto

func (in *SynthesizerRef) DeepCopyInto(out *SynthesizerRef)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SynthesizerSpec

type SynthesizerSpec struct {
	// Copied opaquely into the container's image property.
	//
	// +required
	Image string `json:"image,omitempty"`

	// Copied opaquely into the container's command property.
	//
	// +kubebuilder:default={"synthesize"}
	Command []string `json:"command,omitempty"`

	// Timeout for each execution of the synthesizer command.
	//
	// +kubebuilder:default="10s"
	ExecTimeout *metav1.Duration `json:"execTimeout,omitempty"`

	// Pods are recreated after they've existed for at least the pod timeout interval.
	// This helps close the loop in failure modes where a pod may be considered ready but not actually able to run.
	//
	// +kubebuilder:default="2m"
	PodTimeout *metav1.Duration `json:"podTimeout,omitempty"`

	// Synthesized resources can optionally be reconciled at a given interval.
	// Per-resource jitter will be applied to avoid spikes in request rate.
	ReconcileInterval *metav1.Duration `json:"reconcileInterval,omitempty"`

	// Refs define the Synthesizer's input schema without binding it to specific
	// resources.
	Refs []Ref `json:"refs,omitempty"`
}

+kubebuilder:validation:XValidation:rule="duration(self.execTimeout) <= duration(self.podTimeout)",message="podTimeout must be greater than execTimeout"

func (*SynthesizerSpec) DeepCopy

func (in *SynthesizerSpec) DeepCopy() *SynthesizerSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SynthesizerSpec.

func (*SynthesizerSpec) DeepCopyInto

func (in *SynthesizerSpec) DeepCopyInto(out *SynthesizerSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SynthesizerStatus

type SynthesizerStatus struct {
}

func (*SynthesizerStatus) DeepCopy

func (in *SynthesizerStatus) DeepCopy() *SynthesizerStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SynthesizerStatus.

func (*SynthesizerStatus) DeepCopyInto

func (in *SynthesizerStatus) DeepCopyInto(out *SynthesizerStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Variation added in v0.0.4

type Variation struct {
	// Used to populate the composition's metadata.labels.
	Labels map[string]string `json:"labels,omitempty"`

	// Used to populate the composition's spec.synthesizer.
	Synthesizer SynthesizerRef `json:"synthesizer,omitempty"`

	// Variation-specific bindings get merged with Symphony bindings and take
	// precedence over them.
	Bindings []Binding `json:"bindings,omitempty"`
}

func (*Variation) DeepCopy added in v0.0.4

func (in *Variation) DeepCopy() *Variation

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Variation.

func (*Variation) DeepCopyInto added in v0.0.4

func (in *Variation) DeepCopyInto(out *Variation)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

Jump to

Keyboard shortcuts

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