sdk

package
v0.0.0-...-1fa5987 Latest Latest
Warning

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

Go to latest
Published: May 14, 2022 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Overview

Package sdk will eventually contain a public toolkit for implementing providers. Presently, everything in this package is unstable.

Index

Constants

This section is empty.

Variables

View Source
var ErrResourceGone = errutil.NewHTTPError(http.StatusGone, "resource gone")

Resource controllers use this to signal that an external resource has been deleted.

Functions

func NewNotImplementedErrorf

func NewNotImplementedErrorf(format string, args ...interface{}) errutil.HTTPError

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 ComponentConfigResource struct {
	ID   string  `json:"id"`
	Type string  `json:"type"`
	IRI  *string `json:"iri,omitempty"`
}

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 RenderedComponent struct {
	Type        string
	Name        string
	Key         string
	Spec        any
	Environment JSONObject
}

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 ResourceConfig struct {
	ID   string  `json:"id"`
	Type string  `json:"type"`
	IRI  *string `json:"iri,omitempty"`
}

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

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL