Documentation ¶
Overview ¶
+kubebuilder:object:generate=true +groupName=eno.azure.io
Index ¶
- Variables
- type Binding
- type Composition
- type CompositionList
- type CompositionSpec
- type CompositionStatus
- type Input
- type InputResource
- type Manifest
- type Ref
- type ResourceBinding
- type ResourceRef
- type ResourceSlice
- type ResourceSliceList
- type ResourceSliceRef
- type ResourceSliceSpec
- type ResourceSliceStatus
- type ResourceState
- type Symphony
- type SymphonyList
- type SymphonySpec
- type SymphonyStatus
- type Synthesis
- type Synthesizer
- type SynthesizerList
- type SynthesizerRef
- type SynthesizerSpec
- type SynthesizerStatus
- type Variation
Constants ¶
This section is empty.
Variables ¶
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
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Binding.
func (*Binding) DeepCopyInto ¶ added in v0.0.2
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
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Input.
func (*Input) DeepCopyInto ¶ added in v0.0.2
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Manifest.
func (*Manifest) DeepCopyInto ¶
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
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Ref.
func (*Ref) DeepCopyInto ¶ added in v0.0.2
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"` SynthesisUUID string `json:"synthesisUUID,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
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Symphony.
func (*Symphony) DeepCopyInto ¶ added in v0.0.4
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
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Synthesis.
func (*Synthesis) DeepCopyInto ¶
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. - eno.azure.io/readiness-group: (int, default: 0) Eno will not create or update this resource until all resoruces in lower-valued groups have become 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
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Variation.
func (*Variation) DeepCopyInto ¶ added in v0.0.4
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.