controlplane

package
v0.12.1 Latest Latest
Warning

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

Go to latest
Published: Oct 12, 2026 License: Apache-2.0 Imports: 30 Imported by: 0

Documentation

Overview

Package controlplane owns the huma API registration, typed operations, the Handlers seam, and the api/fault → huma problem+json error bridge (ADR-0005).

ADR-0005 owns the routes/contract; P-L/F07 fills Handlers + middleware/admission.

Package controlplane owns the huma API registration, typed operations, the Handlers seam, and the api/fault → huma problem+json error bridge (ADR-0005).

ADR-0005 owns the routes/contract; P-L/F07 fills Handlers + middleware/admission.

Package controlplane: the store-backed Handlers implementation (ADR-0018) that fills ADR-0005's seam. Each of the 15 kinds' CRUD operations runs the same path — authorize (PDP) → admit (validate, writes only) → store — through six non-generic v1.Object helpers; the per-kind methods are thin typed wrappers. No generics, no any.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewAPI

func NewAPI(r chi.Router, h Handlers) huma.API

NewAPI builds the huma API on a chi router and registers all operations against h.

func NewServer

func NewServer(d Deps) (http.Handler, error)

NewServer builds the authenticated, authorized, store-backed control-plane API (ADR-0018): a chi router with the authn middleware mounted, serving the huma operations (ADR-0005) against the store-backed Handlers. The spec/docs endpoints stay public; everything under /apis requires a valid token/API key.

func RegisterAppRetry added in v0.11.0

func RegisterAppRetry(api huma.API, retrier AppRetrier, authz auth.Authorizer)

RegisterAppRetry registers POST …/namespaces/{namespace}/apps/{name}/retry (ADR-0214 Decision 7), an imperative action like the DLQ replay: it authorizes an update of the App and calls the retrier. Being a POST action, it takes no If-Match (ADR-0210).

func RegisterDeadLetters

func RegisterDeadLetters(api huma.API, store deadletter.Store, replayer Replayer, authz auth.Authorizer)

RegisterDeadLetters registers the DLQ read + replay/discard routes (ADR-0118 §4), mirroring the ADR-0106 run-logs route shape:

GET    …/namespaces/{ns}/deadletters        → list    (read — authorizes get/Sensor)
GET    …/namespaces/{ns}/deadletters/{id}   → describe (read — authorizes get/Sensor)
POST   …/namespaces/{ns}/deadletters/{id}/replay → replay (imperative — authorizes delete/Sensor)
DELETE …/namespaces/{ns}/deadletters/{id}   → discard  (CRUD delete — authorizes delete/Sensor)

The read routes stay purely read-only (GET), following the ADR-0106 precedent — replay is the sole imperative departure. Read authorizes a get verb; replay/discard authorize a DLQ-write (delete) verb.

func RegisterHold added in v0.11.0

func RegisterHold(api huma.API, h Holder, authz auth.Authorizer)

RegisterHold registers the hold routes (ADR-0206 Decision 8), cluster-scoped and admin-only as ADR-0205's backup status: GET …/hold authorizes get on WorkerNode, POST …/hold/release update; a release of namespaces (ADR-0222 Decision 8) authorizes update on the Namespace instead.

func RegisterLogs

func RegisterLogs(api huma.API, q LogQuerier, authz auth.Authorizer)

RegisterLogs registers the namespaced function-logs read operation. It authorizes get/Function in the namespace BEFORE reading — the ADR-0084 query-time tenant scope: admin sees any namespace, developer/viewer only a bound one, else 403. The readable namespace is the authorized path segment, never a client-asserted filter. NewServer calls it when a reader is configured; spec generation calls RegisterStubLogs so the operation is documented in the committed OpenAPI.

func RegisterPlatformBackup added in v0.11.0

func RegisterPlatformBackup(api huma.API, s BackupStatuser, authz auth.Authorizer)

RegisterPlatformBackup registers GET /apis/funcd.io/v1alpha1/platformbackup. It authorizes get on the cluster-scoped WorkerNode, so only an admin reads it; a failed listing of the target is 503. A nil s (no backup stream on) reads enabled: false.

func RegisterRoutes

func RegisterRoutes(api huma.API, h Handlers)

RegisterRoutes registers every kind's CRUD operation on api, dispatching to h.

func RegisterStubAppRetry added in v0.11.0

func RegisterStubAppRetry(api huma.API)

RegisterStubAppRetry registers the retry operation with inert deps for spec generation.

func RegisterStubDeadLetters

func RegisterStubDeadLetters(api huma.API)

RegisterStubDeadLetters registers the DLQ operations with inert deps for spec generation, so the routes are documented in the committed OpenAPI even though they mount at runtime only when the store is present.

func RegisterStubHold added in v0.11.0

func RegisterStubHold(api huma.API)

RegisterStubHold registers the hold routes with inert deps for spec generation.

func RegisterStubLogs

func RegisterStubLogs(api huma.API)

RegisterStubLogs registers the logs operation with inert deps — for spec generation (specgen + the golden test), where only the operation shape matters, so the route is documented in the committed spec even though it is mounted at runtime only when a blob substrate is present.

func RegisterStubPlatformBackup added in v0.11.0

func RegisterStubPlatformBackup(api huma.API)

RegisterStubPlatformBackup registers the platform backup route for spec generation.

func RegisterStubWorkflowRunLogs

func RegisterStubWorkflowRunLogs(api huma.API)

RegisterStubWorkflowRunLogs registers the run-logs operation with inert deps for spec generation, so the route is documented in the committed OpenAPI even though it mounts at runtime only with a blob substrate.

func RegisterWorkflowRunLogs

func RegisterWorkflowRunLogs(api huma.API, q WorkflowRunLogQuerier, authz auth.Authorizer)

RegisterWorkflowRunLogs registers GET …/workflowruns/{name}/logs (ADR-0106): it authorizes get/WorkflowRun in the namespace, resolves the run's status.traceId, and returns the namespace-wide, trace-filtered logs (the whole composition). NewServer calls it when a run-log querier is configured; spec generation uses the stub so the route is documented in the committed OpenAPI.

Types

type AppPlanner added in v0.11.0

type AppPlanner interface {
	PlanApp(ctx context.Context, app *v1.App) (v1.AppPlan, error) // reads the store, writes nothing
}

AppPlanner plans the rollout of an App write (ADR-0220 Decision 5); internal/app implements it, so the control plane does not import the App package.

type AppRetrier added in v0.11.0

type AppRetrier interface {
	Retry(ctx context.Context, ns v1.NamespaceName, app v1.ObjectName) error
}

AppRetrier is the App reconciler's retry seam (ADR-0214 Decision 7): it starts again, without waiting, the failed hook of an App's latest revision.

type BackupStatuser added in v0.11.0

