Documentation ¶
Index ¶
- Constants
- Variables
- func ConstructRevisionName(componentName string, revision int64) string
- func ExtractComponentName(revisionName string) string
- func IsRevisionWorkload(status v1alpha2.WorkloadStatus) bool
- func SetWorkloadInstanceName(traitDefs []v1alpha2.TraitDefinition, w *unstructured.Unstructured, ...) error
- func Setup(mgr ctrl.Manager, args controller.Args) error
- type ComponentHandler
- func (c *ComponentHandler) Create(evt event.CreateEvent, q workqueue.RateLimitingInterface)
- func (c *ComponentHandler) Delete(evt event.DeleteEvent, q workqueue.RateLimitingInterface)
- func (c *ComponentHandler) Generic(_ event.GenericEvent, _ workqueue.RateLimitingInterface)
- func (c *ComponentHandler) IsRevisionDiff(mt metav1.Object, curComp *v1alpha2.Component) (bool, int64)
- func (c *ComponentHandler) Update(evt event.UpdateEvent, q workqueue.RateLimitingInterface)
- type ComponentRenderFn
- type ComponentRenderer
- type ControllerHooks
- type ControllerHooksFn
- type GarbageCollector
- type GarbageCollectorFn
- type GenerationUnchanged
- type OAMApplicationReconciler
- type Parameter
- type ParameterResolveFn
- type ParameterResolver
- type ReconcilerOption
- type ResourceRenderFn
- type ResourceRenderer
- type Trait
- type VolumeClaim
- type VolumeClaimRenderFn
- type VolumeClaimRenderer
- type Workload
- type WorkloadApplicator
Constants ¶
const ControllerRevisionComponentLabel = "controller.oam.dev/component"
ControllerRevisionComponentLabel indicate which component the revision belong to This label is to filter revision by client api
Variables ¶
var ( // ErrDataOutputNotExist is an error indicating the DataOutput specified doesn't not exist ErrDataOutputNotExist = errors.New("DataOutput does not exist") )
Functions ¶
func ConstructRevisionName ¶
ConstructRevisionName will generate revisionName from componentName will be <componentName>-v<RevisionNumber>, for example: comp-v1
func ExtractComponentName ¶
ExtractComponentName will extract componentName from revisionName
func IsRevisionWorkload ¶
func IsRevisionWorkload(status v1alpha2.WorkloadStatus) bool
IsRevisionWorkload check is a workload is an old revision Workload which shouldn't be garbage collected. TODO(wonderflow): Do we have a better way to recognize it's a revisionWorkload which can't be garbage collected by AppConfig?
func SetWorkloadInstanceName ¶
func SetWorkloadInstanceName(traitDefs []v1alpha2.TraitDefinition, w *unstructured.Unstructured, c *v1alpha2.Component, existingWorkload *unstructured.Unstructured) error
SetWorkloadInstanceName will set metadata.name for workload CR according to createRevision flag in traitDefinition
Types ¶
type ComponentHandler ¶
ComponentHandler will watch component change and generate Revision automatically.
func (*ComponentHandler) Create ¶
func (c *ComponentHandler) Create(evt event.CreateEvent, q workqueue.RateLimitingInterface)
Create implements EventHandler
func (*ComponentHandler) Delete ¶
func (c *ComponentHandler) Delete(evt event.DeleteEvent, q workqueue.RateLimitingInterface)
Delete implements EventHandler
func (*ComponentHandler) Generic ¶
func (c *ComponentHandler) Generic(_ event.GenericEvent, _ workqueue.RateLimitingInterface)
Generic implements EventHandler
func (*ComponentHandler) IsRevisionDiff ¶
func (c *ComponentHandler) IsRevisionDiff(mt metav1.Object, curComp *v1alpha2.Component) (bool, int64)
IsRevisionDiff check whether there's any different between two component revision
func (*ComponentHandler) Update ¶
func (c *ComponentHandler) Update(evt event.UpdateEvent, q workqueue.RateLimitingInterface)
Update implements EventHandler
type ComponentRenderFn ¶
type ComponentRenderFn func(ctx context.Context, ac *v1alpha2.ApplicationConfiguration) ([]Workload, *v1alpha2.DependencyStatus, error)
A ComponentRenderFn renders an ApplicationConfiguration's Components into workloads and traits.
func (ComponentRenderFn) Render ¶
func (fn ComponentRenderFn) Render(ctx context.Context, ac *v1alpha2.ApplicationConfiguration) ( []Workload, *v1alpha2.DependencyStatus, error)
Render an ApplicationConfiguration's Components into workloads and traits.
type ComponentRenderer ¶
type ComponentRenderer interface {
Render(ctx context.Context, ac *v1alpha2.ApplicationConfiguration) ([]*Workload, *v1alpha2.DependencyStatus, error)
}
A ComponentRenderer renders an ApplicationConfiguration's Components into workloads and traits.
type ControllerHooks ¶
type ControllerHooks interface {
Exec(ctx context.Context, ac *v1alpha2.ApplicationConfiguration) (reconcile.Result, error)
}
A ControllerHooks provide customized reconcile logic for an ApplicationConfiguration
type ControllerHooksFn ¶
type ControllerHooksFn func(ctx context.Context, ac *v1alpha2.ApplicationConfiguration) (reconcile.Result, error)
ControllerHooksFn reconciles an ApplicationConfiguration
func (ControllerHooksFn) Exec ¶
func (fn ControllerHooksFn) Exec(ctx context.Context, ac *v1alpha2.ApplicationConfiguration) (reconcile.Result, error)
Exec the customized reconcile logic on the ApplicationConfiguration
type GarbageCollector ¶
type GarbageCollector interface {
Eligible(namespace string, ws []v1alpha2.WorkloadStatus, w []*Workload) []unstructured.Unstructured
}
A GarbageCollector returns resource eligible for garbage collection. A resource is considered eligible if a reference exists in the supplied slice of workload statuses, but not in the supplied slice of workloads.
type GarbageCollectorFn ¶
type GarbageCollectorFn func(namespace string, ws []v1alpha2.WorkloadStatus, w []*Workload) []unstructured.Unstructured
A GarbageCollectorFn returns resource eligible for garbage collection.
func (GarbageCollectorFn) Eligible ¶
func (fn GarbageCollectorFn) Eligible(namespace string, ws []v1alpha2.WorkloadStatus, w []*Workload) []unstructured.Unstructured
Eligible resources.
type GenerationUnchanged ¶
type GenerationUnchanged struct{}
GenerationUnchanged indicates the resource being applied has no generation changed comparing to the existing one.
func (*GenerationUnchanged) Error ¶
func (e *GenerationUnchanged) Error() string
type OAMApplicationReconciler ¶
type OAMApplicationReconciler struct {
// contains filtered or unexported fields
}
An OAMApplicationReconciler reconciles OAM ApplicationConfigurations by rendering and instantiating their Components and Traits.
func NewReconciler ¶
func NewReconciler(m ctrl.Manager, dm discoverymapper.DiscoveryMapper, o ...ReconcilerOption) *OAMApplicationReconciler
NewReconciler returns an OAMApplicationReconciler that reconciles ApplicationConfigurations by rendering and instantiating their Components and Traits.
func (*OAMApplicationReconciler) Reconcile ¶
func (r *OAMApplicationReconciler) Reconcile(req reconcile.Request) (result reconcile.Result, returnErr error)
Reconcile an OAM ApplicationConfigurations by rendering and instantiating its Components and Traits. NOTE(negz): We don't validate anything against their definitions at the controller level. We assume this will be done by validating admission webhooks.
type Parameter ¶
type Parameter struct { // Name of this parameter. Name string // Value of this parameter. Value intstr.IntOrString // FieldPaths that should be set to this parameter's value. FieldPaths []string }
A Parameter may be used to set the supplied paths to the supplied value.
type ParameterResolveFn ¶
type ParameterResolveFn func([]v1alpha2.ComponentParameter, []v1alpha2.ComponentParameterValue) ([]Parameter, error)
A ParameterResolveFn resolves the parameters accepted by a component and the parameter values supplied to a component into configured parameters.
func (ParameterResolveFn) Resolve ¶
func (fn ParameterResolveFn) Resolve(cp []v1alpha2.ComponentParameter, cpv []v1alpha2.ComponentParameterValue) ([]Parameter, error)
Resolve the supplied parameters.
type ParameterResolver ¶
type ParameterResolver interface {
Resolve([]v1alpha2.ComponentParameter, []v1alpha2.ComponentParameterValue) ([]Parameter, error)
}
A ParameterResolver resolves the parameters accepted by a component and the parameter values supplied to a component into configured parameters.
type ReconcilerOption ¶
type ReconcilerOption func(*OAMApplicationReconciler)
A ReconcilerOption configures a Reconciler.
func WithApplyOnceOnly ¶
func WithApplyOnceOnly(applyOnceOnly bool) ReconcilerOption
WithApplyOnceOnly indicates whether workloads and traits should be affected if no spec change is made in the ApplicationConfiguration.
func WithRecorder ¶
func WithRecorder(er event.Recorder) ReconcilerOption
WithRecorder specifies how the Reconciler should record events.
func WithSetSync ¶ added in v0.9.1
func WithSetSync(syncTime time.Duration) ReconcilerOption
WithSetSync set Reconciler exec interval
type ResourceRenderFn ¶
type ResourceRenderFn func(data []byte, p ...Parameter) (*unstructured.Unstructured, error)
A ResourceRenderFn renders a Kubernetes-compliant YAML resource into an Unstructured object, optionally setting the supplied parameters.
func (ResourceRenderFn) Render ¶
func (fn ResourceRenderFn) Render(data []byte, p ...Parameter) (*unstructured.Unstructured, error)
Render the supplied Kubernetes YAML resource.
type ResourceRenderer ¶
type ResourceRenderer interface {
Render(data []byte, p ...Parameter) (*unstructured.Unstructured, error)
}
A ResourceRenderer renders a Kubernetes-compliant YAML resource into an Unstructured object, optionally setting the supplied parameters.
type Trait ¶
type Trait struct { Object unstructured.Unstructured // HasDep indicates whether this resource has dependencies and unready to be applied. HasDep bool // Definition indicates the trait's definition Definition v1alpha2.TraitDefinition }
A Trait produced by an OAM ApplicationConfiguration.
type VolumeClaim ¶ added in v0.9.1
type VolumeClaim struct { }
type VolumeClaimRenderFn ¶ added in v0.9.1
type VolumeClaimRenderFn func(ctx context.Context, ac *v1alpha2.ApplicationConfiguration) error
func (VolumeClaimRenderFn) Render ¶ added in v0.9.1
func (fn VolumeClaimRenderFn) Render(ctx context.Context, ac *v1alpha2.ApplicationConfiguration) error
type VolumeClaimRenderer ¶ added in v0.9.1
type VolumeClaimRenderer interface {
Render(ctx context.Context, ac *v1alpha2.ApplicationConfiguration) error
}
type Workload ¶
type Workload struct { // ComponentName that produced this workload. ComponentName string // ComponentRevisionName of current component ComponentRevisionName string // A Workload object. Workload *unstructured.Unstructured // HasDep indicates whether this resource has dependencies and unready to be applied. HasDep bool // Traits associated with this workload. Traits []*Trait // RevisionEnabled means multiple workloads of same component will possibly be alive. RevisionEnabled bool // Scopes associated with this workload. Scopes []unstructured.Unstructured }
A Workload produced by an OAM ApplicationConfiguration.
func (Workload) Status ¶
func (w Workload) Status() v1alpha2.WorkloadStatus
Status produces the status of this workload and its traits, suitable for use in the status of an ApplicationConfiguration.
type WorkloadApplicator ¶
type WorkloadApplicator interface { // Apply a workload and its traits. Apply(ctx context.Context, status []v1alpha2.WorkloadStatus, w []*Workload, ao ...apply.ApplyOption) error // Finalize implements pre-delete hooks on workloads Finalize(ctx context.Context, ac *v1alpha2.ApplicationConfiguration) error }
A WorkloadApplicator creates or updates or finalizes workloads and their traits.