plugindata

package
v0.6.20 Latest Latest
Warning

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

Go to latest
Published: Jul 27, 2026 License: MIT Imports: 31 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrInvalidArgument         = errors.New("invalid plugin data argument")
	ErrBindingNotFound         = errors.New("plugin data binding not found")
	ErrBindingConflict         = errors.New("plugin data binding state conflicts with the operation")
	ErrBindingRevisionConflict = errors.New("plugin data binding revision changed")
	ErrShapeMismatch           = errors.New("plugin data shape does not match")
	ErrNotActive               = errors.New("plugin data binding is not active")
	ErrNotRetained             = errors.New("plugin data binding is not retained")
	ErrDatasetCorrupt          = errors.New("plugin data dataset is corrupt")
	ErrExportNotFound          = errors.New("plugin data export not found")
	ErrUnknownSetting          = errors.New("plugin data setting is not declared non-secret")
	ErrSettingScopeMismatch    = errors.New("plugin data setting scope does not match the request")
	ErrStorageScopeMismatch    = errors.New("plugin data storage scope does not match the request")
	ErrUnsafeFilesystem        = errors.New("plugin data filesystem entry is unsafe")
	ErrRevisionConflict        = errors.New("plugin data revision conflict")
)

Functions

func HashShape

func HashShape(shape Shape) (string, error)

Types

type BindRetainedRequest

type BindRetainedRequest struct {
	SourcePluginInstanceID           string
	ExpectedSourceBindingRevision    uint64
	TargetPluginInstanceID           string
	ExpectedShape                    Shape
	TargetExpectedManagementRevision uint64
	Now                              time.Time `json:"-"`
}

type Binding

type Binding struct {
	PluginInstanceID string       `json:"plugin_instance_id"`
	GenerationID     string       `json:"generation_id"`
	State            BindingState `json:"state"`
	Revision         uint64       `json:"revision"`
	ShapeHash        string       `json:"shape_hash"`
	RetainedAt       *time.Time   `json:"retained_at,omitempty"`
	ExpiresAt        *time.Time   `json:"expires_at,omitempty"`
}

type BindingRevisionConflictError

type BindingRevisionConflictError struct {
	PluginInstanceID string
	Expected         uint64
	Actual           uint64
}

func (*BindingRevisionConflictError) Error

func (*BindingRevisionConflictError) Unwrap

func (e *BindingRevisionConflictError) Unwrap() error

type BindingState

type BindingState string
const (
	BindingActive   BindingState = "active"
	BindingRetained BindingState = "retained"
)

type Catalog

type Catalog interface {
	GetBinding(ctx context.Context, pluginInstanceID string) (Binding, bool, error)
	ListBindings(ctx context.Context, cursor string, limit int) ([]Binding, string, error)
	ListAllBindingsForMaintenance(ctx context.Context, cursor string, limit int) ([]MaintenanceBinding, string, error)
	CommitEnable(ctx context.Context, expectedManagementRevision uint64, expected *Binding, next Binding, shape Shape, now time.Time) error
	SwapImport(ctx context.Context, expectedManagementRevision uint64, expected *Binding, next Binding, shape Shape, now time.Time) error
	BindRetained(ctx context.Context, expected Binding, targetPluginInstanceID string, targetExpectedManagementRevision uint64, targetShape Shape, now time.Time) (Binding, error)
	DeleteRetained(ctx context.Context, expected Binding) error
	CleanupExpired(ctx context.Context, now time.Time, expected []Binding) ([]Binding, error)
	CommitUninstall(ctx context.Context, req CommitUninstallRequest) (CommitUninstallResult, error)
	GetObject(ctx context.Context, scope sessionctx.ScopeKind, pluginInstanceID, objectID string) (Object, bool, error)
	ListObjects(ctx context.Context, scope sessionctx.ScopeKind, pluginInstanceID, cursor string, limit int) ([]Object, string, error)
	ListAllObjectsForMaintenance(ctx context.Context, cursor string, limit int) ([]MaintenanceObject, string, error)
	CreateObject(ctx context.Context, scope sessionctx.ScopeKind, object Object) error
	DeleteObject(ctx context.Context, scope sessionctx.ScopeKind, pluginInstanceID, objectID string) error
}

type CleanupResult

