v1

package
v0.2.8 Latest Latest
Warning

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

Go to latest
Published: Apr 28, 2026 License: MIT Imports: 8 Imported by: 0

Documentation

Overview

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

Index

Constants

View Source
const (
	OperationIdKey                    string = "operationID"
	OperationOrigionKey               string = "operationOrigin"
	CircularDependencyReason          string = "CircularDependency"
	WaitingOnDependentsReason         string = "WaitingOnDependents"
	WaitingOnDependenciesReason       string = "WaitingOnDependencies"
	WaitingOnDependencyNotFoundReason string = "DependencyNotFound"
	WaitingOnDependencyNotReadyReason string = "DependencyNotReady"
	WaitingOnDependentsDeletedReason  string = "DependentNotDeleted"
)

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.
	Key string `json:"key"`

	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 BlockedByRef added in v0.2.7

type BlockedByRef struct {
	Name      string `json:"name,omitempty"`
	Namespace string `json:"namespace,omitempty"`
	Reason    string `json:"reason,omitempty"` // "NotFound", "NotDeleted", "NotReady"
}

func (*BlockedByRef) DeepCopy added in v0.2.7

func (in *BlockedByRef) DeepCopy() *BlockedByRef

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

func (*BlockedByRef) DeepCopyInto added in v0.2.7

func (in *BlockedByRef) DeepCopyInto(out *BlockedByRef)

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.

+kubebuilder:object:root=true +kubebuilder:subresource:status +kubebuilder:printcolumn:name="Synthesizer",type=string,JSONPath=`.spec.synthesizer.name` +kubebuilder:printcolumn:name="Age",type=date,JSONPath=`.status.currentSynthesis.synthesized` +kubebuilder:printcolumn:name="Status",type=string,JSONPath=`.status.simplified.status` +kubebuilder:printcolumn:name="Error",type=string,JSONPath=`.status.simplified.error`

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.

func (*Composition) EnableIgnoreSideEffects added in v0.0.47

func (c *Composition) EnableIgnoreSideEffects()

func (*Composition) ForceResynthesis added in v0.0.47

func (c *Composition) ForceResynthesis()

func (*Composition) GetAzureOperationID added in v0.2.1

func (c *Composition) GetAzureOperationID() string

func (*Composition) GetAzureOperationOrigin added in v0.2.1

func (c *Composition) GetAzureOperationOrigin() string

func (*Composition) ShouldForceResynthesis added in v0.0.47

func (c *Composition) ShouldForceResynthesis() bool

func (*Composition) ShouldIgnoreSideEffects added in v0.0.31

func (c *Composition) ShouldIgnoreSideEffects() bool

func (*Composition) ShouldOrphanResources added in v0.0.48

func (c *Composition) ShouldOrphanResources() bool

func (*Composition) Synthesizing added in v0.0.47

func (c *Composition) Synthesizing() bool

type CompositionDependency added in v0.2.7

type CompositionDependency struct {
	// Name of the dependency composition
	Name string `json:"name,omitempty"`

	//Namespace of the dependency composition
	Namespace string `json:"namespace,omitempty"`
}

func (*CompositionDependency) DeepCopy added in v0.2.7

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

func (*CompositionDependency) DeepCopyInto added in v0.2.7

func (in *CompositionDependency) DeepCopyInto(out *CompositionDependency)

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

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"`

	// SynthesisEnv
	// A set of environment variables that will be made available inside the synthesis Pod.
	// +kubebuilder:validation:MaxItems:=500
	SynthesisEnv []EnvVar `json:"synthesisEnv,omitempty"`

	// Declare dependencies on other compositions by name and namespace. A composition can have at most 50 dependencies
	// Compositions will not be scheduled for synthesis until all required
	// dependencies have CurrentSynthesis.Ready != nil
	// Deletion is blocked until all non-optional dependents are fully removed.
	// +kubebuilder:validation:MaxItems:=50
	DependsOn []CompositionDependency `json:"dependsOn,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 {
	Simplified        *SimplifiedStatus `json:"simplified,omitempty"`
	InFlightSynthesis *Synthesis        `json:"inFlightSynthesis,omitempty"`
	CurrentSynthesis  *Synthesis        `json:"currentSynthesis,omitempty"`
	PreviousSynthesis *Synthesis        `json:"previousSynthesis,omitempty"`
	InputRevisions    []InputRevisions  `json:"inputRevisions,omitempty"`

	// Set when composition is blocked by dependency constraints. Cleared when unblock
	DependencyStatus *DependencyStatus `json:"dependencyStatus,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.

func (*CompositionStatus) GetCurrentSynthesisUUID added in v0.0.31

func (s *CompositionStatus) GetCurrentSynthesisUUID() string

type DependencyStatus added in v0.2.7

type DependencyStatus struct {
	// Blocked is true when the composition cannot proceed due to dependencies/dependents
	Blocked bool `json:"blocked,omitempty"`

	// Reason "WaitingOnDependencies", "WaitingOnDependents"(Deletion), "CircularDependencies"
	Reason string `json:"reason,omitempty"`

	//BlockedBy: References to the compositions causing the block
	BlockedBy []BlockedByRef `json:"blockedBy,omitempty"`
}

DependencyStatus holds the information regarding the composition's dependencies.

func (*DependencyStatus) DeepCopy added in v0.2.7

func (in *DependencyStatus) DeepCopy() *DependencyStatus

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

func (*DependencyStatus) DeepCopyInto added in v0.2.7

func (in *DependencyStatus) DeepCopyInto(out *DependencyStatus)

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

type EnvVar added in v0.0.31

type EnvVar struct {
	// +required
	// +kubebuilder:validation:MaxLength:=100
	Name  string `json:"name"`
	Value string `json:"value,omitempty"`
}

func (*EnvVar) DeepCopy added in v0.0.31

func (in *EnvVar) DeepCopy() *EnvVar

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

func (*EnvVar) DeepCopyInto added in v0.0.31

