controller

package
v1.4.1 Latest Latest
Warning

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

Go to latest
Published: Sep 26, 2024 License: Apache-2.0 Imports: 96 Imported by: 0

Documentation

Index

Constants

View Source
const GarbageCountLimit = 1000

Variables

This section is empty.

Functions

This section is empty.

Types

type ArchiveFileFilter

type ArchiveFileFilter func(p string, fi os.FileInfo) bool

ArchiveFileFilter must return true if a file should not be included in the archive after inspecting the given path and/or os.FileInfo.

func SourceIgnoreFilter

func SourceIgnoreFilter(ps []gitignore.Pattern, domain []string) ArchiveFileFilter

SourceIgnoreFilter returns an ArchiveFileFilter that filters out files matching sourceignore.VCSPatterns and any of the provided patterns. If an empty gitignore.Pattern slice is given, the matcher is set to sourceignore.NewDefaultMatcher.

type BucketProvider

type BucketProvider interface {
	// BucketExists returns if an object storage bucket with the provided name
	// exists, or returns a (client) error.
	BucketExists(ctx context.Context, bucketName string) (bool, error)
	// FGetObject gets the object from the provided object storage bucket, and
	// writes it to targetPath.
	// It returns the etag of the successfully fetched file, or any error.
	FGetObject(ctx context.Context, bucketName, objectKey, targetPath string) (etag string, err error)
	// VisitObjects iterates over the items in the provided object storage
	// bucket, calling visit for every item.
	// If the underlying client or the visit callback returns an error,
	// it returns early.
	VisitObjects(ctx context.Context, bucketName string, prefix string, visit func(key, etag string) error) error
	// ObjectIsNotFound returns true if the given error indicates an object
	// could not be found.
	ObjectIsNotFound(error) bool
	// Close closes the provider's client, if supported.
	Close(context.Context)
}

BucketProvider is an interface for fetching objects from a storage provider bucket.

type BucketReconciler

type BucketReconciler struct {
	client.Client
	kuberecorder.EventRecorder
	helper.Metrics

	Storage        *Storage
	ControllerName string
	// contains filtered or unexported fields
}

BucketReconciler reconciles a v1beta2.Bucket object.

func (*BucketReconciler) Reconcile

func (r *BucketReconciler) Reconcile(ctx context.Context, req ctrl.Request) (result ctrl.Result, retErr error)

func (*BucketReconciler) SetupWithManager

func (r *BucketReconciler) SetupWithManager(mgr ctrl.Manager) error

func (*BucketReconciler) SetupWithManagerAndOptions

func (r *BucketReconciler) SetupWithManagerAndOptions(mgr ctrl.Manager, opts BucketReconcilerOptions) error

type BucketReconcilerOptions

type BucketReconcilerOptions struct {
	RateLimiter workqueue.TypedRateLimiter[reconcile.Request]
}

type GitRepositoryReconciler

type GitRepositoryReconciler struct {
	client.Client
	kuberecorder.EventRecorder
	helper.Metrics

	Storage        *Storage
	ControllerName string
	// contains filtered or unexported fields
}

GitRepositoryReconciler reconciles a v1beta2.GitRepository object.

func (*GitRepositoryReconciler) Reconcile

func (r *GitRepositoryReconciler) Reconcile(ctx context.Context, req ctrl.Request) (result ctrl.Result, retErr error)

func (*GitRepositoryReconciler) SetupWithManager

func (r *GitRepositoryReconciler) SetupWithManager(mgr ctrl.Manager) error

func (*GitRepositoryReconciler) SetupWithManagerAndOptions

func (r *GitRepositoryReconciler) SetupWithManagerAndOptions(mgr ctrl.Manager, opts GitRepositoryReconcilerOptions) error

type GitRepositoryReconcilerOptions

type GitRepositoryReconcilerOptions struct {
	DependencyRequeueInterval time.Duration
	RateLimiter               workqueue.TypedRateLimiter[reconcile.Request]
}

type HelmChartReconciler

type HelmChartReconciler struct {
	client.Client
	kuberecorder.EventRecorder
	helper.Metrics

	RegistryClientGenerator RegistryClientGeneratorFunc
	Storage                 *Storage
	Getters                 helmgetter.Providers
	ControllerName          string

	Cache *cache.Cache
	TTL   time.Duration
	*cache.CacheRecorder
	// contains filtered or unexported fields
}

