Documentation
¶
Index ¶
- Variables
- func NewSet(setSpecJSON string, db database.DB, logger *zap.Logger) (map[string]Provisioner, error)
- func Register(typ string, fn ProvisionerInitializer)
- type ClickhouseConfig
- type Provisioner
- type ProvisionerInitializer
- type ProvisionerSpec
- type Resource
- type ResourceOptions
- type ResourceType
- type RuntimeArgs
- type RuntimeConfig
Constants ¶
This section is empty.
Variables ¶
var ErrResourceTypeNotSupported = errors.New("provisioner: resource type not supported")
ErrResourceTypeNotSupported should be returned by Provision if the provisioner does not support the requested resource type.
By checking for this error, we can iterate over the chain of provisioners until we find a provisioner capable of provisioning the requested service.
var Initializers = make(map[string]ProvisionerInitializer)
Initializers is a registry of provisioner initializers by type.
Functions ¶
func NewSet ¶ added in v0.43.0
NewSet initializes a set of provisioners from a JSON specification. The JSON specification should be a map of names to ProvisionerSpecs.
func Register ¶ added in v0.52.0
func Register(typ string, fn ProvisionerInitializer)
Register registers a new provisioner initializer.
Types ¶
type ClickhouseConfig ¶ added in v0.52.0
type ClickhouseConfig struct {
DSN string `mapstructure:"dsn"`
}
ClickhouseConfig describes the expected config for a provisioned Clickhouse resource.
func NewClickhouseConfig ¶ added in v0.52.0
func NewClickhouseConfig(cfg map[string]any) (*ClickhouseConfig, error)
func (*ClickhouseConfig) AsMap ¶ added in v0.52.0
func (r *ClickhouseConfig) AsMap() map[string]any
type Provisioner ¶
type Provisioner interface { // Type returns the type of the provisioner. Type() string // Close is called when the provisioner is no longer needed. Close() error // Provision provisions a new resource. // It may be called multiple times for the same ID if: // - the initial provision is interrupted, or // - the resource args are updated // // This means Provision should be idempotent for the resource's ID (or otherwise do appropriate garbage collection in calls to Check). Provision(ctx context.Context, r *Resource, opts *ResourceOptions) (*Resource, error) // Deprovision deprovisions a resource. Deprovision(ctx context.Context, r *Resource) error // AwaitReady waits for a resource to be ready. AwaitReady(ctx context.Context, r *Resource) error // Check is called periodically to health check the provisioner. // The provided context should have a generous timeout to allow the provisioner to perform maintenance tasks. Check(ctx context.Context) error // CheckResource is called periodically to health check a specific resource. // The provided context should have a generous timeout to allow the provisioner to perform maintenance tasks for the resource. // The resource's state map will be updated to match that of the returned value. CheckResource(ctx context.Context, r *Resource, opts *ResourceOptions) (*Resource, error) }
Provisioner is able to provision resources for one or more resource types.
type ProvisionerInitializer ¶ added in v0.52.0
type ProvisionerInitializer func(specJSON []byte, db database.DB, logger *zap.Logger) (Provisioner, error)
ProvisionerInitializer creates a new provisioner.
type ProvisionerSpec ¶ added in v0.43.0
type ProvisionerSpec struct { Type string `json:"type"` Spec json.RawMessage `json:"spec"` }
ProvisionerSpec is a JSON-serializable specification for a provisioner.
type Resource ¶ added in v0.52.0
type Resource struct { // ID uniquely identifies the provisioned resource. ID string // Type describes what type of service the resource is. Type ResourceType // State contains state about the provisioned resource for use by the provisioner. // It should not be accessed outside of the provisioner. State map[string]any // Config contains access details for clients that use the resource. Config map[string]any }
Resource represents a provisioned resource.
type ResourceOptions ¶ added in v0.52.0
type ResourceOptions struct { // Service-specific arguments for the provisioner. See resources.go for supported arguments. Args map[string]any // Annotations for the project the resource belongs to. Annotations map[string]string // RillVersion is the current version of Rill. RillVersion string }
ResourceOptions contains metadata about a resource.
type ResourceType ¶ added in v0.52.0
type ResourceType string
ResourceType enumerates the provisionable resource types.
const ( ResourceTypeRuntime ResourceType = "runtime" ResourceTypeClickHouse ResourceType = "clickhouse" )
type RuntimeArgs ¶ added in v0.52.0
type RuntimeArgs struct { Slots int `mapstructure:"slots"` Version string `mapstructure:"version"` }
RuntimeArgs describe the expected arguments for provisioning a runtime resource.
func NewRuntimeArgs ¶ added in v0.52.0
func NewRuntimeArgs(args map[string]any) (*RuntimeArgs, error)
func (*RuntimeArgs) AsMap ¶ added in v0.52.0
func (r *RuntimeArgs) AsMap() map[string]any
type RuntimeConfig ¶ added in v0.52.0
type RuntimeConfig struct { Host string `mapstructure:"host"` Audience string `mapstructure:"audience"` CPU int `mapstructure:"cpu"` MemoryGB int `mapstructure:"memory_gb"` StorageBytes int64 `mapstructure:"storage_bytes"` }
RuntimeConfig describes the expected config for a provisioned runtime resource.
func NewRuntimeConfig ¶ added in v0.52.0
func NewRuntimeConfig(cfg map[string]any) (*RuntimeConfig, error)
func (*RuntimeConfig) AsMap ¶ added in v0.52.0
func (r *RuntimeConfig) AsMap() map[string]any