controlplane

package
v0.1.3 Latest Latest
Warning

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

Go to latest
Published: Sep 30, 2026 License: Apache-2.0 Imports: 18 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 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 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 RegisterRoutes

func RegisterRoutes(api huma.API, h Handlers)

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

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 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 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 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
}

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

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) 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) 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) error

	// Revision (namespaced)
	GetRevision(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName) (v1.Revision, error)
	CreateRevision(ctx context.Context, rev v1.Revision) (v1.Revision, error)
	ListRevisions(ctx context.Context, ns v1.NamespaceName) ([]v1.Revision, error)
	ReplaceRevision(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName, rev v1.Revision) (v1.Revision, error)
	DeleteRevision(ctx context.Context, ns v1.NamespaceName, name v1.ObjectName) 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) 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) 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) 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) 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) 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) 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) 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) 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) 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) 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) 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) 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) 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) 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) 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) 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) 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) 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) 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) 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) 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) 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) 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 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 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 its Workflow (for --step→function resolution). store.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) 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) CreateRevision

func (s *StubHandlers) CreateRevision(_ context.Context, rev v1.Revision) (v1.Revision, 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) DeleteBucket

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

func (*StubHandlers) DeleteCatalogService

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

func (*StubHandlers) DeleteConfigMap

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

func (*StubHandlers) DeleteEgressPolicy

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

func (*StubHandlers) DeleteEventSource

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

func (*StubHandlers) DeleteFunction

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

func (*StubHandlers) DeleteGateway

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

func (*StubHandlers) DeleteGrant

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

func (*StubHandlers) DeleteIdentity

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

func (*StubHandlers) DeleteInvocation

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

func (*StubHandlers) DeleteKVStore

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

func (*StubHandlers) DeleteNamespace

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

func (*StubHandlers) DeletePolicy

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

func (*StubHandlers) DeleteResourceGroup

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

func (*StubHandlers) DeleteRevision

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

func (*StubHandlers) DeleteRole

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

func (*StubHandlers) DeleteRolesAssignment

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

func (*StubHandlers) DeleteRoute

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

func (*StubHandlers) DeleteRuntimeClass

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

func (*StubHandlers) DeleteSecret

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

func (*StubHandlers) DeleteSensor

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

func (*StubHandlers) DeleteService

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

func (*StubHandlers) DeleteSite

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

func (*StubHandlers) DeleteWorkerNode

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

func (*StubHandlers) DeleteWorkflow

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

func (*StubHandlers) DeleteWorkflowRun

func (s *StubHandlers) DeleteWorkflowRun(_ context.Context, ns v1.NamespaceName, name v1.ObjectName) 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) 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) 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) 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) 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) ReplaceRevision

func (s *StubHandlers) ReplaceRevision(_ context.Context, ns v1.NamespaceName, name v1.ObjectName, rev v1.Revision) (v1.Revision, 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, reader LogQuerier) WorkflowRunLogQuerier

NewWorkflowRunLogQuerier builds the run-scoped log querier over the metastore + 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