type BackupStatuser interface {
	Status(ctx context.Context) (runner.Status, error)
}

BackupStatuser reads the platform backup's status (ADR-0205 Decision 4); *runner.Runner is one.

type Deps

type Deps struct {
	Store       store.Store
	Authorizer  auth.Authorizer
	Credentials middleware.CredentialStore
	Logger      *slog.Logger
	// Admissions are extra admissions registered on the write-path pipeline (ADR-0063), appended
	// after the built-in validate admission. ADR-0064 passes the link admissions here. Optional.
	Admissions []admission.Admission
	// Logs is the function-log reader (ADR-0084). Optional; when set, NewServer registers the
	// namespaced GET …/functions/{name}/logs route (authorized get/Function per caller).
	Logs LogQuerier
	// RunLogs is the run-scoped log querier (ADR-0106). Optional; when set, NewServer registers
	// GET …/workflowruns/{name}/logs (authorized get/WorkflowRun; resolves status.traceId).
	RunLogs WorkflowRunLogQuerier
	// DeadLetters is the eventing DLQ store (ADR-0118). Optional; when set (with Replayer), NewServer
	// registers the DLQ read + replay/discard routes under …/namespaces/{ns}/deadletters.
	DeadLetters deadletter.Store
	// Replayer performs the imperative DLQ replay (ADR-0118 §4). Required alongside DeadLetters.
	Replayer Replayer
	// Collector is the owner garbage collector a forced ResourceGroup delete runs (ADR-0170). Optional; nil ⇒
	// force answers fault.Unavailable.
	Collector OwnerCollector
	// AppRetrier retries an App's failed hook (ADR-0214). Optional; when set, NewServer registers POST
	// …/apps/{name}/retry.
	AppRetrier AppRetrier
	// Backup reads the platform backup's status (ADR-0205). Optional; nil ⇒ the route reads enabled: false.
	Backup BackupStatuser
	// Hold is the platform hold's status and release (ADR-0206). Optional; when set, NewServer registers
	// GET …/hold and POST …/hold/release.
	Hold Holder
	// Planner plans a dry-run App write (ADR-0220). Optional; nil ⇒ a dry-run App create or replace answers
	// fault.Unavailable.
	Planner AppPlanner
}

Deps configures the control-plane API server (ADR-0018, internal component).

type DryRunParams added in v0.11.0

type DryRunParams struct {
	DryRun bool `query:"dryRun" doc:"admit the write and store nothing (ADR-0220)"`
}

DryRunParams is embedded in every create and replace input of a writable kind (ADR-0220 Decision 1). It is exported because huma skips unexported embedded fields.

type Handlers

type Handlers interface {
	// Namespace (cluster-scoped)
	GetNamespace(ctx context.Context, name v1.ObjectName) (v1.Namespace, error)
	CreateNamespace(ctx context.Context, ns v1.Namespace) (v1.Namespace, error)
	ListNamespaces(ctx context.Context) ([]v1.Namespace, error)
	ReplaceNamespace(ctx context.Context, name v1.ObjectName, ns v1.Namespace) (v1.Namespace, error)
	DeleteNamespace(ctx context.Context, name v1.ObjectName, rv string) error

	// ResourceGroup (namespaced)
	GetResourceGroup(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.ResourceGroup, error)
	CreateResourceGroup(ctx context.Context, rg v1.ResourceGroup) (v1.ResourceGroup, error)
	ListResourceGroups(ctx context.Context, ns v1.NamespaceName) ([]v1.ResourceGroup, error)
	ReplaceResourceGroup(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, rg v1.ResourceGroup) (v1.ResourceGroup, error)
	DeleteResourceGroup(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, force bool, rv string) error

	// Function (namespaced)
	GetFunction(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.Function, error)
	CreateFunction(ctx context.Context, fn v1.Function) (v1.Function, error)
	ListFunctions(ctx context.Context, ns v1.NamespaceName) ([]v1.Function, error)
	ReplaceFunction(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, fn v1.Function) (v1.Function, error)
	DeleteFunction(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, rv string) error

	// Revision (namespaced)
	GetRevision(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.Revision, error)
	ListRevisions(ctx context.Context, ns v1.NamespaceName) ([]v1.Revision, error)

	// Route (namespaced)
	GetRoute(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.Route, error)
	CreateRoute(ctx context.Context, rt v1.Route) (v1.Route, error)
	ListRoutes(ctx context.Context, ns v1.NamespaceName) ([]v1.Route, error)
	ReplaceRoute(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, rt v1.Route) (v1.Route, error)
	DeleteRoute(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, rv string) error

	// Service (namespaced)
	GetService(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.Service, error)
	CreateService(ctx context.Context, svc v1.Service) (v1.Service, error)
	ListServices(ctx context.Context, ns v1.NamespaceName) ([]v1.Service, error)
	ReplaceService(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, svc v1.Service) (v1.Service, error)
	DeleteService(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, rv string) error

	// EventSource (namespaced)
	GetEventSource(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.EventSource, error)
	CreateEventSource(ctx context.Context, es v1.EventSource) (v1.EventSource, error)
	ListEventSources(ctx context.Context, ns v1.NamespaceName) ([]v1.EventSource, error)
	ReplaceEventSource(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, es v1.EventSource) (v1.EventSource, error)
	DeleteEventSource(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, rv string) error

	// ConfigMap (namespaced)
	GetConfigMap(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.ConfigMap, error)
	CreateConfigMap(ctx context.Context, cfg v1.ConfigMap) (v1.ConfigMap, error)
	ListConfigMaps(ctx context.Context, ns v1.NamespaceName) ([]v1.ConfigMap, error)
	ReplaceConfigMap(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, cfg v1.ConfigMap) (v1.ConfigMap, error)
	DeleteConfigMap(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, rv string) error

	// Secret (namespaced)
	GetSecret(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.Secret, error)
	CreateSecret(ctx context.Context, sec v1.Secret) (v1.Secret, error)
	ListSecrets(ctx context.Context, ns v1.NamespaceName) ([]v1.Secret, error)
	ReplaceSecret(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, sec v1.Secret) (v1.Secret, error)
	DeleteSecret(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, rv string) error

	// Grant (namespaced)
	GetGrant(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.Grant, error)
	CreateGrant(ctx context.Context, g v1.Grant) (v1.Grant, error)
	ListGrants(ctx context.Context, ns v1.NamespaceName) ([]v1.Grant, error)
	ReplaceGrant(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, g v1.Grant) (v1.Grant, error)
	DeleteGrant(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, rv string) error

	// EgressPolicy (namespaced)
	GetEgressPolicy(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.EgressPolicy, error)
	CreateEgressPolicy(ctx context.Context, ep v1.EgressPolicy) (v1.EgressPolicy, error)
	ListEgressPolicies(ctx context.Context, ns v1.NamespaceName) ([]v1.EgressPolicy, error)
	ReplaceEgressPolicy(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, ep v1.EgressPolicy) (v1.EgressPolicy, error)
	DeleteEgressPolicy(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, rv string) error

	// Invocation (namespaced)
	GetInvocation(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.Invocation, error)
	CreateInvocation(ctx context.Context, inv v1.Invocation) (v1.Invocation, error)
	ListInvocations(ctx context.Context, ns v1.NamespaceName) ([]v1.Invocation, error)
	ReplaceInvocation(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, inv v1.Invocation) (v1.Invocation, error)
	DeleteInvocation(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, rv string) error

	// RuntimeClass (cluster-scoped)
	GetRuntimeClass(ctx context.Context, name v1.ObjectName) (v1.RuntimeClass, error)
	CreateRuntimeClass(ctx context.Context, rc v1.RuntimeClass) (v1.RuntimeClass, error)
	ListRuntimeClasses(ctx context.Context) ([]v1.RuntimeClass, error)
	ReplaceRuntimeClass(ctx context.Context, name v1.ObjectName, rc v1.RuntimeClass) (v1.RuntimeClass, error)
	DeleteRuntimeClass(ctx context.Context, name v1.ObjectName, rv string) error

	// WorkerNode (cluster-scoped)
	GetWorkerNode(ctx context.Context, name v1.ObjectName) (v1.WorkerNode, error)
	CreateWorkerNode(ctx context.Context, w v1.WorkerNode) (v1.WorkerNode, error)
	ListWorkerNodes(ctx context.Context) ([]v1.WorkerNode, error)
	ReplaceWorkerNode(ctx context.Context, name v1.ObjectName, w v1.WorkerNode) (v1.WorkerNode, error)
	DeleteWorkerNode(ctx context.Context, name v1.ObjectName, rv string) error

	// Gateway (cluster-scoped)
	GetGateway(ctx context.Context, name v1.ObjectName) (v1.Gateway, error)
	CreateGateway(ctx context.Context, gw v1.Gateway) (v1.Gateway, error)
	ListGateways(ctx context.Context) ([]v1.Gateway, error)
	ReplaceGateway(ctx context.Context, name v1.ObjectName, gw v1.Gateway) (v1.Gateway, error)
	DeleteGateway(ctx context.Context, name v1.ObjectName, rv string) error

	// KVStore (namespaced) — ADR-0072
	GetKVStore(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.KVStore, error)
	CreateKVStore(ctx context.Context, ks v1.KVStore) (v1.KVStore, error)
	ListKVStores(ctx context.Context, ns v1.NamespaceName) ([]v1.KVStore, error)
	ReplaceKVStore(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, ks v1.KVStore) (v1.KVStore, error)
	DeleteKVStore(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, rv string) error
	// HandoverKVStore makes workflow the owner of a kept store (ADR-0178 Decision 6).
	HandoverKVStore(ctx context.Context, ns v1.NamespaceName, name, workflow v1.ObjectName) (v1.KVStore, error)

	// Bucket (namespaced) — ADR-0080
	GetBucket(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.Bucket, error)
	CreateBucket(ctx context.Context, b v1.Bucket) (v1.Bucket, error)
	ListBuckets(ctx context.Context, ns v1.NamespaceName) ([]v1.Bucket, error)
	ReplaceBucket(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, b v1.Bucket) (v1.Bucket, error)
	DeleteBucket(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, rv string) error

	// CatalogService (namespaced) — ADR-0086
	GetCatalogService(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.CatalogService, error)
	CreateCatalogService(ctx context.Context, cs v1.CatalogService) (v1.CatalogService, error)
	ListCatalogServices(ctx context.Context, ns v1.NamespaceName) ([]v1.CatalogService, error)
	ReplaceCatalogService(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, cs v1.CatalogService) (v1.CatalogService, error)
	DeleteCatalogService(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, rv string) error

	// Identity (namespaced) — ADR-0135, FEAT-0008/F100
	GetIdentity(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.Identity, error)
	CreateIdentity(ctx context.Context, id v1.Identity) (v1.Identity, error)
	ListIdentities(ctx context.Context, ns v1.NamespaceName) ([]v1.Identity, error)
	ReplaceIdentity(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, id v1.Identity) (v1.Identity, error)
	DeleteIdentity(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, rv string) error

	// Role + RolesAssignment (namespaced) — ADR-0136, FEAT-0008/F101
	GetRole(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.Role, error)
	CreateRole(ctx context.Context, ro v1.Role) (v1.Role, error)
	ListRoles(ctx context.Context, ns v1.NamespaceName) ([]v1.Role, error)
	ReplaceRole(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, ro v1.Role) (v1.Role, error)
	DeleteRole(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, rv string) error
	GetRolesAssignment(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.RolesAssignment, error)
	CreateRolesAssignment(ctx context.Context, ra v1.RolesAssignment) (v1.RolesAssignment, error)
	ListRolesAssignments(ctx context.Context, ns v1.NamespaceName) ([]v1.RolesAssignment, error)
	ReplaceRolesAssignment(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, ra v1.RolesAssignment) (v1.RolesAssignment, error)
	DeleteRolesAssignment(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, rv string) error

	// Site (namespaced) — ADR-0139, FEAT-0003/F103
	GetSite(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.Site, error)
	CreateSite(ctx context.Context, si v1.Site) (v1.Site, error)
	ListSites(ctx context.Context, ns v1.NamespaceName) ([]v1.Site, error)
	ReplaceSite(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, si v1.Site) (v1.Site, error)
	DeleteSite(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, rv string) error

	// App (namespaced) — ADR-0199, FEAT-0010/F113
	GetApp(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.App, error)
	CreateApp(ctx context.Context, app v1.App) (v1.App, error)
	ListApps(ctx context.Context, ns v1.NamespaceName) ([]v1.App, error)
	ReplaceApp(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, app v1.App) (v1.App, error)
	DeleteApp(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, rv string) error

	// AppRevision (namespaced, read-only) — ADR-0200, FEAT-0010/F114
	GetAppRevision(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.AppRevision, error)
	ListAppRevisions(ctx context.Context, ns v1.NamespaceName) ([]v1.AppRevision, error)

	// BackupSchedule, Backup and Restore (namespaced) — ADR-0222, FEAT-0009/F111
	GetBackupSchedule(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.BackupSchedule, error)
	CreateBackupSchedule(ctx context.Context, s v1.BackupSchedule) (v1.BackupSchedule, error)
	ListBackupSchedules(ctx context.Context, ns v1.NamespaceName) ([]v1.BackupSchedule, error)
	ReplaceBackupSchedule(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, s v1.BackupSchedule) (v1.BackupSchedule, error)
	DeleteBackupSchedule(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, rv string) error
	GetBackup(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.Backup, error)
	CreateBackup(ctx context.Context, b v1.Backup) (v1.Backup, error)
	ListBackups(ctx context.Context, ns v1.NamespaceName) ([]v1.Backup, error)
	ReplaceBackup(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, b v1.Backup) (v1.Backup, error)
	DeleteBackup(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, rv string) error
	GetRestore(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.Restore, error)
	CreateRestore(ctx context.Context, r v1.Restore) (v1.Restore, error)
	ListRestores(ctx context.Context, ns v1.NamespaceName) ([]v1.Restore, error)
	ReplaceRestore(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, r v1.Restore) (v1.Restore, error)
	DeleteRestore(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, rv string) error

	// Policy (namespaced) — ADR-0074
	GetPolicy(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.Policy, error)
	CreatePolicy(ctx context.Context, pol v1.Policy) (v1.Policy, error)
	ListPolicies(ctx context.Context, ns v1.NamespaceName) ([]v1.Policy, error)
	ReplacePolicy(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, pol v1.Policy) (v1.Policy, error)
	DeletePolicy(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, rv string) error

	// Workflow (namespaced) — ADR-0094
	GetWorkflow(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.Workflow, error)
	CreateWorkflow(ctx context.Context, wf v1.Workflow) (v1.Workflow, error)
	ListWorkflows(ctx context.Context, ns v1.NamespaceName) ([]v1.Workflow, error)
	ReplaceWorkflow(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, wf v1.Workflow) (v1.Workflow, error)
	DeleteWorkflow(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, rv string) error

	// WorkflowRun (namespaced) — ADR-0094
	GetWorkflowRun(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.WorkflowRun, error)
	CreateWorkflowRun(ctx context.Context, run v1.WorkflowRun) (v1.WorkflowRun, error)
	ListWorkflowRuns(ctx context.Context, ns v1.NamespaceName) ([]v1.WorkflowRun, error)
	ReplaceWorkflowRun(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, run v1.WorkflowRun) (v1.WorkflowRun, error)
	DeleteWorkflowRun(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, rv string) error

	// Sensor (namespaced) — ADR-0109
	GetSensor(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.Sensor, error)
	CreateSensor(ctx context.Context, se v1.Sensor) (v1.Sensor, error)
	ListSensors(ctx context.Context, ns v1.NamespaceName) ([]v1.Sensor, error)
	ReplaceSensor(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, se v1.Sensor) (v1.Sensor, error)
	DeleteSensor(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, rv string) error
}