HelmChartReconciler reconciles a HelmChart object

func (*HelmChartReconciler) Reconcile

func (r *HelmChartReconciler) Reconcile(ctx context.Context, req ctrl.Request) (result ctrl.Result, retErr error)

func (*HelmChartReconciler) SetupWithManager

func (r *HelmChartReconciler) SetupWithManager(ctx context.Context, mgr ctrl.Manager) error

func (*HelmChartReconciler) SetupWithManagerAndOptions

func (r *HelmChartReconciler) SetupWithManagerAndOptions(ctx context.Context, mgr ctrl.Manager, opts HelmChartReconcilerOptions) error

type HelmChartReconcilerOptions

type HelmChartReconcilerOptions struct {
	RateLimiter workqueue.TypedRateLimiter[reconcile.Request]
}

type HelmRepositoryReconciler

type HelmRepositoryReconciler struct {
	client.Client
	kuberecorder.EventRecorder
	helper.Metrics

	Getters        helmgetter.Providers
	Storage        *Storage
	ControllerName string

	Cache *cache.Cache
	TTL   time.Duration
	*cache.CacheRecorder
	// contains filtered or unexported fields
}

HelmRepositoryReconciler reconciles a v1.HelmRepository object.

func (*HelmRepositoryReconciler) Reconcile

func (r *HelmRepositoryReconciler) Reconcile(ctx context.Context, req ctrl.Request) (result ctrl.Result, retErr error)

func (*HelmRepositoryReconciler) SetupWithManager

func (r *HelmRepositoryReconciler) SetupWithManager(mgr ctrl.Manager) error

func (*HelmRepositoryReconciler) SetupWithManagerAndOptions

func (r *HelmRepositoryReconciler) SetupWithManagerAndOptions(mgr ctrl.Manager, opts HelmRepositoryReconcilerOptions) error

type HelmRepositoryReconcilerOptions

type HelmRepositoryReconcilerOptions struct {
	RateLimiter workqueue.TypedRateLimiter[reconcile.Request]
}

type OCIRepositoryReconciler

type OCIRepositoryReconciler struct {
	client.Client
	helper.Metrics
	kuberecorder.EventRecorder

	Storage        *Storage
	ControllerName string
	// contains filtered or unexported fields
}

OCIRepositoryReconciler reconciles a v1beta2.OCIRepository object

func (*OCIRepositoryReconciler) Reconcile

func (r *OCIRepositoryReconciler) Reconcile(ctx context.Context, req ctrl.Request) (result ctrl.Result, retErr error)

func (*OCIRepositoryReconciler) SetupWithManager

func (r *OCIRepositoryReconciler) SetupWithManager(mgr ctrl.Manager) error

SetupWithManager sets up the controller with the Manager.

func (*OCIRepositoryReconciler) SetupWithManagerAndOptions

func (r *OCIRepositoryReconciler) SetupWithManagerAndOptions(mgr ctrl.Manager, opts OCIRepositoryReconcilerOptions) error

type OCIRepositoryReconcilerOptions

type OCIRepositoryReconcilerOptions struct {
	DependencyRequeueInterval time.Duration
	RateLimiter               workqueue.TypedRateLimiter[reconcile.Request]
}

type RegistryClientGeneratorFunc

type RegistryClientGeneratorFunc func(tlsConfig *tls.Config, isLogin, insecure bool) (*helmreg.Client, string, error)

RegistryClientGeneratorFunc is a function that returns a registry client and an optional file name. The file is used to store the registry client credentials. The caller is responsible for deleting the file.

type SourceRevisionChangePredicate

type SourceRevisionChangePredicate struct {
	predicate.Funcs
}

func (SourceRevisionChangePredicate) Create

func (SourceRevisionChangePredicate) Delete

func (SourceRevisionChangePredicate) Update

type Storage

type Storage struct {
	// BasePath is the local directory path where the source artifacts are stored.
	BasePath string `json:"basePath"`

	// Hostname is the file server host name used to compose the artifacts URIs.
	Hostname string `json:"hostname"`

	// ArtifactRetentionTTL is the duration of time that artifacts will be kept
	// in storage before being garbage collected.
	ArtifactRetentionTTL time.Duration `json:"artifactRetentionTTL"`

	// ArtifactRetentionRecords is the maximum number of artifacts to be kept in
	// storage after a garbage collection.
	ArtifactRetentionRecords int `json:"artifactRetentionRecords"`
}

