Documentation
¶
Overview ¶
+kubebuilder:object:generate=true +groupName=eno.azure.io
Index ¶
- Variables
- type Composition
- type CompositionList
- type CompositionSpec
- type CompositionStatus
- type InputRef
- type Manifest
- type ResourceInputRef
- type ResourceSlice
- type ResourceSliceList
- type ResourceSliceRef
- type ResourceSliceSpec
- type ResourceSliceStatus
- type ResourceState
- type Synthesis
- type Synthesizer
- type SynthesizerList
- type SynthesizerRef
- type SynthesizerSpec
- type SynthesizerStatus
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 Composition ¶
type Composition struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec CompositionSpec `json:"spec,omitempty"`
Status CompositionStatus `json:"status,omitempty"`
}
+kubebuilder:object:root=true +kubebuilder:subresource:status
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.
Synthesizer SynthesizerRef `json:"synthesizer,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"`
// Inputs are given to the Synthesizer during synthesis.
Inputs []InputRef `json:"inputs,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 {
CurrentState *Synthesis `json:"currentState,omitempty"`
PreviousState *Synthesis `json:"previousState,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 InputRef ¶
type InputRef struct {
// +required
Name string `json:"name,omitempty"`
Resource *ResourceInputRef `json:"resource,omitempty"`
}
func (*InputRef) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InputRef.
func (*InputRef) DeepCopyInto ¶
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"`
ReconcileInterval *metav1.Duration `json:"reconcileInterval,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 ResourceInputRef ¶
type ResourceInputRef struct {
// +required
APIVersion string `json:"apiVersion,omitempty"`
// +required
Kind string `json:"kind,omitempty"`
// +required
Namespace string `json:"namespace,omitempty"`
// +required
Name string `json:"name,omitempty"`
}
func (*ResourceInputRef) DeepCopy ¶
func (in *ResourceInputRef) DeepCopy() *ResourceInputRef
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceInputRef.
func (*ResourceInputRef) DeepCopyInto ¶
func (in *ResourceInputRef) DeepCopyInto(out *ResourceInputRef)
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"`
}
+kubebuilder:validation:XValidation:rule="self == oldSelf",message="Value is immutable"
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 {
// True when the resource has been sync'd to the specified manifest.
// This property latches: it will remain true if it has ever been true in the life of this resource.
Reconciled bool `json:"reconciled,omitempty"`
// nil if Eno is unable to determine the readiness of this resource.
// Otherwise it is true when the resource is ready, false otherwise.
// Like Reconciled, it latches and will never transition from true->false.
Ready *bool `json:"ready,omitempty"`
// Deleted is true when the resource has been cleaned up, either because spec.deleted == true or the parent composition has been deleted.
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 Synthesis ¶
type Synthesis struct {
ObservedCompositionGeneration int64 `json:"observedCompositionGeneration,omitempty"`
ObservedSynthesizerGeneration int64 `json:"observedSynthesizerGeneration,omitempty"`
PodCreation *metav1.Time `json:"podCreation,omitempty"`
ResourceSlices []*ResourceSliceRef `json:"resourceSlices,omitempty"`
Synthesized bool `json:"synthesized,omitempty"`
Ready bool `json:"ready,omitempty"`
Synced bool `json:"synced,omitempty"`
}
Synthesis represents a Synthesizer's specific synthesis of a given Composition.
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"`
}
+kubebuilder:object:root=true +kubebuilder:subresource:status +kubebuilder:resource:scope=Cluster
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"`
// Compositions will be resynthesized if their status.currentState.observedSynthesizerGeneration is < the referenced synthesizer's generation.
// Used to slowly roll out synthesizer updates across compositions.
MinGeneration int64 `json:"minGeneration,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 {
// +required
Image string `json:"image,omitempty"`
// +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"`
// Any changes to the synthesizer will be propagated to compositions that reference it.
// This property controls how long Eno will wait between each composition update.
//
// +kubebuilder:default="30s"
RolloutCooldown metav1.Duration `json:"rolloutCooldown,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 {
// The metadata.generation of this resource at the oldest version currently used by any Generations.
// This will equal the current generation when slow rollout of an update to the Generations is complete.
CurrentGeneration int64 `json:"currentGeneration,omitempty"`
// LastRolloutTime is the timestamp of the last pod creation caused by a change to this resource.
// Should not be updated due to Composotion changes.
// Used to calculate rollout cooldown period.
LastRolloutTime *metav1.Time `json:"lastRolloutTime,omitempty"`
}
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.