Handlers is the seam: one method per operation. Stub impl for spec-gen + tests; real impl (store/controller-backed) is provided by P-L/F07.

func NewStoreHandlers

func NewStoreHandlers(st store.Store, authz auth.Authorizer, admit *admission.Pipeline, collector OwnerCollector, planner AppPlanner) Handlers

NewStoreHandlers builds the store-backed control-plane Handlers (ADR-0018). The admission pipeline (ADR-0063) is the admit step on every write; pass admission.NewPipeline(...).

type HoldDeps added in v0.11.0

type HoldDeps struct {
	Hold        *hold.Hold
	Store       store.Store
	DeadLetters deadletter.Store
	Platform    HoldPlatform
	Clock       clock.Clock
}

HoldDeps are the hold service's dependencies; Hold nil is a platform never held. Clock nil ⇒ clock.System().

type HoldPlatform added in v0.11.0

type HoldPlatform interface {
	Counts(ctx context.Context) (map[v1.Kind]int, error)
	Orphans(ctx context.Context) ([]string, error)
	BucketOrphans(ctx context.Context) ([]v1.ObjectRef, error)
	Advance(ctx context.Context, ns v1.NamespaceName, source v1.ObjectName) error
	Pending(ctx context.Context, ns v1.NamespaceName, source v1.ObjectName) (map[string]int, error)
}

HoldPlatform is what the hold's status and release read from the assembled platform (ADR-0206 Decisions 1, 8): the objects per kind, the data the boot reclaims would drop, and the blob watcher's seen lists.

type HoldService added in v0.11.0

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

HoldService reads the hold's evidence and releases it (ADR-0206 Decision 8).

func NewHoldService added in v0.11.0

func NewHoldService(d HoldDeps) *HoldService

NewHoldService builds the hold service.

func (*HoldService) Release added in v0.11.0

func (s *HoldService) Release(ctx context.Context, advance []string) error

Release lifts the hold (Decision 8): not held ⇒ fault.Conflict; an advance naming no blob event of an existing EventSource ⇒ fault.Invalid; both before any change. Then each source advances, rerun-safe (a failure returns with the marker kept), and the hold writes the release time and deletes the marker.

func (*HoldService) ReleaseNamespaces added in v0.11.0

func (s *HoldService) ReleaseNamespaces(ctx context.Context, nss []v1.NamespaceName) error

ReleaseNamespaces removes the markers holding each of nss (ADR-0222 Decision 8): the data marker restore run left, and the restore marker of an in-place Restore that ended without lifting it (Interrupted). A namespace not held, or whose restore marker names a Restore still Pending or Running, is fault.Conflict, the ones before it released.

func (*HoldService) Status added in v0.11.0

func (s *HoldService) Status(ctx context.Context) (hold.Evidence, error)

Status is the hold's evidence (Decision 1): the marker, the restore report, the counts now, the paused runs, the dead letters, the blob keys a release replays, the data with no object, and the Functions not Ready.

type Holder added in v0.11.0

type Holder interface {
	Status(ctx context.Context) (hold.Evidence, error)
	Release(ctx context.Context, advance []string) error
	ReleaseNamespaces(ctx context.Context, nss []v1.NamespaceName) error
}

Holder is the hold's status and release the routes call.

type IfMatchParams added in v0.11.0

type IfMatchParams struct {
	IfMatch string `header:"If-Match" doc:"one strong entity-tag \"<resourceVersion>\" or *; the write is conditional on it (ADR-0210)"`
	// contains filtered or unexported fields
}

IfMatchParams is embedded in every PUT and DELETE input (ADR-0210 Decision 1). It is exported because huma skips unexported embedded fields.

func (*IfMatchParams) Resolve added in v0.11.0

func (p *IfMatchParams) Resolve(ctx huma.Context) []error

Resolve reads every If-Match line, as huma's own header binding keeps only the first: rv is "" when the header is absent or "*", else the one strong entity-tag unquoted. The version itself is never parsed (ADR-0202).

type KVStoreHandover added in v0.5.0

type KVStoreHandover struct {
	Workflow v1.ObjectName `json:"workflow"`
}

KVStoreHandover is the handover request body: the Workflow that becomes the store's owner.

type LogQuerier

type LogQuerier interface {
	Read(ctx context.Context, q logread.Query) ([]logread.Line, error)
}