Storage manages artifacts

func NewStorage

func NewStorage(basePath string, hostname string, artifactRetentionTTL time.Duration, artifactRetentionRecords int) (*Storage, error)

NewStorage creates the storage helper for a given path and hostname.

func (Storage) Archive

func (s Storage) Archive(artifact *v1.Artifact, dir string, filter ArchiveFileFilter) (err error)

Archive atomically archives the given directory as a tarball to the given v1.Artifact path, excluding directories and any ArchiveFileFilter matches. While archiving, any environment specific data (for example, the user and group name) is stripped from file headers. If successful, it sets the digest and last update time on the artifact.

func (Storage) ArtifactExist

func (s Storage) ArtifactExist(artifact v1.Artifact) bool

ArtifactExist returns a boolean indicating whether the v1.Artifact exists in storage and is a regular file.

func (Storage) AtomicWriteFile

func (s Storage) AtomicWriteFile(artifact *v1.Artifact, reader io.Reader, mode os.FileMode) (err error)

AtomicWriteFile atomically writes the io.Reader contents to the v1.Artifact path. If successful, it sets the digest and last update time on the artifact.

func (Storage) Copy

func (s Storage) Copy(artifact *v1.Artifact, reader io.Reader) (err error)

Copy atomically copies the io.Reader contents to the v1.Artifact path. If successful, it sets the digest and last update time on the artifact.

func (Storage) CopyFromPath

func (s Storage) CopyFromPath(artifact *v1.Artifact, path string) (err error)

CopyFromPath atomically copies the contents of the given path to the path of the v1.Artifact. If successful, the digest and last update time on the artifact is set.

func (Storage) CopyToPath

func (s Storage) CopyToPath(artifact *v1.Artifact, subPath, toPath string) error

CopyToPath copies the contents in the (sub)path of the given artifact to the given path.

func (Storage) GarbageCollect

func (s Storage) GarbageCollect(ctx context.Context, artifact v1.Artifact, timeout time.Duration) ([]string, error)

GarbageCollect removes all garbage files in the artifact dir according to the provided retention options.

func (Storage) LocalPath

func (s Storage) LocalPath(artifact v1.Artifact) string

LocalPath returns the secure local path of the given artifact (that is: relative to the Storage.BasePath).

func (Storage) Lock

func (s Storage) Lock(artifact v1.Artifact) (unlock func(), err error)

Lock creates a file lock for the given v1.Artifact.

func (Storage) MkdirAll

func (s Storage) MkdirAll(artifact v1.Artifact) error

MkdirAll calls os.MkdirAll for the given v1.Artifact base dir.

func (Storage) NewArtifactFor

func (s Storage) NewArtifactFor(kind string, metadata metav1.Object, revision, fileName string) v1.Artifact

NewArtifactFor returns a new v1.Artifact.

func (Storage) Remove

func (s Storage) Remove(artifact v1.Artifact) error

Remove calls os.Remove for the given v1.Artifact path.

func (Storage) RemoveAll

func (s Storage) RemoveAll(artifact v1.Artifact) (string, error)

RemoveAll calls os.RemoveAll for the given v1.Artifact base dir.

func (Storage) RemoveAllButCurrent

func (s Storage) RemoveAllButCurrent(artifact v1.Artifact) ([]string, error)

RemoveAllButCurrent removes all files for the given v1.Artifact base dir, excluding the current one.

func (Storage) SetArtifactURL

func (s Storage) SetArtifactURL(artifact *v1.Artifact)

SetArtifactURL sets the URL on the given v1.Artifact.

func (Storage) SetHostname

func (s Storage) SetHostname(URL string) string

SetHostname sets the hostname of the given URL string to the current Storage.Hostname and returns the result.

func (s Storage) Symlink(artifact v1.Artifact, linkName string) (string, error)

Symlink creates or updates a symbolic link for the given v1.Artifact and returns the URL for the symlink.

func (Storage) VerifyArtifact

func (s Storage) VerifyArtifact(artifact v1.Artifact) error

VerifyArtifact verifies if the Digest of the v1.Artifact matches the digest of the file in Storage. It returns an error if the digests don't match, or if it can't be verified.

Jump to

Keyboard shortcuts

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