type CleanupResult struct {
	Deleted []Binding
}

type CommitEnableRequest

type CommitEnableRequest struct {
	PluginInstanceID           string
	Shape                      Shape
	InitialSettings            map[string]json.RawMessage
	ExpectedManagementRevision uint64
	Now                        time.Time `json:"-"`
}

type CommitUninstallRequest

type CommitUninstallRequest struct {
	PluginInstanceID           string
	DeleteData                 bool
	ExpectedManagementRevision uint64
	RetainUntil                *time.Time
	Now                        time.Time `json:"-"`
}

type CommitUninstallResult

type CommitUninstallResult struct {
	ManagementRevision uint64
	RevokeEpoch        uint64
	DeletedAt          time.Time
}

type Dataset

type Dataset struct {
	Binding Binding `json:"binding"`
	Shape   Shape   `json:"shape"`
}

type DeleteExportRequest

type DeleteExportRequest struct {
	PluginInstanceID string
	ObjectID         string
}

type DeleteRetainedRequest

type DeleteRetainedRequest struct {
	PluginInstanceID        string
	ExpectedBindingRevision uint64
}

type Export

type Export struct {
	ObjectID    string
	ContentHash string
	SizeBytes   int64
	CreatedAt   time.Time
}

type ExportRequest

type ExportRequest struct {
	PluginInstanceID string
}

type FileStore

type FileStore struct {
	// contains filtered or unexported fields
}

func Open

func Open(ctx context.Context, root string, catalog Catalog) (*FileStore, error)

func (*FileStore) BindRetained

func (s *FileStore) BindRetained(ctx context.Context, req BindRetainedRequest) (Dataset, error)

func (*FileStore) CleanupExpired

func (s *FileStore) CleanupExpired(ctx context.Context, now time.Time) (CleanupResult, error)

func (*FileStore) Close

func (s *FileStore) Close() error

func (*FileStore) CommitEnable

func (s *FileStore) CommitEnable(ctx context.Context, req CommitEnableRequest) (Dataset, error)

func (*FileStore) CommitUninstall

func (*FileStore) DeleteExport

func (s *FileStore) DeleteExport(ctx context.Context, req DeleteExportRequest) error

func (*FileStore) DeleteFile

func (s *FileStore) DeleteFile(ctx context.Context, req storage.FileDeleteRequest) error

func (*FileStore) DeleteKV

func (s *FileStore) DeleteKV(ctx context.Context, req storage.KVDeleteRequest) error

func (*FileStore) DeleteRetained

func (s *FileStore) DeleteRetained(ctx context.Context, req DeleteRetainedRequest) error

func (*FileStore) Durable added in v0.6.0

func (*FileStore) Durable() bool

func (*FileStore) ExecSQLite

func (s *FileStore) ExecSQLite(ctx context.Context, req storage.SQLiteExecRequest) (result storage.SQLiteExecResult, resultErr error)

func (*FileStore) Export

func (s *FileStore) Export(ctx context.Context, req ExportRequest) (Export, error)

func (*FileStore) GetKV

func (s *FileStore) GetKV(ctx context.Context, req storage.KVGetRequest) (result storage.KVGetResult, resultErr error)

func (*FileStore) GetSettings

func (s *FileStore) GetSettings(ctx context.Context, pluginInstanceID string, kind sessionctx.ScopeKind) (Settings, error)

func (*FileStore) Import

func (s *FileStore) Import(ctx context.Context, req ImportRequest) (Dataset, error)

func (*FileStore) ListFiles

func (s *FileStore) ListFiles(ctx context.Context, req storage.FileListRequest) (result storage.FileListResult, resultErr error)

func (*FileStore) ListKV

func (s *FileStore) ListKV(ctx context.Context, req storage.KVListRequest) (result storage.KVListResult, resultErr error)

func (*FileStore) ListNamespaces

func (s *FileStore) ListNamespaces(ctx context.Context, pluginInstanceID string) ([]storage.NamespaceRecord, error)

func (*FileStore) ListRetained

func (s *FileStore) ListRetained(ctx context.Context, filter RetainedFilter) ([]Binding, error)

func (*FileStore) PatchSettings

func (s *FileStore) PatchSettings(ctx context.Context, req PatchSettingsRequest) (Settings, error)

func (*FileStore) PutKV