LogQuerier is the control-plane's view of the function-log reader (logread.Reader, ADR-0084). An optional server dep; when set, NewServer registers GET …/functions/{name}/logs.

type OwnerCollector added in v0.4.0

type OwnerCollector interface {
	CollectNamespace(ctx context.Context, ns v1.NamespaceName) error
}

OwnerCollector collects the dead-owned children of a namespace (internal/gc.Collector, ADR-0170).

type PlatformBackupStatus added in v0.11.0

type PlatformBackupStatus runner.Status

PlatformBackupStatus is runner.Status under a schema name apart from v1alpha1.Status.

type Replayer

type Replayer interface {
	Replay(ctx context.Context, ns v1.NamespaceName, id string) error
}

Replayer is the replay seam the DLQ route needs from the Sensor reconciler (ADR-0118 §4). It performs ONE synchronous delivery attempt against the LIVE Sensor spec — the deliberate imperative departure from the ADR-0094 store-CRUD-only stance, scoped to this one method (a DeadLetter is not a CRD, so there is no reconcile loop to observe a declarative replay marker).

type RunLogGetter

type RunLogGetter interface {
	Get(ctx context.Context, gvk v1.GroupVersionKind, ns v1.NamespaceName, name v1.ObjectName) (v1.Object, error)
}

RunLogGetter is the minimal metastore view the run-log querier needs (ADR-0106): Get a WorkflowRun (for its status.traceId) and, for a run with no pinned spec, its Workflow. store.Store satisfies it.

type RunRecordGetter added in v0.6.1

type RunRecordGetter interface {
	Get(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName) (*runstate.Record, error)
}

RunRecordGetter is the engine's run-state view the run-log querier resolves --step against: the spec a run pinned at start (ADR-0094). runstate.Store satisfies it.

type StubHandlers

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

StubHandlers is an in-memory Handlers implementation for spec-gen and tests. P-L/F07 replaces it with real store/controller-backed handlers.

func NewStubHandlers

func NewStubHandlers() *StubHandlers

NewStubHandlers returns an initialized StubHandlers.

func (*StubHandlers) CreateApp added in v0.9.0

func (s *StubHandlers) CreateApp(_ context.Context, app v1.App) (v1.App, error)

func (*StubHandlers) CreateBackup added in v0.11.0

func (s *StubHandlers) CreateBackup(_ context.Context, b v1.Backup) (v1.Backup, error)

func (*StubHandlers) CreateBackupSchedule added in v0.11.0

func (s *StubHandlers) CreateBackupSchedule(_ context.Context, b v1.BackupSchedule) (v1.BackupSchedule, error)

func (*StubHandlers) CreateBucket

func (s *StubHandlers) CreateBucket(_ context.Context, b v1.Bucket) (v1.Bucket, error)

func (*StubHandlers) CreateCatalogService

func (s *StubHandlers) CreateCatalogService(_ context.Context, cs v1.CatalogService) (v1.CatalogService, error)

func (*StubHandlers) CreateConfigMap

func (s *StubHandlers) CreateConfigMap(_ context.Context, cfg v1.ConfigMap) (v1.ConfigMap, error)

func (*StubHandlers) CreateEgressPolicy

func (s *StubHandlers) CreateEgressPolicy(_ context.Context, ep v1.EgressPolicy) (v1.EgressPolicy, error)

func (*StubHandlers) CreateEventSource

func (s *StubHandlers) CreateEventSource(_ context.Context, es v1.EventSource) (v1.EventSource, error)

func (*StubHandlers) CreateFunction

func (s *StubHandlers) CreateFunction(_ context.Context, fn v1.Function) (v1.Function, error)

func (*StubHandlers) CreateGateway

func (s *StubHandlers) CreateGateway(_ context.Context, gw v1.Gateway) (v1.Gateway, error)

func (*StubHandlers) CreateGrant

func (s *StubHandlers) CreateGrant(_ context.Context, g v1.Grant) (v1.Grant, error)

func (*StubHandlers) CreateIdentity

func (s *StubHandlers) CreateIdentity(_ context.Context, id v1.Identity) (v1.Identity, error)

func (*StubHandlers) CreateInvocation

func (s *StubHandlers) CreateInvocation(_ context.Context, inv v1.Invocation) (v1.Invocation, error)

func (*StubHandlers) CreateKVStore

func (s *StubHandlers) CreateKVStore(_ context.Context, ks v1.KVStore) (v1.KVStore, error)

func (*StubHandlers) CreateNamespace

func (s *StubHandlers) CreateNamespace(_ context.Context, ns v1.Namespace) (v1.Namespace, error)

func (*StubHandlers) CreatePolicy

func (s *StubHandlers) CreatePolicy(_ context.Context, pol v1.Policy) (v1.Policy, error)

func (*StubHandlers) CreateResourceGroup

func (s *StubHandlers) CreateResourceGroup(_ context.Context, rg v1.ResourceGroup) (v1.ResourceGroup, error)

func (*StubHandlers) CreateRestore added in v0.11.0

func (s *StubHandlers) CreateRestore(_ context.Context, r v1.Restore) (v1.Restore, error)

func (*StubHandlers) CreateRole

func (s *StubHandlers) CreateRole(_ context.Context, ro v1.Role) (v1.Role, error)

func (*StubHandlers) CreateRolesAssignment

func (s *StubHandlers) CreateRolesAssignment(_ context.Context, ra v1.RolesAssignment) (v1.RolesAssignment, error)

func (*StubHandlers) CreateRoute

func (s *StubHandlers) CreateRoute(_ context.Context, rt v1.Route) (v1.Route, error)

func (*StubHandlers) CreateRuntimeClass

func (s *StubHandlers) CreateRuntimeClass(_ context.Context, rc v1.RuntimeClass) (v1.RuntimeClass, error)

func (*StubHandlers) CreateSecret

func (s *StubHandlers) CreateSecret(_ context.Context, sec v1.Secret) (v1.Secret, error)

func (*StubHandlers) CreateSensor

func (s *StubHandlers) CreateSensor(_ context.Context, se v1.Sensor) (v1.Sensor, error)

func (*StubHandlers) CreateService

func (s *StubHandlers) CreateService(_ context.Context, svc v1.Service) (v1.Service, error)

func (*StubHandlers) CreateSite

func (s *StubHandlers) CreateSite(_ context.Context, si v1.Site) (v1.Site, error)

func (*StubHandlers) CreateWorkerNode

func (s *StubHandlers) CreateWorkerNode(_ context.Context, wr v1.WorkerNode) (v1.WorkerNode, error)

func (*StubHandlers) CreateWorkflow

func (s *StubHandlers) CreateWorkflow(_ context.Context, wf v1.Workflow) (v1.Workflow, error)

func (*StubHandlers) CreateWorkflowRun

