Documentation
¶
Index ¶
- Constants
- Variables
- func ConstructRevisionName(componentName string) 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, l logging.Logger) 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 OAMApplicationReconciler
- type Parameter
- type ParameterResolveFn
- type ParameterResolver
- type ReconcilerOption
- func WithApplicator(a WorkloadApplicator) ReconcilerOption
- func WithGarbageCollector(gc GarbageCollector) ReconcilerOption
- func WithLogger(l logging.Logger) ReconcilerOption
- func WithPosthook(name string, hook ControllerHooks) ReconcilerOption
- func WithPrehook(name string, hook ControllerHooks) ReconcilerOption
- func WithRecorder(er event.Recorder) ReconcilerOption
- func WithRenderer(r ComponentRenderer) ReconcilerOption
- type ResourceRenderFn
- type ResourceRenderer
- type Trait
- type Workload
- type WorkloadApplicator
- type WorkloadApplyFns
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 hash suffix char set added to componentName is (0-9, a-v)
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 recognise 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) 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 ¶ added in v0.0.6
type ControllerHooks interface {
Exec(ctx context.Context, ac *v1alpha2.ApplicationConfiguration, logger logging.Logger) (reconcile.Result, error)
}
A ControllerHooks provide customized reconcile logic for an ApplicationConfiguration
type ControllerHooksFn ¶ added in v0.0.6
type ControllerHooksFn func(ctx context.Context, ac *v1alpha2.ApplicationConfiguration, logger logging.Logger) (reconcile.Result, error)
ControllerHooksFn reconciles an 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 OAMApplicationReconciler ¶ added in v0.0.6
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, o ...ReconcilerOption) *OAMApplicationReconciler
NewReconciler returns an OAMApplicationReconciler that reconciles ApplicationConfigurations by rendering and instantiating their Components and Traits.
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 WithApplicator ¶
func WithApplicator(a WorkloadApplicator) ReconcilerOption
WithApplicator specifies how the Reconciler should apply workloads and traits.
func WithGarbageCollector ¶
func WithGarbageCollector(gc GarbageCollector) ReconcilerOption
WithGarbageCollector specifies how the Reconciler should garbage collect workloads and traits when an ApplicationConfiguration is edited to remove them.
func WithLogger ¶
func WithLogger(l logging.Logger) ReconcilerOption
WithLogger specifies how the Reconciler should log messages.
func WithPosthook ¶ added in v0.0.6
func WithPosthook(name string, hook ControllerHooks) ReconcilerOption
WithPosthook register a post-hook to the Reconciler
func WithPrehook ¶ added in v0.0.6
func WithPrehook(name string, hook ControllerHooks) ReconcilerOption
WithPrehook register a pre-hook to the Reconciler
func WithRecorder ¶
func WithRecorder(er event.Recorder) ReconcilerOption
WithRecorder specifies how the Reconciler should record events.
func WithRenderer ¶
func WithRenderer(r ComponentRenderer) ReconcilerOption
WithRenderer specifies how the Reconciler should render workloads and traits.
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
}
A Trait produced by an OAM ApplicationConfiguration.
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
// 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 ...resource.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.
type WorkloadApplyFns ¶ added in v0.0.9
type WorkloadApplyFns struct {
ApplyFn func(ctx context.Context, status []v1alpha2.WorkloadStatus, w []Workload, ao ...resource.ApplyOption) error
FinalizeFn func(ctx context.Context, ac *v1alpha2.ApplicationConfiguration) error
}
A WorkloadApplyFns creates or updates or finalizes workloads and their traits.
func (WorkloadApplyFns) Apply ¶ added in v0.0.9
func (fn WorkloadApplyFns) Apply(ctx context.Context, status []v1alpha2.WorkloadStatus, w []Workload, ao ...resource.ApplyOption) error
Apply a workload and its traits.
func (WorkloadApplyFns) Finalize ¶ added in v0.0.9
func (fn WorkloadApplyFns) Finalize(ctx context.Context, ac *v1alpha2.ApplicationConfiguration) error
Finalize workloads and its traits/scopes.