func (s *FileStore) PutKV(ctx context.Context, req storage.KVPutRequest) (result storage.KVPutResult, resultErr error)

func (*FileStore) QuerySQLite

func (s *FileStore) QuerySQLite(ctx context.Context, req storage.SQLiteQueryRequest) (result storage.SQLiteQueryResult, resultErr error)

func (*FileStore) ReadFile

func (s *FileStore) ReadFile(ctx context.Context, req storage.FileReadRequest) (result storage.FileReadResult, resultErr error)

func (*FileStore) Usage

func (s *FileStore) Usage(ctx context.Context, pluginInstanceID string, storeID string) (result storage.Usage, resultErr error)

func (*FileStore) WriteFile

func (s *FileStore) WriteFile(ctx context.Context, req storage.FileWriteRequest) (result storage.FileWriteResult, resultErr error)

type ImportRequest

type ImportRequest struct {
	PluginInstanceID           string
	ObjectID                   string
	ExpectedShape              Shape
	ExpectedManagementRevision uint64
	Now                        time.Time `json:"-"`
}

type MaintenanceBinding

type MaintenanceBinding struct {
	Scope   sessionctx.ResourceScope
	Binding Binding
}

type MaintenanceObject

type MaintenanceObject struct {
	Scope  sessionctx.ResourceScope
	Object Object
}

type Namespace

type Namespace struct {
	ID            string        `json:"id"`
	Kind          NamespaceKind `json:"kind"`
	Scope         string        `json:"scope"`
	SchemaVersion int           `json:"schema_version"`
	QuotaBytes    int64         `json:"quota_bytes"`
	QuotaFiles    int64         `json:"quota_files,omitempty"`
}

type NamespaceKind

type NamespaceKind string
const (
	NamespaceFiles  NamespaceKind = "files"
	NamespaceKV     NamespaceKind = "kv"
	NamespaceSQLite NamespaceKind = "sqlite"
)

type Object

type Object struct {
	PluginInstanceID string    `json:"plugin_instance_id"`
	ObjectID         string    `json:"object_id"`
	ContentHash      string    `json:"content_hash"`
	ShapeHash        string    `json:"shape_hash"`
	SizeBytes        int64     `json:"size_bytes"`
	CreatedAt        time.Time `json:"created_at"`
}

type PatchSettingsRequest

type PatchSettingsRequest struct {
	PluginInstanceID       string
	Scope                  sessionctx.ScopeKind
	ExpectedValuesRevision uint64
	Set                    map[string]json.RawMessage
	Remove                 []string
}

type RetainedFilter

type RetainedFilter struct {
	PluginInstanceID string
}

type Settings

type Settings struct {
	Scope    sessionctx.ScopeKind       `json:"scope"`
	Revision uint64                     `json:"revision"`
	Values   map[string]json.RawMessage `json:"values"`
}

type Shape

type Shape struct {
	PublisherID string                `json:"publisher_id"`
	PluginID    string                `json:"plugin_id"`
	Settings    settingsdomain.Schema `json:"settings"`
	Namespaces  []Namespace           `json:"namespaces"`
}

func ShapeFromManifest

func ShapeFromManifest(value manifest.Manifest) (Shape, error)

type Store

type Store interface {
	Durable() bool
	CommitEnable(ctx context.Context, req CommitEnableRequest) (Dataset, error)
	Export(ctx context.Context, req ExportRequest) (Export, error)
	DeleteExport(ctx context.Context, req DeleteExportRequest) error
	Import(ctx context.Context, req ImportRequest) (Dataset, error)
	BindRetained(ctx context.Context, req BindRetainedRequest) (Dataset, error)
	DeleteRetained(ctx context.Context, req DeleteRetainedRequest) error
	CommitUninstall(ctx context.Context, req CommitUninstallRequest) (CommitUninstallResult, error)
	ListRetained(ctx context.Context, filter RetainedFilter) ([]Binding, error)
	CleanupExpired(ctx context.Context, now time.Time) (CleanupResult, error)
	GetSettings(ctx context.Context, pluginInstanceID string, scope sessionctx.ScopeKind) (Settings, error)
	PatchSettings(ctx context.Context, req PatchSettingsRequest) (Settings, error)
}

Jump to

Keyboard shortcuts

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