func (s *StubHandlers) CreateWorkflowRun(_ context.Context, run v1.WorkflowRun) (v1.WorkflowRun, error)

func (*StubHandlers) DeleteApp added in v0.9.0

func (s *StubHandlers) DeleteApp(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, _ string) error

func (*StubHandlers) DeleteBackup added in v0.11.0

func (s *StubHandlers) DeleteBackup(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, _ string) error

func (*StubHandlers) DeleteBackupSchedule added in v0.11.0

func (s *StubHandlers) DeleteBackupSchedule(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, _ string) error

func (*StubHandlers) DeleteBucket

func (s *StubHandlers) DeleteBucket(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, _ string) error

func (*StubHandlers) DeleteCatalogService

func (s *StubHandlers) DeleteCatalogService(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, _ string) error

func (*StubHandlers) DeleteConfigMap

func (s *StubHandlers) DeleteConfigMap(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, _ string) error

func (*StubHandlers) DeleteEgressPolicy

func (s *StubHandlers) DeleteEgressPolicy(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, _ string) error

func (*StubHandlers) DeleteEventSource

func (s *StubHandlers) DeleteEventSource(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, _ string) error

func (*StubHandlers) DeleteFunction

func (s *StubHandlers) DeleteFunction(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, _ string) error

func (*StubHandlers) DeleteGateway

func (s *StubHandlers) DeleteGateway(_ context.Context, name v1.ObjectName, _ string) error

func (*StubHandlers) DeleteGrant

func (s *StubHandlers) DeleteGrant(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, _ string) error

func (*StubHandlers) DeleteIdentity

func (s *StubHandlers) DeleteIdentity(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, _ string) error

func (*StubHandlers) DeleteInvocation

func (s *StubHandlers) DeleteInvocation(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, _ string) error

func (*StubHandlers) DeleteKVStore

func (s *StubHandlers) DeleteKVStore(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, _ string) error

func (*StubHandlers) DeleteNamespace

func (s *StubHandlers) DeleteNamespace(_ context.Context, name v1.ObjectName, _ string) error

func (*StubHandlers) DeletePolicy

func (s *StubHandlers) DeletePolicy(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, _ string) error

func (*StubHandlers) DeleteResourceGroup

func (s *StubHandlers) DeleteResourceGroup(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, _ bool, _ string) error

func (*StubHandlers) DeleteRestore added in v0.11.0

func (s *StubHandlers) DeleteRestore(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, _ string) error

func (*StubHandlers) DeleteRole

func (s *StubHandlers) DeleteRole(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, _ string) error

func (*StubHandlers) DeleteRolesAssignment

func (s *StubHandlers) DeleteRolesAssignment(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, _ string) error

func (*StubHandlers) DeleteRoute

func (s *StubHandlers) DeleteRoute(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, _ string) error

func (*StubHandlers) DeleteRuntimeClass

func (s *StubHandlers) DeleteRuntimeClass(_ context.Context, name v1.ObjectName, _ string) error

func (*StubHandlers) DeleteSecret

func (s *StubHandlers) DeleteSecret(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, _ string) error

func (*StubHandlers) DeleteSensor

func (s *StubHandlers) DeleteSensor(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, _ string) error

func (*StubHandlers) DeleteService

func (s *StubHandlers) DeleteService(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, _ string) error

func (*StubHandlers) DeleteSite

func (s *StubHandlers) DeleteSite(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, _ string) error

func (*StubHandlers) DeleteWorkerNode

func (s *StubHandlers) DeleteWorkerNode(_ context.Context, name v1.ObjectName, _ string) error

func (*StubHandlers) DeleteWorkflow

func (s *StubHandlers) DeleteWorkflow(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, _ string) error

func (*StubHandlers) DeleteWorkflowRun

func (s *StubHandlers) DeleteWorkflowRun(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, _ string) error

func (*StubHandlers) GetApp added in v0.9.0

func (s *StubHandlers) GetApp(_ context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.App, error)

func (*StubHandlers) GetAppRevision added in v0.9.0

func (s *StubHandlers) GetAppRevision(_ context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.AppRevision, error)

func (*StubHandlers) GetBackup added in v0.11.0

func (s *StubHandlers) GetBackup(_ context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.Backup, error)

func (*StubHandlers) GetBackupSchedule added in v0.11.0

func (s *StubHandlers) GetBackupSchedule(_ context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.BackupSchedule, error)

func (*StubHandlers) GetBucket

func (s *StubHandlers) GetBucket(_ context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.Bucket, error)

func (*StubHandlers) GetCatalogService

func (s *StubHandlers) GetCatalogService(_ context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.CatalogService, error)

func (*StubHandlers) GetConfigMap

func (s *StubHandlers) GetConfigMap(_ context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.ConfigMap, error)

func (*StubHandlers) GetEgressPolicy

func (s *StubHandlers) GetEgressPolicy(_ context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.EgressPolicy, error)

func (*StubHandlers) GetEventSource

func (s *StubHandlers) GetEventSource(_ context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.EventSource, error)

func (*StubHandlers) GetFunction

func (s *StubHandlers) GetFunction(_ context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.Function, error)

func (*StubHandlers) GetGateway

func (s *StubHandlers) GetGateway(_ context.Context, name v1.ObjectName) (v1.Gateway, error)

func (*StubHandlers) GetGrant

func (s *StubHandlers) GetGrant(_ context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.Grant, error)

func (*StubHandlers) GetIdentity

func (s *StubHandlers) GetIdentity(_ context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.Identity, error)

func (*StubHandlers) GetInvocation

func (s *StubHandlers) GetInvocation(_ context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.Invocation, error)

func (*StubHandlers) GetKVStore

func (s *StubHandlers) GetKVStore(_ context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.KVStore, error)

func (*StubHandlers) GetNamespace

func (s *StubHandlers) GetNamespace(_ context.Context, name v1.ObjectName) (v1.Namespace, error)

func (*StubHandlers) GetPolicy

func (s *StubHandlers) GetPolicy(_ context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.Policy, error)

func (*StubHandlers) GetResourceGroup

func (s *StubHandlers) GetResourceGroup(_ context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.ResourceGroup, error)

func (*StubHandlers) GetRestore added in v0.11.0

func (s *StubHandlers) GetRestore(_ context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.Restore, error)

func (*StubHandlers) GetRevision

func (s *StubHandlers) GetRevision(_ context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.Revision, error)

func (*StubHandlers) GetRole

func (s *StubHandlers) GetRole(_ context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.Role, error)

func (*StubHandlers) GetRolesAssignment

func (s *StubHandlers) GetRolesAssignment(_ context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.RolesAssignment, error)

func (*StubHandlers) GetRoute

func (s *StubHandlers) GetRoute(_ context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.Route, error)