func (in *EnvVar) DeepCopyInto(out *EnvVar)

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"`
	Key             string        `json:"key"`
	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 {
	Name      string `json:"name"`
	Namespace string `json:"namespace,omitempty"`
	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 InputRevisions added in v0.0.10

type InputRevisions struct {
	Key                   string `json:"key,omitempty"`
	ResourceVersion       string `json:"resourceVersion,omitempty"`
	Revision              *int   `json:"revision,omitempty"`
	SynthesizerGeneration *int64 `json:"synthesizerGeneration,omitempty"`
	CompositionGeneration *int64 `json:"compositionGeneration,omitempty"`
	IgnoreSideEffects     *bool  `json:"ignoreSideEffects,omitempty"`
}

func NewInputRevisions added in v0.1.31

func NewInputRevisions(obj client.Object, refKey string) *InputRevisions

func (*InputRevisions) DeepCopy added in v0.0.10

func (in *InputRevisions) DeepCopy() *InputRevisions

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

func (*InputRevisions) DeepCopyInto added in v0.0.10

func (in *InputRevisions) DeepCopyInto(out *InputRevisions)

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

func (*InputRevisions) Less added in v0.0.49

func (i *InputRevisions) Less(b InputRevisions) bool

Less reports whetehr i should be ordered before b both revisiions must share the same key. We can not compare across differnt keys Below is the ordering rules 1. If both sides have an explicit Revision, compare by Revision 2. If ResourceVersions are equal, check if IgnoreSideEffects annotation is present. If ignore side effects variant is preferred. 3. If ResourceVersions aren't parseable as ints, fall back to treating i as "less" so comparison degrades gracefully.

type Manifest

type Manifest struct {
	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 PodOverrides added in v0.0.16

type PodOverrides struct {
	Labels      map[string]string           `json:"labels,omitempty"`
	Annotations map[string]string           `json:"annotations,omitempty"`
	Resources   corev1.ResourceRequirements `json:"resources,omitempty"`
	Affinity    *corev1.Affinity            `json:"affinity,omitempty"`
}

func (*PodOverrides) DeepCopy added in v0.0.16

func (in *PodOverrides) DeepCopy() *PodOverrides

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

func (*PodOverrides) DeepCopyInto added in v0.0.16

func (in *PodOverrides) DeepCopyInto(out *PodOverrides)

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.
	Key string `json:"key"`

	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"`

	// Optional indicates that this input is not required for synthesis to proceed.
	// When true, synthesis will not be blocked if the input is missing.
	// When false (default), synthesis will fail with "MissingInputs" if the input is not available.
	//
	// +kubebuilder:default=false
	Optional bool `json:"optional,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 {
	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 {
	Group   string `json:"group,omitempty"`
	Version string `json:"version,omitempty"`
	Kind    string `json:"kind"`

	// If set, name and namespace form an "implicit binding", i.e. a ref that is bound to
	// a specific resource without a corresponding binding on the composition resource.
	// The implied binding takes precedence over a corresponding binding from the composition.
	Name      string `json:"name,omitempty"`
	Namespace string `json:"namespace,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 {
	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"`
	ReconciliationError *string      `json:"reconciliationError,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.

func (*ResourceState) Equal added in v0.0.47

func (r *ResourceState) Equal(rr *ResourceState) bool

type Result added in v0.0.10

type Result struct {
	Message  string            `json:"message,omitempty"`
	Severity string            `json:"severity,omitempty"`
	Tags     map[string]string `json:"tags,omitempty"`
}

func (*Result) DeepCopy added in v0.0.10

func (in *Result) DeepCopy() *Result

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

func (*Result) DeepCopyInto added in v0.0.10

func (in *Result) DeepCopyInto(out *Result)

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

type SimplifiedStatus added in v0.0.10

type SimplifiedStatus struct {
	Status string `json:"status,omitempty"`
	Error  string `json:"error,omitempty"`
}

func (*SimplifiedStatus) DeepCopy added in v0.0.10

func (in *SimplifiedStatus) DeepCopy() *SimplifiedStatus

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

func (*SimplifiedStatus) DeepCopyInto added in v0.0.10

func (in *SimplifiedStatus) DeepCopyInto(out *SimplifiedStatus)

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

func (*SimplifiedStatus) String added in v0.1.4

func (s *SimplifiedStatus) String() string

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.

func (*Symphony) GetAzureOperationID added in v0.2.1

func (c *Symphony) GetAzureOperationID() string

func (*Symphony) GetAzureOperationOrigin added in v0.2.1

func (c *Symphony) GetAzureOperationOrigin() string

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 by all compositions managed by this symphony.
	Bindings []Binding `json:"bindings,omitempty"`

	// SynthesisEnv
	// Copied opaquely into the compositions managed by this symphony.
	// +kubebuilder:validation:MaxItems:=50
	SynthesisEnv []EnvVar `json:"synthesisEnv,omitempty"` // deprecated synthesis env should always be variation scoped.
}

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"`
}

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"`

	// Initialized is set when the synthesis process is initiated.
	Initialized *metav1.Time `json:"initialized,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"`

	// Canceled signals that any running synthesis pods should be deleted,
	// and new synthesis pods should never be created for this synthesis UUID.
	Canceled *metav1.Time `json:"canceled,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"`

	// Results are passed through opaquely from the synthesizer's KRM function.
	Results []Result `json:"results,omitempty"`

	// InputRevisions contains the versions of the input resources that were used for this synthesis.
	InputRevisions []InputRevisions `json:"inputRevisions,omitempty"`

	// Deferred is true when this synthesis was caused by a change to either the synthesizer
	// or an input with a ref that sets `Defer == true`.
	Deferred bool `json:"deferred,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.

+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 {
	Name          string                `json:"name,omitempty"`
	LabelSelector *metav1.LabelSelector `json:"labelSelector,omitempty"`
}

+kubebuilder:validation:XValidation:rule="has(self.name) || has(self.labelSelector)",message="at least one of name or labelSelector must be set"

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.
	Image string `json:"image,omitempty"`

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

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

	// DEPRECATED
	// 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"`

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

	// PodOverrides sets values in the pods used to execute this synthesizer.
	PodOverrides PodOverrides `json:"podOverrides,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 medatada.annotations.
	Annotations map[string]string `json:"annotations,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"`

	// SynthesisEnv
	// Copied opaquely into the compositions that's derived from this variation.
	// It gets merged with the Symhony environment and takes precedence over it.
	// +kubebuilder:validation:MaxItems:=25
	SynthesisEnv []EnvVar `json:"synthesisEnv,omitempty"`

	// Optional indicates that this variation should not block the symphony status
	// when it fails to synthesize, reconcile, or become ready.
	Optional bool `json:"optional,omitempty"`

	// Dependencies for the composition created from this variation
	// References use synthesizer name - the symphony controller resolves them
	// to actual composition name when creating/updating compositions
	// Max dependencies is 50
	// +kubebuilder:validation:MaxItems:=50
	DependsOn []VariationDependency `json:"dependsOn,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.

type VariationDependency added in v0.2.7

type VariationDependency struct {
	// Synthesizer name of the dependency variation (within the same symphony)
	// Resolved to the actual composition name by the symphony controller
	Synthesizer string `json:"synthesizer,omitempty"`
}

func (*VariationDependency) DeepCopy added in v0.2.7

func (in *VariationDependency) DeepCopy() *VariationDependency

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

func (*VariationDependency) DeepCopyInto added in v0.2.7

func (in *VariationDependency) DeepCopyInto(out *VariationDependency)

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