Documentation
¶
Overview ¶
Package sdk will eventually contain a public toolkit for implementing providers. Presently, everything in this package is unstable.
Index ¶
- Variables
- func NewNotImplementedErrorf(format string, args ...interface{}) errutil.HTTPError
- type AComponentController
- type AResourceController
- type ComponentConfig
- type ComponentConfigResource
- type ComponentController
- type ComponentControllerAdapter
- func (ctrl *ComponentControllerAdapter[Model]) ChildrenUpdated(ctx context.Context, cfg *ComponentConfig, model *RawJSON) error
- func (ctrl *ComponentControllerAdapter[Model]) ComponentUpdated(ctx context.Context, cfg *ComponentConfig, model *RawJSON) error
- func (ctrl *ComponentControllerAdapter[Model]) DeleteComponent(ctx context.Context, cfg *ComponentConfig, model *RawJSON) error
- func (ctrl *ComponentControllerAdapter[Model]) RefreshComponent(ctx context.Context, cfg *ComponentConfig, model *RawJSON) error
- func (ctrl *ComponentControllerAdapter[Model]) RenderComponent(ctx context.Context, cfg *ComponentConfig, model *RawJSON) ([]RenderedComponent, error)
- func (ctrl *ComponentControllerAdapter[Model]) ShutdownComponent(ctx context.Context, cfg *ComponentConfig, model *RawJSON) error
- type PureComponentController
- func (ctrl *PureComponentController[Model]) ChildrenUpdated(context.Context, *ComponentConfig, *Model) error
- func (ctrl *PureComponentController[Model]) ComponentUpdated(context.Context, *ComponentConfig, *Model) error
- func (ctrl *PureComponentController[Model]) DeleteComponent(context.Context, *ComponentConfig, *Model) error
- func (ctrl *PureComponentController[Model]) RefreshComponent(context.Context, *ComponentConfig, *Model) error
- func (ctrl *PureComponentController[Model]) ShutdownComponent(context.Context, *ComponentConfig, *Model) error
- type RenderedComponent
- type ResourceComponentController
- func (ctrl *ResourceComponentController) ChildrenUpdated(ctx context.Context, cfg *ComponentConfig, model *RawJSON) error
- func (ctrl *ResourceComponentController) ComponentUpdated(ctx context.Context, cfg *ComponentConfig, model *RawJSON) error
- func (ctrl *ResourceComponentController) DeleteComponent(ctx context.Context, cfg *ComponentConfig, model *RawJSON) error
- func (ctrl *ResourceComponentController) RefreshComponent(ctx context.Context, cfg *ComponentConfig, model *RawJSON) error
- func (c *ResourceComponentController) RenderComponent(ctx context.Context, cfg *ComponentConfig, model *RawJSON) (children []RenderedComponent, err error)
- func (c *ResourceComponentController) ShutdownComponent(ctx context.Context, cfg *ComponentConfig, model *RawJSON) (err error)
- type ResourceConfig
- type ResourceController
- type ResourceControllerAdapater
- func (ctrl *ResourceControllerAdapater[Model]) CreateResource(ctx context.Context, cfg *ResourceConfig, model *RawJSON) error
- func (ctrl *ResourceControllerAdapater[Model]) DeleteResource(ctx context.Context, cfg *ResourceConfig, model *RawJSON) error
- func (ctrl *ResourceControllerAdapater[Model]) IdentifyResource(ctx context.Context, cfg *ResourceConfig, model *RawJSON) (string, error)
- func (ctrl *ResourceControllerAdapater[Model]) ReadResource(ctx context.Context, cfg *ResourceConfig, model *RawJSON) error
- func (ctrl *ResourceControllerAdapater[Model]) ShutdownResource(ctx context.Context, cfg *ResourceConfig, model *RawJSON) error
- func (ctrl *ResourceControllerAdapater[Model]) UpdateResource(ctx context.Context, cfg *ResourceConfig, prev *RawJSON, next *RawJSON) error
Constants ¶
This section is empty.
Variables ¶
var ErrResourceGone = errutil.NewHTTPError(http.StatusGone, "resource gone")
Resource controllers use this to signal that an external resource has been deleted.
Functions ¶
func NewNotImplementedErrorf ¶
Resource controllers use this to signal that a resource update is not possible and instead the resource must be recreated.
Types ¶
type AComponentController ¶
type AComponentController = ComponentController[RawJSON]
func NewComponentControllerAdapater ¶
func NewComponentControllerAdapater[Model any](impl ComponentController[Model]) AComponentController
type AResourceController ¶
type AResourceController = ResourceController[RawJSON]
func NewResourceControllerAdapater ¶
func NewResourceControllerAdapater[Model any](impl ResourceController[Model]) AResourceController
type ComponentConfig ¶
type ComponentConfig struct { ID string `json:"id"` Type string `json:"type"` Name string `json:"name"` RawSpec cue.Value `json:"spec"` RawModel RawJSON `json:"model"` Run bool Environment map[string]string `json:"environment"` Resources map[string]ComponentConfigResource `json:"resources"` }
Concrete component configuration. Corresponds to $Component in the schema.cue file.
type ComponentConfigResource ¶
type ComponentController ¶
type ComponentController[Model any] interface { // Returns a list of desired child components. // Called on each iteration of the reconciliation loop. RenderComponent(context.Context, *ComponentConfig, *Model) ([]RenderedComponent, error) // Called periodically to read state from underlying resources. RefreshComponent(context.Context, *ComponentConfig, *Model) error // Called after a component has been changed, but before reconciling children. ComponentUpdated(context.Context, *ComponentConfig, *Model) error // Called when a batch of one or more children have processed the // ComponentUpdated hook. ChildrenUpdated(context.Context, *ComponentConfig, *Model) error // Perform a blocking graceful shutdown of a component. ShutdownComponent(context.Context, *ComponentConfig, *Model) error // Deletes any associated external resources. DeleteComponent(context.Context, *ComponentConfig, *Model) error }
type ComponentControllerAdapter ¶
type ComponentControllerAdapter[Model any] struct { // contains filtered or unexported fields }
Adapts a ComponentController[Model] to AComponentController and wraps methods with panic recovery.
func (*ComponentControllerAdapter[Model]) ChildrenUpdated ¶
func (ctrl *ComponentControllerAdapter[Model]) ChildrenUpdated(ctx context.Context, cfg *ComponentConfig, model *RawJSON) error
func (*ComponentControllerAdapter[Model]) ComponentUpdated ¶
func (ctrl *ComponentControllerAdapter[Model]) ComponentUpdated(ctx context.Context, cfg *ComponentConfig, model *RawJSON) error
func (*ComponentControllerAdapter[Model]) DeleteComponent ¶
func (ctrl *ComponentControllerAdapter[Model]) DeleteComponent(ctx context.Context, cfg *ComponentConfig, model *RawJSON) error
func (*ComponentControllerAdapter[Model]) RefreshComponent ¶
func (ctrl *ComponentControllerAdapter[Model]) RefreshComponent(ctx context.Context, cfg *ComponentConfig, model *RawJSON) error
func (*ComponentControllerAdapter[Model]) RenderComponent ¶
func (ctrl *ComponentControllerAdapter[Model]) RenderComponent(ctx context.Context, cfg *ComponentConfig, model *RawJSON) ([]RenderedComponent, error)
func (*ComponentControllerAdapter[Model]) ShutdownComponent ¶
func (ctrl *ComponentControllerAdapter[Model]) ShutdownComponent(ctx context.Context, cfg *ComponentConfig, model *RawJSON) error
type PureComponentController ¶
type PureComponentController[Model any] struct{}
Utilty struct to embed no-op methods for the common case of components that only implement RenderComponent.
func (*PureComponentController[Model]) ChildrenUpdated ¶
func (ctrl *PureComponentController[Model]) ChildrenUpdated(context.Context, *ComponentConfig, *Model) error
func (*PureComponentController[Model]) ComponentUpdated ¶
func (ctrl *PureComponentController[Model]) ComponentUpdated(context.Context, *ComponentConfig, *Model) error
func (*PureComponentController[Model]) DeleteComponent ¶
func (ctrl *PureComponentController[Model]) DeleteComponent(context.Context, *ComponentConfig, *Model) error
func (*PureComponentController[Model]) RefreshComponent ¶
func (ctrl *PureComponentController[Model]) RefreshComponent(context.Context, *ComponentConfig, *Model) error
func (*PureComponentController[Model]) ShutdownComponent ¶
func (ctrl *PureComponentController[Model]) ShutdownComponent(context.Context, *ComponentConfig, *Model) error
type RenderedComponent ¶
type ResourceComponentController ¶
type ResourceComponentController struct { AResourceController // contains filtered or unexported fields }
Extends a ResourceController with ComponentController methods.
func NewResourceComponentController ¶
func NewResourceComponentController[Model any](svc api.Service, impl ResourceController[Model]) *ResourceComponentController
func (*ResourceComponentController) ChildrenUpdated ¶
func (ctrl *ResourceComponentController) ChildrenUpdated(ctx context.Context, cfg *ComponentConfig, model *RawJSON) error
func (*ResourceComponentController) ComponentUpdated ¶
func (ctrl *ResourceComponentController) ComponentUpdated(ctx context.Context, cfg *ComponentConfig, model *RawJSON) error
func (*ResourceComponentController) DeleteComponent ¶
func (ctrl *ResourceComponentController) DeleteComponent(ctx context.Context, cfg *ComponentConfig, model *RawJSON) error
func (*ResourceComponentController) RefreshComponent ¶
func (ctrl *ResourceComponentController) RefreshComponent(ctx context.Context, cfg *ComponentConfig, model *RawJSON) error
func (*ResourceComponentController) RenderComponent ¶
func (c *ResourceComponentController) RenderComponent(ctx context.Context, cfg *ComponentConfig, model *RawJSON) (children []RenderedComponent, err error)
func (*ResourceComponentController) ShutdownComponent ¶
func (c *ResourceComponentController) ShutdownComponent(ctx context.Context, cfg *ComponentConfig, model *RawJSON) (err error)
type ResourceConfig ¶
type ResourceController ¶
type ResourceController[Model any] interface { IdentifyResource(context.Context, *ResourceConfig, *Model) (string, error) CreateResource(context.Context, *ResourceConfig, *Model) error ReadResource(context.Context, *ResourceConfig, *Model) error UpdateResource(ctx context.Context, cfg *ResourceConfig, prev *Model, next *Model) error ShutdownResource(context.Context, *ResourceConfig, *Model) error DeleteResource(context.Context, *ResourceConfig, *Model) error }
type ResourceControllerAdapater ¶
type ResourceControllerAdapater[Model any] struct { // contains filtered or unexported fields }
Adapts a ResourceController[Model] to AResourceController and wraps methods with panic recovery.
func (*ResourceControllerAdapater[Model]) CreateResource ¶
func (ctrl *ResourceControllerAdapater[Model]) CreateResource(ctx context.Context, cfg *ResourceConfig, model *RawJSON) error
func (*ResourceControllerAdapater[Model]) DeleteResource ¶
func (ctrl *ResourceControllerAdapater[Model]) DeleteResource(ctx context.Context, cfg *ResourceConfig, model *RawJSON) error
func (*ResourceControllerAdapater[Model]) IdentifyResource ¶
func (ctrl *ResourceControllerAdapater[Model]) IdentifyResource(ctx context.Context, cfg *ResourceConfig, model *RawJSON) (string, error)
func (*ResourceControllerAdapater[Model]) ReadResource ¶
func (ctrl *ResourceControllerAdapater[Model]) ReadResource(ctx context.Context, cfg *ResourceConfig, model *RawJSON) error
func (*ResourceControllerAdapater[Model]) ShutdownResource ¶
func (ctrl *ResourceControllerAdapater[Model]) ShutdownResource(ctx context.Context, cfg *ResourceConfig, model *RawJSON) error
func (*ResourceControllerAdapater[Model]) UpdateResource ¶
func (ctrl *ResourceControllerAdapater[Model]) UpdateResource(ctx context.Context, cfg *ResourceConfig, prev *RawJSON, next *RawJSON) error