func (*StubHandlers) GetRuntimeClass

func (s *StubHandlers) GetRuntimeClass(_ context.Context, name v1.ObjectName) (v1.RuntimeClass, error)

func (*StubHandlers) GetSecret

func (s *StubHandlers) GetSecret(_ context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.Secret, error)

func (*StubHandlers) GetSensor

func (s *StubHandlers) GetSensor(_ context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.Sensor, error)

func (*StubHandlers) GetService

func (s *StubHandlers) GetService(_ context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.Service, error)

func (*StubHandlers) GetSite

func (s *StubHandlers) GetSite(_ context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.Site, error)

func (*StubHandlers) GetWorkerNode

func (s *StubHandlers) GetWorkerNode(_ context.Context, name v1.ObjectName) (v1.WorkerNode, error)

func (*StubHandlers) GetWorkflow

func (s *StubHandlers) GetWorkflow(_ context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.Workflow, error)

func (*StubHandlers) GetWorkflowRun

func (s *StubHandlers) GetWorkflowRun(_ context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.WorkflowRun, error)

func (*StubHandlers) HandoverKVStore added in v0.5.0

func (s *StubHandlers) HandoverKVStore(_ context.Context, ns v1.NamespaceName, name, _ v1.ObjectName) (v1.KVStore, error)

func (*StubHandlers) ListAppRevisions added in v0.9.0

func (s *StubHandlers) ListAppRevisions(_ context.Context, ns v1.NamespaceName) ([]v1.AppRevision, error)

func (*StubHandlers) ListApps added in v0.9.0

func (s *StubHandlers) ListApps(_ context.Context, ns v1.NamespaceName) ([]v1.App, error)

func (*StubHandlers) ListBackupSchedules added in v0.11.0

func (s *StubHandlers) ListBackupSchedules(_ context.Context, ns v1.NamespaceName) ([]v1.BackupSchedule, error)

func (*StubHandlers) ListBackups added in v0.11.0

func (s *StubHandlers) ListBackups(_ context.Context, ns v1.NamespaceName) ([]v1.Backup, error)

func (*StubHandlers) ListBuckets

func (s *StubHandlers) ListBuckets(_ context.Context, ns v1.NamespaceName) ([]v1.Bucket, error)

func (*StubHandlers) ListCatalogServices

func (s *StubHandlers) ListCatalogServices(_ context.Context, ns v1.NamespaceName) ([]v1.CatalogService, error)

func (*StubHandlers) ListConfigMaps

func (s *StubHandlers) ListConfigMaps(_ context.Context, ns v1.NamespaceName) ([]v1.ConfigMap, error)

func (*StubHandlers) ListEgressPolicies

func (s *StubHandlers) ListEgressPolicies(_ context.Context, ns v1.NamespaceName) ([]v1.EgressPolicy, error)

func (*StubHandlers) ListEventSources

func (s *StubHandlers) ListEventSources(_ context.Context, ns v1.NamespaceName) ([]v1.EventSource, error)

func (*StubHandlers) ListFunctions

func (s *StubHandlers) ListFunctions(_ context.Context, ns v1.NamespaceName) ([]v1.Function, error)

func (*StubHandlers) ListGateways

func (s *StubHandlers) ListGateways(_ context.Context) ([]v1.Gateway, error)

func (*StubHandlers) ListGrants

func (s *StubHandlers) ListGrants(_ context.Context, ns v1.NamespaceName) ([]v1.Grant, error)

func (*StubHandlers) ListIdentities

func (s *StubHandlers) ListIdentities(_ context.Context, ns v1.NamespaceName) ([]v1.Identity, error)

func (*StubHandlers) ListInvocations

func (s *StubHandlers) ListInvocations(_ context.Context, ns v1.NamespaceName) ([]v1.Invocation, error)

func (*StubHandlers) ListKVStores

func (s *StubHandlers) ListKVStores(_ context.Context, ns v1.NamespaceName) ([]v1.KVStore, error)

func (*StubHandlers) ListNamespaces

func (s *StubHandlers) ListNamespaces(_ context.Context) ([]v1.Namespace, error)

func (*StubHandlers) ListPolicies

func (s *StubHandlers) ListPolicies(_ context.Context, ns v1.NamespaceName) ([]v1.Policy, error)

func (*StubHandlers) ListResourceGroups

func (s *StubHandlers) ListResourceGroups(_ context.Context, ns v1.NamespaceName) ([]v1.ResourceGroup, error)

func (*StubHandlers) ListRestores added in v0.11.0

func (s *StubHandlers) ListRestores(_ context.Context, ns v1.NamespaceName) ([]v1.Restore, error)

func (*StubHandlers) ListRevisions

func (s *StubHandlers) ListRevisions(_ context.Context, ns v1.NamespaceName) ([]v1.Revision, error)

func (*StubHandlers) ListRoles

func (s *StubHandlers) ListRoles(_ context.Context, ns v1.NamespaceName) ([]v1.Role, error)

func (*StubHandlers) ListRolesAssignments

func (s *StubHandlers) ListRolesAssignments(_ context.Context, ns v1.NamespaceName) ([]v1.RolesAssignment, error)

func (*StubHandlers) ListRoutes

func (s *StubHandlers) ListRoutes(_ context.Context, ns v1.NamespaceName) ([]v1.Route, error)

func (*StubHandlers) ListRuntimeClasses

func (s *StubHandlers) ListRuntimeClasses(_ context.Context) ([]v1.RuntimeClass, error)

func (*StubHandlers) ListSecrets

func (s *StubHandlers) ListSecrets(_ context.Context, ns v1.NamespaceName) ([]v1.Secret, error)

func (*StubHandlers) ListSensors

func (s *StubHandlers) ListSensors(_ context.Context, ns v1.NamespaceName) ([]v1.Sensor, error)

func (*StubHandlers) ListServices

func (s *StubHandlers) ListServices(_ context.Context, ns v1.NamespaceName) ([]v1.Service, error)

func (*StubHandlers) ListSites

func (s *StubHandlers) ListSites(_ context.Context, ns v1.NamespaceName) ([]v1.Site, error)

func (*StubHandlers) ListWorkerNodes

func (s *StubHandlers) ListWorkerNodes(_ context.Context) ([]v1.WorkerNode, error)

func (*StubHandlers) ListWorkflowRuns

func (s *StubHandlers) ListWorkflowRuns(_ context.Context, ns v1.NamespaceName) ([]v1.WorkflowRun, error)

func (*StubHandlers) ListWorkflows

func (s *StubHandlers) ListWorkflows(_ context.Context, ns v1.NamespaceName) ([]v1.Workflow, error)

func (*StubHandlers) ReplaceApp added in v0.9.0

func (s *StubHandlers) ReplaceApp(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, app v1.App) (v1.App, error)

