Documentation
¶
Overview ¶
Package source reconciles Flux source CRs (GitRepository, OCIRepository, Bucket, ExternalArtifact, HelmRepository) into on-disk artifacts via per-kind Fetcher implementations from pkg/source, then publishes the result to the Store. Mirrors pkg/controllers/{kustomization,helmrelease}.
The controller does not know about individual source kinds — it dispatches via the Fetchers map keyed by id.Kind, so adding a new kind is a one-line registration at orchestrator-construction time.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Controller ¶
type Controller struct {
*base.Controller
// Fetchers maps source CR kind → Fetcher implementation. Source
// kinds with no entry are ignored, which is also how a flate caller
// disables a kind (omitting it from the map, e.g. via
// Orchestrator.WithFetcher(kind, nil)). Exposed for Orchestrator.WithFetcher.
Fetchers map[string]src.Fetcher
// contains filtered or unexported fields
}
Controller watches the Store for source-kind objects, fetches each into an on-disk artifact via the matching Fetcher, and updates the Store with the result.
func New ¶
func New(s *store.Store, t *task.Service) *Controller
New constructs a source controller. Register fetchers on the returned struct's Fetchers map before Start.
func (*Controller) Configure ¶
func (c *Controller) Configure(opts FetchOptions)
Configure installs the post-bootstrap state. Panics if called after Start.
func (*Controller) HasFetcher ¶ added in v0.3.4
func (c *Controller) HasFetcher(kind string) bool
HasFetcher reports whether a fetcher is registered for kind — the dag Dispatcher uses it to route source-kind nodes to ReconcileNode.
func (*Controller) ReconcileNode ¶ added in v0.3.4
func (c *Controller) ReconcileNode(ctx context.Context, id manifest.NamedResource, drainLevel int) (blocked []manifest.NamedResource, ready bool)
ReconcileNode runs id's source fetch under the dag engine, returning the blocked dependency set (always nil — sources have no depwait gates) and whether id ended Ready. The orchestrator's scheduler Dispatcher calls this for source-kind nodes.
func (*Controller) Start ¶
func (c *Controller) Start(_ context.Context)
Start registers listeners on the Store. The controller runs until Close is called. The scheduler owns dispatch (via ReconcileNode), so Start only wires lifecycle state — no dispatch listener.
type FetchOptions ¶
type FetchOptions struct {
Filter *change.Filter
AllowMissingSecrets bool
// Producers is the orchestrator-owned producer index (ExternalSecret /
// SealedSecret target → producer), shared with the HR controller. A
// missing auth Secret with a declared producer is skipped even without
// AllowMissingSecrets. Nil is OK — no producer is ever known.
Producers *manifest.ProducerIndex
}
FetchOptions carries the post-bootstrap state the orchestrator wires onto the controller. Filter narrows fetches to sources referenced by changed resources in changed-only mode.