Documentation ¶
Index ¶
- Constants
- Variables
- func RegisterReconcilerInitializer(resourceKind string, initializer ReconcilerInitializer)
- type Controller
- func (c *Controller) AcquireConn(ctx context.Context, connector string) (drivers.Handle, func(), error)
- func (c *Controller) AcquireOLAP(ctx context.Context, connector string) (drivers.OLAPStore, func(), error)
- func (c *Controller) Cancel(ctx context.Context, name *runtimev1.ResourceName) error
- func (c *Controller) Create(ctx context.Context, name *runtimev1.ResourceName, ...) error
- func (c *Controller) Delete(ctx context.Context, name *runtimev1.ResourceName) error
- func (c *Controller) Flush(ctx context.Context) error
- func (c *Controller) Get(ctx context.Context, name *runtimev1.ResourceName, clone bool) (*runtimev1.Resource, error)
- func (c *Controller) List(ctx context.Context, kind string, clone bool) ([]*runtimev1.Resource, error)
- func (c *Controller) Lock(ctx context.Context)
- func (c *Controller) Reconcile(ctx context.Context, name *runtimev1.ResourceName) error
- func (c *Controller) Run(ctx context.Context) error
- func (c *Controller) Subscribe(ctx context.Context, fn SubscribeCallback) error
- func (c *Controller) Unlock(ctx context.Context)
- func (c *Controller) UpdateError(ctx context.Context, name *runtimev1.ResourceName, reconcileErr error) error
- func (c *Controller) UpdateMeta(ctx context.Context, name *runtimev1.ResourceName, ...) error
- func (c *Controller) UpdateName(ctx context.Context, name, newName, owner *runtimev1.ResourceName, ...) error
- func (c *Controller) UpdateSpec(ctx context.Context, name *runtimev1.ResourceName, r *runtimev1.Resource) error
- func (c *Controller) UpdateState(ctx context.Context, name *runtimev1.ResourceName, r *runtimev1.Resource) error
- func (c *Controller) WaitUntilIdle(ctx context.Context, ignoreHidden bool) error
- type ExportOptions
- type Options
- type Query
- type QueryResult
- type ReconcileResult
- type Reconciler
- type ReconcilerInitializer
- type ResolvedMetricsViewSecurity
- type Runtime
- func (r *Runtime) AcquireHandle(ctx context.Context, instanceID, connector string) (drivers.Handle, func(), error)
- func (r *Runtime) AcquireSystemHandle(ctx context.Context, connector string) (drivers.Handle, func(), error)
- func (r *Runtime) Admin(ctx context.Context, instanceID string) (drivers.AdminService, func(), error)
- func (r *Runtime) AllowHostAccess() bool
- func (r *Runtime) Catalog(ctx context.Context, instanceID string) (drivers.CatalogStore, func(), error)
- func (r *Runtime) Close() error
- func (r *Runtime) Controller(ctx context.Context, instanceID string) (*Controller, error)
- func (r *Runtime) CreateInstance(ctx context.Context, inst *drivers.Instance) error
- func (r *Runtime) DeleteFile(ctx context.Context, instanceID, path string) error
- func (r *Runtime) DeleteInstance(ctx context.Context, instanceID string, dropDB bool) error
- func (r *Runtime) EditInstance(ctx context.Context, inst *drivers.Instance, restartController bool) error
- func (r *Runtime) GetFile(ctx context.Context, instanceID, path string) (string, time.Time, error)
- func (r *Runtime) GetInstanceAttributes(ctx context.Context, instanceID string) []attribute.KeyValue
- func (r *Runtime) Instance(ctx context.Context, instanceID string) (*drivers.Instance, error)
- func (r *Runtime) InstanceLogger(ctx context.Context, instanceID string) (*zap.Logger, error)
- func (r *Runtime) InstanceLogs(ctx context.Context, instanceID string) (*logbuffer.Buffer, error)
- func (r *Runtime) Instances(ctx context.Context) ([]*drivers.Instance, error)
- func (r *Runtime) ListFiles(ctx context.Context, instanceID, glob string) ([]string, error)
- func (r *Runtime) OLAP(ctx context.Context, instanceID string) (drivers.OLAPStore, func(), error)
- func (r *Runtime) PutFile(ctx context.Context, instanceID, path string, blob io.Reader, ...) error
- func (r *Runtime) Query(ctx context.Context, instanceID string, query Query, priority int) error
- func (r *Runtime) RenameFile(ctx context.Context, instanceID, fromPath, toPath string) error
- func (r *Runtime) Repo(ctx context.Context, instanceID string) (drivers.RepoStore, func(), error)
- func (r *Runtime) ResolveMetricsViewSecurity(attributes map[string]any, instanceID string, mv *runtimev1.MetricsViewSpec, ...) (*ResolvedMetricsViewSecurity, error)
- func (r *Runtime) WaitUntilIdle(ctx context.Context, instanceID string, ignoreHidden bool) error
- type SubscribeCallback
Constants ¶
const ( ResourceKindProjectParser string = "rill.runtime.v1.ProjectParser" ResourceKindSource string = "rill.runtime.v1.Source" ResourceKindModel string = "rill.runtime.v1.Model" ResourceKindMetricsView string = "rill.runtime.v1.MetricsView" ResourceKindMigration string = "rill.runtime.v1.Migration" ResourceKindReport string = "rill.runtime.v1.Report" ResourceKindPullTrigger string = "rill.runtime.v1.PullTrigger" ResourceKindRefreshTrigger string = "rill.runtime.v1.RefreshTrigger" ResourceKindBucketPlanner string = "rill.runtime.v1.BucketPlanner" ResourceKindTheme string = "rill.runtime.v1.Theme" )
Built-in resource kinds
Variables ¶
var ErrAdminNotConfigured = fmt.Errorf("an admin store is not configured for this instance")
var GlobalProjectParserName = &runtimev1.ResourceName{Kind: ResourceKindProjectParser, Name: "parser"}
GlobalProjectParserName is the name of the instance-global project parser resource that is created for each new instance.
var ReconcilerInitializers = make(map[string]ReconcilerInitializer)
ReconcilerInitializers is a registry of reconciler initializers for different resource kinds. There can be only one reconciler per resource kind.
Functions ¶
func RegisterReconcilerInitializer ¶ added in v0.32.0
func RegisterReconcilerInitializer(resourceKind string, initializer ReconcilerInitializer)
RegisterReconciler registers a reconciler initializer for a specific resource kind
Types ¶
type Controller ¶ added in v0.32.0
type Controller struct { Runtime *Runtime InstanceID string Logger *zap.Logger Activity activity.Client // contains filtered or unexported fields }
Controller manages the catalog for a single instance and runs reconcilers to migrate the catalog (and related resources in external databases) into the desired state. For information about how the controller schedules reconcilers, see `runtime/reconcilers/README.md`.
func NewController ¶ added in v0.32.0
func NewController(ctx context.Context, rt *Runtime, instanceID string, logger *zap.Logger, ac activity.Client) (*Controller, error)
NewController creates a new Controller
func (*Controller) AcquireConn ¶ added in v0.32.0
func (c *Controller) AcquireConn(ctx context.Context, connector string) (drivers.Handle, func(), error)
AcquireOLAP gets a handle for a connector in the controller's instance.
func (*Controller) AcquireOLAP ¶ added in v0.32.0
func (c *Controller) AcquireOLAP(ctx context.Context, connector string) (drivers.OLAPStore, func(), error)
AcquireOLAP gets an OLAP handle for a connector in the controller's instance.
func (*Controller) Cancel ¶ added in v0.33.0
func (c *Controller) Cancel(ctx context.Context, name *runtimev1.ResourceName) error
Cancel cancels the current invocation of a resource's reconciler (if it's running). It does not re-enqueue the resource for reconciliation.
func (*Controller) Create ¶ added in v0.32.0
func (c *Controller) Create(ctx context.Context, name *runtimev1.ResourceName, refs []*runtimev1.ResourceName, owner *runtimev1.ResourceName, paths []string, hidden bool, r *runtimev1.Resource) error
Create creates a resource and enqueues it for reconciliation. If a resource with the same name is currently being deleted, the deletion will be cancelled.
func (*Controller) Delete ¶ added in v0.32.0
func (c *Controller) Delete(ctx context.Context, name *runtimev1.ResourceName) error
Delete soft-deletes a resource and enqueues it for reconciliation (with DeletedOn != nil). Once the deleting reconciliation has been completed, the resource will be hard deleted. If Delete is called from the resource's own reconciler, the resource will be hard deleted immediately (and the calling reconcile's ctx will be canceled immediately).
func (*Controller) Flush ¶ added in v0.32.0
func (c *Controller) Flush(ctx context.Context) error
Flush forces a flush of the controller's catalog changes to persistent storage.
func (*Controller) Get ¶ added in v0.32.0
func (c *Controller) Get(ctx context.Context, name *runtimev1.ResourceName, clone bool) (*runtimev1.Resource, error)
Get returns a resource by name. Soft-deleted resources (i.e. resources where DeletedOn != nil) are not returned.
func (*Controller) List ¶ added in v0.32.0
func (c *Controller) List(ctx context.Context, kind string, clone bool) ([]*runtimev1.Resource, error)
List returns a list of resources of the specified kind. If kind is empty, all resources are returned. Soft-deleted resources (i.e. resources where DeletedOn != nil) are not returned.
func (*Controller) Lock ¶ added in v0.32.0
func (c *Controller) Lock(ctx context.Context)
Lock locks the controller's catalog and delays scheduling of new reconciliations until the lock is released. It can only be called from within a reconciler invocation. While the lock is held, resources can only be edited by a caller using the ctx passed to Lock.
func (*Controller) Reconcile ¶ added in v0.33.0
func (c *Controller) Reconcile(ctx context.Context, name *runtimev1.ResourceName) error
Reconcile enqueues a resource for reconciliation. If the resource is currently reconciling, the current reconciler will be cancelled first.
func (*Controller) Run ¶ added in v0.32.0
func (c *Controller) Run(ctx context.Context) error
Run starts and runs the controller's event loop. It returns when ctx is cancelled or an unrecoverable error occurs. Before returning, it closes the controller, so it must only be called once. The event loop schedules/invokes resource reconciliation and periodically flushes catalog changes to persistent storage. The implementation centers around these internal functions: enqueue, processQueue (uses markPending, trySchedule, invoke), and processCompletedInvocation. See their docstrings for further details.
func (*Controller) Subscribe ¶ added in v0.33.1
func (c *Controller) Subscribe(ctx context.Context, fn SubscribeCallback) error
Subscribe registers a callback that will receive resource update events. The same callback function will not be invoked concurrently. The callback function is invoked under a lock and must not call the controller.
func (*Controller) Unlock ¶ added in v0.32.0
func (c *Controller) Unlock(ctx context.Context)
Unlock releases the lock acquired by Lock.
func (*Controller) UpdateError ¶ added in v0.32.0
func (c *Controller) UpdateError(ctx context.Context, name *runtimev1.ResourceName, reconcileErr error) error
UpdateError updates a resource's error. Unlike UpdateMeta and UpdateSpec, it does not cancel or enqueue reconciliation for the resource.
func (*Controller) UpdateMeta ¶ added in v0.32.0
func (c *Controller) UpdateMeta(ctx context.Context, name *runtimev1.ResourceName, refs []*runtimev1.ResourceName, owner *runtimev1.ResourceName, paths []string) error
UpdateMeta updates a resource's meta fields and enqueues it for reconciliation. If called from outside the resource's reconciler and the resource is currently reconciling, the current reconciler will be cancelled first.
func (*Controller) UpdateName ¶ added in v0.33.0
func (c *Controller) UpdateName(ctx context.Context, name, newName, owner *runtimev1.ResourceName, paths []string) error
UpdateName renames a resource and updates annotations, and enqueues it for reconciliation. If called from outside the resource's reconciler and the resource is currently reconciling, the current reconciler will be cancelled first.
func (*Controller) UpdateSpec ¶ added in v0.32.0
func (c *Controller) UpdateSpec(ctx context.Context, name *runtimev1.ResourceName, r *runtimev1.Resource) error
UpdateSpec updates a resource's spec and enqueues it for reconciliation. If called from outside the resource's reconciler and the resource is currently reconciling, the current reconciler will be cancelled first.
func (*Controller) UpdateState ¶ added in v0.32.0
func (c *Controller) UpdateState(ctx context.Context, name *runtimev1.ResourceName, r *runtimev1.Resource) error
UpdateState updates a resource's state. It can only be called from within the resource's reconciler. NOTE: Calls to UpdateState succeed even if ctx is cancelled. This enables cancelled reconcilers to update state before finishing.
func (*Controller) WaitUntilIdle ¶ added in v0.35.0
func (c *Controller) WaitUntilIdle(ctx context.Context, ignoreHidden bool) error
WaitUntilIdle returns when the controller is idle (i.e. no reconcilers are pending or running).
type ExportOptions ¶ added in v0.29.1
type ExportOptions struct { Format runtimev1.ExportFormat Priority int PreWriteHook func(filename string) error }
type Query ¶ added in v0.16.0
type Query interface { // Key should return a cache key that uniquely identifies the query Key() string // Deps should return the resource names that the query targets. // It's used to invalidate cached queries when the underlying data changes. // If a dependency doesn't exist, it is ignored. (So if the underlying resource kind is unknown, it can return all possible dependency names.) Deps() []*runtimev1.ResourceName // MarshalResult should return the query result and estimated cost in bytes for caching MarshalResult() *QueryResult // UnmarshalResult should populate a query with a cached result UnmarshalResult(v any) error // Resolve should execute the query against the instance's infra. // Error can be nil along with a nil result in general, i.e. when a model contains no rows aggregation results can be nil. Resolve(ctx context.Context, rt *Runtime, instanceID string, priority int) error // Export resolves the query and serializes the result to the writer. Export(ctx context.Context, rt *Runtime, instanceID string, w io.Writer, opts *ExportOptions) error }
type QueryResult ¶ added in v0.26.0
type ReconcileResult ¶ added in v0.32.0
ReconcileResult propagates results from a reconciler invocation
type Reconciler ¶ added in v0.32.0
type Reconciler interface { Close(ctx context.Context) error AssignSpec(from, to *runtimev1.Resource) error AssignState(from, to *runtimev1.Resource) error ResetState(r *runtimev1.Resource) error Reconcile(ctx context.Context, n *runtimev1.ResourceName) ReconcileResult }
Reconciler implements reconciliation logic for all resources of a specific kind. Reconcilers are managed and invoked by a Controller.
type ReconcilerInitializer ¶ added in v0.32.0
type ReconcilerInitializer func(*Controller) Reconciler
ReconcilerInitializer is a function that initializes a new reconciler for a specific controller
type ResolvedMetricsViewSecurity ¶ added in v0.33.0
type Runtime ¶
func (*Runtime) AcquireHandle ¶ added in v0.32.0
func (r *Runtime) AcquireHandle(ctx context.Context, instanceID, connector string) (drivers.Handle, func(), error)
AcquireHandle returns instance specific handle
func (*Runtime) AcquireSystemHandle ¶ added in v0.32.0
func (*Runtime) AllowHostAccess ¶ added in v0.27.0
func (*Runtime) Controller ¶ added in v0.33.1
Controller returns the controller for the given instance. If the controller is currently initializing, the call will wait until the controller is ready. If the controller has closed with a fatal error, that error will be returned here until it's restarted.
func (*Runtime) CreateInstance ¶
CreateInstance creates a new instance and starts a controller for it.
func (*Runtime) DeleteFile ¶ added in v0.16.0
func (*Runtime) DeleteInstance ¶ added in v0.16.0
DeleteInstance deletes an instance and stops its controller.
func (*Runtime) EditInstance ¶ added in v0.23.0
func (r *Runtime) EditInstance(ctx context.Context, inst *drivers.Instance, restartController bool) error
EditInstance edits an existing instance. If restartController is true, the instance's controller will be re-opened and all cached connections for the instance will be evicted. Until the controller and connections have been closed and re-opened, calls related to the instance may return transient errors.
func (*Runtime) GetInstanceAttributes ¶ added in v0.32.0
func (r *Runtime) GetInstanceAttributes(ctx context.Context, instanceID string) []attribute.KeyValue
GetInstanceAttributes fetches an instance and converts its annotations to attributes nil is returned if an error occurred or instance was not found
func (*Runtime) Instance ¶ added in v0.35.0
Instance looks up an instance by ID. Instances are cached in-memory, so this is a cheap operation.
func (*Runtime) InstanceLogger ¶ added in v0.40.0
InstanceLogger returns a logger scoped for the given instance. Logs emitted to the logger will also be available in the instance's log buffer.
func (*Runtime) InstanceLogs ¶ added in v0.40.0
InstanceLogs returns an in-memory buffer of recent logs related to the given instance.
func (*Runtime) Instances ¶ added in v0.35.0
Instances returns all instances managed by the runtime.
func (*Runtime) RenameFile ¶ added in v0.16.0
func (*Runtime) ResolveMetricsViewSecurity ¶ added in v0.33.0
func (r *Runtime) ResolveMetricsViewSecurity(attributes map[string]any, instanceID string, mv *runtimev1.MetricsViewSpec, lastUpdatedOn time.Time) (*ResolvedMetricsViewSecurity, error)
type SubscribeCallback ¶ added in v0.33.1
type SubscribeCallback func(e runtimev1.ResourceEvent, n *runtimev1.ResourceName, r *runtimev1.Resource)
SubscribeCallback is the callback type passed to Subscribe.
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
compilers
|
|
pkg
|
|
duration
Package duration copied as it is from github.com/senseyeio/duration
|
Package duration copied as it is from github.com/senseyeio/duration |
singleflight
Package singleflight provides a duplicate function call suppression mechanism.
|
Package singleflight provides a duplicate function call suppression mechanism. |