func (*StubHandlers) ReplaceBackup added in v0.11.0

func (s *StubHandlers) ReplaceBackup(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, b v1.Backup) (v1.Backup, error)

func (*StubHandlers) ReplaceBackupSchedule added in v0.11.0

func (s *StubHandlers) ReplaceBackupSchedule(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, b v1.BackupSchedule) (v1.BackupSchedule, error)

func (*StubHandlers) ReplaceBucket

func (s *StubHandlers) ReplaceBucket(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, b v1.Bucket) (v1.Bucket, error)

func (*StubHandlers) ReplaceCatalogService

func (s *StubHandlers) ReplaceCatalogService(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, cs v1.CatalogService) (v1.CatalogService, error)

func (*StubHandlers) ReplaceConfigMap

func (s *StubHandlers) ReplaceConfigMap(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, cfg v1.ConfigMap) (v1.ConfigMap, error)

func (*StubHandlers) ReplaceEgressPolicy

func (s *StubHandlers) ReplaceEgressPolicy(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, ep v1.EgressPolicy) (v1.EgressPolicy, error)

func (*StubHandlers) ReplaceEventSource

func (s *StubHandlers) ReplaceEventSource(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, es v1.EventSource) (v1.EventSource, error)

func (*StubHandlers) ReplaceFunction

func (s *StubHandlers) ReplaceFunction(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, fn v1.Function) (v1.Function, error)

func (*StubHandlers) ReplaceGateway

func (s *StubHandlers) ReplaceGateway(_ context.Context, name v1.ObjectName, gw v1.Gateway) (v1.Gateway, error)

func (*StubHandlers) ReplaceGrant

func (s *StubHandlers) ReplaceGrant(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, g v1.Grant) (v1.Grant, error)

func (*StubHandlers) ReplaceIdentity

func (s *StubHandlers) ReplaceIdentity(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, id v1.Identity) (v1.Identity, error)

func (*StubHandlers) ReplaceInvocation

func (s *StubHandlers) ReplaceInvocation(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, inv v1.Invocation) (v1.Invocation, error)

func (*StubHandlers) ReplaceKVStore

func (s *StubHandlers) ReplaceKVStore(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, ks v1.KVStore) (v1.KVStore, error)

func (*StubHandlers) ReplaceNamespace

func (s *StubHandlers) ReplaceNamespace(_ context.Context, name v1.ObjectName, ns v1.Namespace) (v1.Namespace, error)

func (*StubHandlers) ReplacePolicy

func (s *StubHandlers) ReplacePolicy(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, pol v1.Policy) (v1.Policy, error)

func (*StubHandlers) ReplaceResourceGroup

func (s *StubHandlers) ReplaceResourceGroup(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, rg v1.ResourceGroup) (v1.ResourceGroup, error)

func (*StubHandlers) ReplaceRestore added in v0.11.0

func (s *StubHandlers) ReplaceRestore(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, r v1.Restore) (v1.Restore, error)

func (*StubHandlers) ReplaceRole

func (s *StubHandlers) ReplaceRole(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, ro v1.Role) (v1.Role, error)

func (*StubHandlers) ReplaceRolesAssignment

func (s *StubHandlers) ReplaceRolesAssignment(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, ra v1.RolesAssignment) (v1.RolesAssignment, error)

func (*StubHandlers) ReplaceRoute

func (s *StubHandlers) ReplaceRoute(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, rt v1.Route) (v1.Route, error)

func (*StubHandlers) ReplaceRuntimeClass

func (s *StubHandlers) ReplaceRuntimeClass(_ context.Context, name v1.ObjectName, rc v1.RuntimeClass) (v1.RuntimeClass, error)

func (*StubHandlers) ReplaceSecret

func (s *StubHandlers) ReplaceSecret(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, sec v1.Secret) (v1.Secret, error)

func (*StubHandlers) ReplaceSensor

func (s *StubHandlers) ReplaceSensor(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, se v1.Sensor) (v1.Sensor, error)

func (*StubHandlers) ReplaceService

func (s *StubHandlers) ReplaceService(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, svc v1.Service) (v1.Service, error)

func (*StubHandlers) ReplaceSite

func (s *StubHandlers) ReplaceSite(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, si v1.Site) (v1.Site, error)

func (*StubHandlers) ReplaceWorkerNode

func (s *StubHandlers) ReplaceWorkerNode(_ context.Context, name v1.ObjectName, wr v1.WorkerNode) (v1.WorkerNode, error)

func (*StubHandlers) ReplaceWorkflow

func (s *StubHandlers) ReplaceWorkflow(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, wf v1.Workflow) (v1.Workflow, error)

func (*StubHandlers) ReplaceWorkflowRun

func (s *StubHandlers) ReplaceWorkflowRun(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, run v1.WorkflowRun) (v1.WorkflowRun, error)

type WorkflowRunLogQuerier

type WorkflowRunLogQuerier interface {
	// RunLogs resolves the run's status.traceId and returns the namespace-wide, trace-filtered logs.
	// The querier sets q.Namespace and the resolved q.TraceID; the caller supplies the filter fields
	// (Since/MinSeverityNumber/Limit). A non-empty q.Function is a STEP NAME to resolve (the --step
	// drill-down), rewritten to that step's function; the trace filter is kept, so it returns only this
	// run's lines for that function. An empty status.traceId (a legacy run) ⇒ an empty result, not an error.
	RunLogs(ctx context.Context, ns v1.NamespaceName, run v1.ObjectName, q logread.Query) ([]logread.Line, error)
}

WorkflowRunLogQuerier resolves a run's status.traceId and returns its namespace-wide, trace-filtered logs (ADR-0106) — the whole composition (parent + sub-workflow child steps share the trace, ADR-0104).

func NewWorkflowRunLogQuerier

func NewWorkflowRunLogQuerier(s RunLogGetter, runs RunRecordGetter, reader LogQuerier) WorkflowRunLogQuerier

NewWorkflowRunLogQuerier builds the run-scoped log querier over the metastore, the engine's run records and the funclog reader.

Directories

Path Synopsis
Package admission is the control-plane admission framework (ADR-0063): a two-phase pipeline (mutate-all → validate-all) of single-purpose Admissions run on every resource write, after authz and before the store.
Package admission is the control-plane admission framework (ADR-0063): a two-phase pipeline (mutate-all → validate-all) of single-purpose Admissions run on every resource write, after authz and before the store.
cmd
specgen command
Command specgen writes the huma-generated OpenAPI 3.1 spec to the committed path.
Command specgen writes the huma-generated OpenAPI 3.1 spec to the committed path.
Package middleware holds the control-plane API server's net/http middleware (ADR-0018).
Package middleware holds the control-plane API server's net/http middleware (ADR-0018).

Jump to

Keyboard shortcuts

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