v1alpha1

package
v0.0.0-...-380da73 Latest Latest
Warning

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

Go to latest
Published: Jun 20, 2025 License: MIT Imports: 14 Imported by: 0

Documentation

Overview

Package v1alpha1 contains API Schema definitions for the ducklake v1alpha1 API group. +kubebuilder:object:generate=true +groupName=ducklake.featherman.dev

Index

Constants

This section is empty.

Variables

View Source
var (
	// GroupVersion is group version used to register these objects.
	GroupVersion = schema.GroupVersion{Group: "ducklake.featherman.dev", Version: "v1alpha1"}

	// SchemeBuilder is used to add go types to the GroupVersionKind scheme.
	SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion}

	// AddToScheme adds the types in this group-version to the given scheme.
	AddToScheme = SchemeBuilder.AddToScheme
)

Functions

This section is empty.

Types

type BackupPolicySpec

type BackupPolicySpec struct {
	// Schedule is the cron expression for backups
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:Pattern=`^(@(annually|yearly|monthly|weekly|daily|hourly|reboot))|(@every (\d+(ns|us|µs|ms|s|m|h))+)|((((\d+,)+\d+|(\d+(\/|-)\d+)|\d+|\*) ?){5,7})$`
	Schedule string `json:"schedule"`

	// RetentionDays is the number of days to retain backups
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:default=7
	RetentionDays int `json:"retentionDays,omitempty"`
}

BackupPolicySpec defines the backup configuration

func (*BackupPolicySpec) DeepCopy

func (in *BackupPolicySpec) DeepCopy() *BackupPolicySpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BackupPolicySpec.

func (*BackupPolicySpec) DeepCopyInto

func (in *BackupPolicySpec) DeepCopyInto(out *BackupPolicySpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type CatalogPhase

type CatalogPhase string

CatalogPhase represents the current phase of the catalog +kubebuilder:validation:Enum=Pending;Running;Failed;Succeeded

const (
	// CatalogPhasePending means the catalog is being created
	CatalogPhasePending CatalogPhase = "Pending"
	// CatalogPhaseRunning means the catalog is operational
	CatalogPhaseRunning CatalogPhase = "Running"
	// CatalogPhaseFailed means the catalog has encountered an error
	CatalogPhaseFailed CatalogPhase = "Failed"
	// CatalogPhaseSucceeded means the catalog is ready
	CatalogPhaseSucceeded CatalogPhase = "Succeeded"
)

type CatalogReference

type CatalogReference struct {
	// Name is the name of the DuckLakeCatalog
	Name string `json:"name"`

	// ReadOnly specifies if the catalog should be mounted read-only
	// +kubebuilder:default=true
	ReadOnly bool `json:"readOnly,omitempty"`
}

CatalogReference references a DuckLakeCatalog

func (*CatalogReference) DeepCopy

func (in *CatalogReference) DeepCopy() *CatalogReference

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CatalogReference.

func (*CatalogReference) DeepCopyInto

func (in *CatalogReference) DeepCopyInto(out *CatalogReference)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ColumnDefinition

type ColumnDefinition struct {
	// Name is the column name
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:Pattern=^[a-zA-Z][a-zA-Z0-9_]*$
	Name string `json:"name"`

	// Type is the SQL data type
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:Enum=INTEGER;BIGINT;DOUBLE;BOOLEAN;VARCHAR;DATE;TIMESTAMP;DECIMAL
	Type SQLType `json:"type"`

	// Nullable specifies if the column can contain NULL values
	// +optional
	Nullable bool `json:"nullable,omitempty"`

	// Comment provides documentation for the column
	// +optional
	Comment string `json:"comment,omitempty"`
}

ColumnDefinition defines a column in the table

func (*ColumnDefinition) DeepCopy

func (in *ColumnDefinition) DeepCopy() *ColumnDefinition

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ColumnDefinition.

func (*ColumnDefinition) DeepCopyInto

func (in *ColumnDefinition) DeepCopyInto(out *ColumnDefinition)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type CompressionType

type CompressionType string

CompressionType represents a Parquet compression type

const (
	// CompressionZSTD represents ZSTD compression
	CompressionZSTD CompressionType = "ZSTD"
	// CompressionSnappy represents Snappy compression
	CompressionSnappy CompressionType = "SNAPPY"
)

type DuckLakeCatalog

type DuckLakeCatalog struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   DuckLakeCatalogSpec   `json:"spec,omitempty"`
	Status DuckLakeCatalogStatus `json:"status,omitempty"`
}

DuckLakeCatalog is the Schema for the ducklakecatalogs API

func (*DuckLakeCatalog) DeepCopy

func (in *DuckLakeCatalog) DeepCopy() *DuckLakeCatalog

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DuckLakeCatalog.

func (*DuckLakeCatalog) DeepCopyInto

func (in *DuckLakeCatalog) DeepCopyInto(out *DuckLakeCatalog)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*DuckLakeCatalog) DeepCopyObject

func (in *DuckLakeCatalog) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*DuckLakeCatalog) Default

func (r *DuckLakeCatalog) Default()

Default implements admission.Defaulter so a webhook will be registered for the type

func (*DuckLakeCatalog) SetupWebhookWithManager

func (r *DuckLakeCatalog) SetupWebhookWithManager(mgr ctrl.Manager) error

func (*DuckLakeCatalog) ValidateCreate

func (r *DuckLakeCatalog) ValidateCreate() (admission.Warnings, error)

ValidateCreate implements admission.Validator so a webhook will be registered for the type

func (*DuckLakeCatalog) ValidateDelete

func (r *DuckLakeCatalog) ValidateDelete() (admission.Warnings, error)

ValidateDelete implements admission.Validator so a webhook will be registered for the type

func (*DuckLakeCatalog) ValidateUpdate

func (r *DuckLakeCatalog) ValidateUpdate(old runtime.Object) (admission.Warnings, error)

ValidateUpdate implements admission.Validator so a webhook will be registered for the type

type DuckLakeCatalogList

type DuckLakeCatalogList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []DuckLakeCatalog `json:"items"`
}

DuckLakeCatalogList contains a list of DuckLakeCatalog

func (*DuckLakeCatalogList) DeepCopy

func (in *DuckLakeCatalogList) DeepCopy() *DuckLakeCatalogList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DuckLakeCatalogList.

func (*DuckLakeCatalogList) DeepCopyInto

func (in *DuckLakeCatalogList) DeepCopyInto(out *DuckLakeCatalogList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*DuckLakeCatalogList) DeepCopyObject

func (in *DuckLakeCatalogList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type DuckLakeCatalogSpec

type DuckLakeCatalogSpec struct {
	// StorageClass is the storage class to use for the catalog PVC
	// +kubebuilder:validation:Required
	StorageClass string `json:"storageClass"`

	// Size is the size of the catalog PVC
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:Pattern=^([0-9]+(\.[0-9]+)?)(E|P|T|G|M|K|Ei|Pi|Ti|Gi|Mi|Ki)$
	Size string `json:"size"`

	// ObjectStore defines the S3-compatible storage configuration
	// +kubebuilder:validation:Required
	ObjectStore ObjectStoreSpec `json:"objectStore"`

	// Encryption defines the encryption configuration
	// +optional
	Encryption *EncryptionSpec `json:"encryption,omitempty"`

	// BackupPolicy defines the backup configuration
	// +optional
	BackupPolicy *BackupPolicySpec `json:"backupPolicy,omitempty"`

	// CatalogPath is the path to the DuckDB catalog file within the PVC
	// +kubebuilder:default=/catalog/catalog.db
	CatalogPath string `json:"catalogPath,omitempty"`

	// RestoreVersion, if set, restores the catalog to a historical version
	// +optional
	RestoreVersion string `json:"restoreVersion,omitempty"`

	// Versioning controls automatic metadata snapshotting
	// +optional
	Versioning *VersioningSpec `json:"versioning,omitempty"`
}

DuckLakeCatalogSpec defines the desired state of DuckLakeCatalog

func (*DuckLakeCatalogSpec) DeepCopy

func (in *DuckLakeCatalogSpec) DeepCopy() *DuckLakeCatalogSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DuckLakeCatalogSpec.

func (*DuckLakeCatalogSpec) DeepCopyInto

func (in *DuckLakeCatalogSpec) DeepCopyInto(out *DuckLakeCatalogSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DuckLakeCatalogStatus

type DuckLakeCatalogStatus struct {
	// Phase represents the current phase of the catalog
	// +optional
	Phase CatalogPhase `json:"phase,omitempty"`

	// LastBackup is the timestamp of the last successful backup
	// +optional
	LastBackup *metav1.Time `json:"lastBackup,omitempty"`

	// Conditions represent the latest available observations of the catalog's state
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`

	// ObservedGeneration is the last generation that was acted on
	// +optional
	ObservedGeneration int64 `json:"observedGeneration,omitempty"`

	// VersionHistory lists recent catalog versions
	// +optional
	VersionHistory []VersionEntry `json:"versionHistory,omitempty"`
}

DuckLakeCatalogStatus defines the observed state of DuckLakeCatalog

func (*DuckLakeCatalogStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DuckLakeCatalogStatus.

func (*DuckLakeCatalogStatus) DeepCopyInto

func (in *DuckLakeCatalogStatus) DeepCopyInto(out *DuckLakeCatalogStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DuckLakePool

type DuckLakePool struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   DuckLakePoolSpec   `json:"spec,omitempty"`
	Status DuckLakePoolStatus `json:"status,omitempty"`
}

DuckLakePool is the Schema for the ducklakepools API

func (*DuckLakePool) DeepCopy

func (in *DuckLakePool) DeepCopy() *DuckLakePool

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DuckLakePool.

func (*DuckLakePool) DeepCopyInto

func (in *DuckLakePool) DeepCopyInto(out *DuckLakePool)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*DuckLakePool) DeepCopyObject

func (in *DuckLakePool) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type DuckLakePoolList

type DuckLakePoolList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []DuckLakePool `json:"items"`
}

DuckLakePoolList contains a list of DuckLakePool

func (*DuckLakePoolList) DeepCopy

func (in *DuckLakePoolList) DeepCopy() *DuckLakePoolList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DuckLakePoolList.

func (*DuckLakePoolList) DeepCopyInto

func (in *DuckLakePoolList) DeepCopyInto(out *DuckLakePoolList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*DuckLakePoolList) DeepCopyObject

func (in *DuckLakePoolList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type DuckLakePoolSpec

type DuckLakePoolSpec struct {
	// MinSize is the minimum number of warm pods to maintain
	// +kubebuilder:validation:Minimum=0
	// +kubebuilder:default=1
	MinSize int32 `json:"minSize,omitempty"`

	// MaxSize is the maximum number of warm pods to maintain
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:default=10
	MaxSize int32 `json:"maxSize,omitempty"`

	// TargetUtilization is the target utilization ratio (0.0 to 1.0)
	// +kubebuilder:validation:Pattern=^(0?\.[0-9]+|1\.0|1)$
	// +kubebuilder:default="0.8"
	TargetUtilization string `json:"targetUtilization,omitempty"`

	// Template defines the pod template for warm pods
	Template PodTemplate `json:"template"`

	// LifecyclePolicies defines when to recycle pods
	LifecyclePolicies LifecyclePolicies `json:"lifecyclePolicies,omitempty"`

	// ScalingBehavior configures how the pool scales
	ScalingBehavior ScalingBehavior `json:"scalingBehavior,omitempty"`

	// CatalogRef references the DuckLakeCatalog to mount
	CatalogRef CatalogReference `json:"catalogRef"`

	// Metrics configures metrics exposure
	Metrics MetricsConfig `json:"metrics,omitempty"`

	// MaxQueryDuration limits how long a query may run
	// +kubebuilder:default="60s"
	MaxQueryDuration metav1.Duration `json:"maxQueryDuration,omitempty"`

	// MaxRetries defines how many times to retry failed queries
	// +kubebuilder:default=3
	MaxRetries int32 `json:"maxRetries,omitempty"`

	// Queue configures request queueing
	Queue QueueConfig `json:"queue,omitempty"`
}

DuckLakePoolSpec defines the desired state of DuckLakePool

func (*DuckLakePoolSpec) DeepCopy

func (in *DuckLakePoolSpec) DeepCopy() *DuckLakePoolSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DuckLakePoolSpec.

func (*DuckLakePoolSpec) DeepCopyInto

func (in *DuckLakePoolSpec) DeepCopyInto(out *DuckLakePoolSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DuckLakePoolStatus

type DuckLakePoolStatus struct {
	// Phase is the current phase of the pool
	Phase PoolPhase `json:"phase,omitempty"`

	// CurrentSize is the current number of pods
	CurrentSize int32 `json:"currentSize"`

	// DesiredSize is the desired number of pods
	DesiredSize int32 `json:"desiredSize"`

	// IdlePods is the number of idle pods
	IdlePods int32 `json:"idlePods"`

	// BusyPods is the number of busy pods
	BusyPods int32 `json:"busyPods"`

	// QueueLength is the number of pending requests
	QueueLength int32 `json:"queueLength"`

	// Pods contains information about each pod
	Pods []PodInfo `json:"pods,omitempty"`

	// Conditions represent the latest available observations
	Conditions []metav1.Condition `json:"conditions,omitempty"`

	// LastScaleTime is when the pool was last scaled
	LastScaleTime *metav1.Time `json:"lastScaleTime,omitempty"`

	// ObservedGeneration is the last observed generation
	ObservedGeneration int64 `json:"observedGeneration,omitempty"`
}

DuckLakePoolStatus defines the observed state of DuckLakePool

func (*DuckLakePoolStatus) DeepCopy

func (in *DuckLakePoolStatus) DeepCopy() *DuckLakePoolStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DuckLakePoolStatus.

func (*DuckLakePoolStatus) DeepCopyInto

func (in *DuckLakePoolStatus) DeepCopyInto(out *DuckLakePoolStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DuckLakeTable

type DuckLakeTable struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   DuckLakeTableSpec   `json:"spec,omitempty"`
	Status DuckLakeTableStatus `json:"status,omitempty"`
}

DuckLakeTable is the Schema for the ducklaketables API

func (*DuckLakeTable) DeepCopy

func (in *DuckLakeTable) DeepCopy() *DuckLakeTable

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DuckLakeTable.

func (*DuckLakeTable) DeepCopyInto

func (in *DuckLakeTable) DeepCopyInto(out *DuckLakeTable)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*DuckLakeTable) DeepCopyObject

func (in *DuckLakeTable) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*DuckLakeTable) Default

func (r *DuckLakeTable) Default()

Default implements admission.Defaulter so a webhook will be registered for the type

func (*DuckLakeTable) SetupWebhookWithManager

func (r *DuckLakeTable) SetupWebhookWithManager(mgr ctrl.Manager) error

func (*DuckLakeTable) ValidateCreate

func (r *DuckLakeTable) ValidateCreate() (admission.Warnings, error)

ValidateCreate implements admission.Validator so a webhook will be registered for the type

func (*DuckLakeTable) ValidateDelete

func (r *DuckLakeTable) ValidateDelete() (admission.Warnings, error)

ValidateDelete implements admission.Validator so a webhook will be registered for the type

func (*DuckLakeTable) ValidateUpdate

func (r *DuckLakeTable) ValidateUpdate(old runtime.Object) (admission.Warnings, error)

ValidateUpdate implements admission.Validator so a webhook will be registered for the type

type DuckLakeTableList

type DuckLakeTableList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []DuckLakeTable `json:"items"`
}

DuckLakeTableList contains a list of DuckLakeTable

func (*DuckLakeTableList) DeepCopy

func (in *DuckLakeTableList) DeepCopy() *DuckLakeTableList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DuckLakeTableList.

func (*DuckLakeTableList) DeepCopyInto

func (in *DuckLakeTableList) DeepCopyInto(out *DuckLakeTableList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*DuckLakeTableList) DeepCopyObject

func (in *DuckLakeTableList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type DuckLakeTableSpec

type DuckLakeTableSpec struct {
	// Name is the table name
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:Pattern=^[a-zA-Z][a-zA-Z0-9_]*$
	Name string `json:"name"`

	// Columns defines the table columns
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinItems=1
	Columns []ColumnDefinition `json:"columns"`

	// Format specifies the Parquet format configuration
	// +kubebuilder:validation:Required
	Format ParquetFormat `json:"format"`

	// Location is the object store path for Parquet files
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:Pattern=^[a-zA-Z0-9-_./]+$
	Location string `json:"location"`

	// TTLDays specifies the data retention period in days
	// +optional
	// +kubebuilder:validation:Minimum=1
	TTLDays *int `json:"ttlDays,omitempty"`

	// Mode specifies the table write mode
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:Enum=append;overwrite
	Mode TableMode `json:"mode"`

	// Comment provides documentation for the table
	// +optional
	Comment string `json:"comment,omitempty"`

	// CatalogRef references the DuckLakeCatalog this table belongs to
	// +kubebuilder:validation:Required
	CatalogRef string `json:"catalogRef"`

	// ObjectStore defines the S3-compatible storage configuration
	// If not specified, the configuration from the referenced catalog will be used
	// +optional
	ObjectStore *ObjectStoreSpec `json:"objectStore,omitempty"`

	// MaterializeTo configures optional view materialization
	// +optional
	MaterializeTo *MaterializeToSpec `json:"materializeTo,omitempty"`

	// RestoreVersion, if set, restores the table to a historical version
	// +optional
	RestoreVersion string `json:"restoreVersion,omitempty"`

	// Versioning controls automatic metadata snapshotting
	// +optional
	Versioning *VersioningSpec `json:"versioning,omitempty"`
}

DuckLakeTableSpec defines the desired state of DuckLakeTable

func (*DuckLakeTableSpec) DeepCopy

func (in *DuckLakeTableSpec) DeepCopy() *DuckLakeTableSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DuckLakeTableSpec.

func (*DuckLakeTableSpec) DeepCopyInto

func (in *DuckLakeTableSpec) DeepCopyInto(out *DuckLakeTableSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DuckLakeTableStatus

type DuckLakeTableStatus struct {
	// Phase is the current phase of the table
	// +kubebuilder:validation:Enum=Pending;Succeeded;Failed
	Phase TablePhase `json:"phase,omitempty"`

	// LastAppliedSnapshot is the latest successful snapshot ID
	// +optional
	LastAppliedSnapshot string `json:"lastAppliedSnapshot,omitempty"`

	// BytesWritten is the total bytes written
	// +optional
	BytesWritten int64 `json:"bytesWritten,omitempty"`

	// LastModified is the last modification timestamp
	// +optional
	LastModified *metav1.Time `json:"lastModified,omitempty"`

	// ObservedGeneration is the last generation that was acted on
	// +optional
	ObservedGeneration int64 `json:"observedGeneration,omitempty"`

	// Conditions represent the latest available observations of the table's state
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`

	// Materialization holds information about the last materialization run
	// +optional
	Materialization *MaterializationStatus `json:"materialization,omitempty"`

	// VersionHistory lists recent table versions
	// +optional
	VersionHistory []VersionEntry `json:"versionHistory,omitempty"`
}

DuckLakeTableStatus defines the observed state of DuckLakeTable

func (*DuckLakeTableStatus) DeepCopy

func (in *DuckLakeTableStatus) DeepCopy() *DuckLakeTableStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DuckLakeTableStatus.

func (*DuckLakeTableStatus) DeepCopyInto

func (in *DuckLakeTableStatus) DeepCopyInto(out *DuckLakeTableStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type EncryptionSpec

type EncryptionSpec struct {
	// KMSKeyID is the AWS KMS key ID for encryption
	// +kubebuilder:validation:Required
	KMSKeyID string `json:"kmsKeyId"`
}

EncryptionSpec defines the encryption configuration for the catalog

func (*EncryptionSpec) DeepCopy

func (in *EncryptionSpec) DeepCopy() *EncryptionSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EncryptionSpec.

func (*EncryptionSpec) DeepCopyInto

func (in *EncryptionSpec) DeepCopyInto(out *EncryptionSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type LifecyclePolicies

type LifecyclePolicies struct {
	// MaxIdleTime is the maximum time a pod can be idle before termination
	// +kubebuilder:default="5m"
	MaxIdleTime metav1.Duration `json:"maxIdleTime,omitempty"`

	// MaxLifetime is the maximum lifetime of a pod before recycling
	// +kubebuilder:default="1h"
	MaxLifetime metav1.Duration `json:"maxLifetime,omitempty"`

	// MaxQueries is the maximum number of queries before recycling
	// +kubebuilder:default=100
	MaxQueries int32 `json:"maxQueries,omitempty"`
}

LifecyclePolicies defines when to recycle warm pods

func (*LifecyclePolicies) DeepCopy

func (in *LifecyclePolicies) DeepCopy() *LifecyclePolicies

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LifecyclePolicies.

func (*LifecyclePolicies) DeepCopyInto

func (in *LifecyclePolicies) DeepCopyInto(out *LifecyclePolicies)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type MaterializationDestination

type MaterializationDestination struct {
	// Bucket is the target bucket for the materialized dataset
	// +kubebuilder:validation:Required
	Bucket string `json:"bucket"`

	// Prefix is the object prefix for the materialized files
	// +optional
	Prefix string `json:"prefix,omitempty"`
}

MaterializationDestination defines the object store destination

type MaterializationFormat

type MaterializationFormat struct {
	// Type specifies the file format. Currently only "parquet" is supported
	// +kubebuilder:validation:Enum=parquet
	Type string `json:"type"`

	// Compression specifies the compression algorithm
	// +optional
	// +kubebuilder:validation:Enum=ZSTD;SNAPPY
	Compression CompressionType `json:"compression,omitempty"`

	// PartitionBy specifies the partition columns
	// +optional
	PartitionBy []string `json:"partitionBy,omitempty"`
}

MaterializationFormat defines the output format for materialization

type MaterializationStatus

type MaterializationStatus struct {
	// LastRun indicates the time of the last materialization
	// +optional
	LastRun *metav1.Time `json:"lastRun,omitempty"`

	// Duration is the execution time of the last materialization
	// +optional
	Duration metav1.Duration `json:"duration,omitempty"`

	// OutputPath is the object store prefix of the materialized files
	// +optional
	OutputPath string `json:"outputPath,omitempty"`

	// RowCount is the number of rows produced in the last run
	// +optional
	RowCount int64 `json:"rowCount,omitempty"`
}

MaterializationStatus tracks the outcome of a materialization run

type MaterializeToSpec

type MaterializeToSpec struct {
	// Enabled determines whether materialization is active
	// +kubebuilder:default=false
	Enabled bool `json:"enabled"`

	// Name is the logical name of the materialization
	// +optional
	Name string `json:"name,omitempty"`

	// SQL is the query used to produce the dataset
	// +optional
	SQL string `json:"sql,omitempty"`

	// Schedule is an optional cron expression for refresh
	// +optional
	Schedule string `json:"schedule,omitempty"`

	// Format describes the output file format
	// +optional
	Format MaterializationFormat `json:"format,omitempty"`

	// Destination specifies where the files are written
	// +optional
	Destination MaterializationDestination `json:"destination,omitempty"`
}

MaterializeToSpec configures materialization of query results

type MetricsConfig

type MetricsConfig struct {
	// Enabled specifies if metrics should be exposed
	// +kubebuilder:default=true
	Enabled bool `json:"enabled,omitempty"`

	// Port is the port to expose metrics on
	// +kubebuilder:default=9090
	Port int32 `json:"port,omitempty"`
}

MetricsConfig configures metrics exposure

func (*MetricsConfig) DeepCopy

func (in *MetricsConfig) DeepCopy() *MetricsConfig

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricsConfig.

func (*MetricsConfig) DeepCopyInto

func (in *MetricsConfig) DeepCopyInto(out *MetricsConfig)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ObjectStoreSpec

type ObjectStoreSpec struct {
	// Endpoint is the S3-compatible endpoint URL
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:Pattern=`^https?:\/\/.*`
	Endpoint string `json:"endpoint"`

	// Bucket is the name of the S3 bucket to use
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=3
	// +kubebuilder:validation:MaxLength=63
	Bucket string `json:"bucket"`

	// Region is the S3 region (optional for some providers)
	// +optional
	Region string `json:"region,omitempty"`

	// CredentialsSecret references the secret containing AWS credentials
	// +kubebuilder:validation:Required
	CredentialsSecret SecretReference `json:"credentialsSecret"`
}

ObjectStoreSpec defines the configuration for S3-compatible object storage

func (*ObjectStoreSpec) DeepCopy

func (in *ObjectStoreSpec) DeepCopy() *ObjectStoreSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ObjectStoreSpec.

func (*ObjectStoreSpec) DeepCopyInto

func (in *ObjectStoreSpec) DeepCopyInto(out *ObjectStoreSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ParquetFormat

type ParquetFormat struct {
	// Compression specifies the compression algorithm
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:Enum=ZSTD;SNAPPY
	Compression CompressionType `json:"compression"`

	// Partitioning specifies the partition columns
	// +optional
	Partitioning []string `json:"partitioning,omitempty"`
}

ParquetFormat defines the Parquet file format configuration

func (*ParquetFormat) DeepCopy

func (in *ParquetFormat) DeepCopy() *ParquetFormat

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ParquetFormat.

func (*ParquetFormat) DeepCopyInto

func (in *ParquetFormat) DeepCopyInto(out *ParquetFormat)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PodInfo

type PodInfo struct {
	// Name is the pod name
	Name string `json:"name"`
	// State is the current state
	State PodState `json:"state"`
	// LastUsed is when the pod was last used
	LastUsed metav1.Time `json:"lastUsed,omitempty"`
	// QueryCount is the number of queries executed
	QueryCount int32 `json:"queryCount"`
	// CreatedAt is when the pod was created
	CreatedAt metav1.Time `json:"createdAt"`
}

PodInfo contains information about a warm pod

func (*PodInfo) DeepCopy

func (in *PodInfo) DeepCopy() *PodInfo

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodInfo.

func (*PodInfo) DeepCopyInto

func (in *PodInfo) DeepCopyInto(out *PodInfo)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PodState

type PodState string

PodState represents the state of a warm pod

const (
	// PodStateIdle indicates the pod is ready to accept work
	PodStateIdle PodState = "Idle"
	// PodStateAcquiring indicates the pod is being assigned work
	PodStateAcquiring PodState = "Acquiring"
	// PodStateBusy indicates the pod is executing a query
	PodStateBusy PodState = "Busy"
	// PodStateDraining indicates the pod is finishing work before termination
	PodStateDraining PodState = "Draining"
	// PodStateTerminating indicates the pod is being removed
	PodStateTerminating PodState = "Terminating"
)

type PodTemplate

type PodTemplate struct {
	// Resources defines resource requirements
	Resources corev1.ResourceRequirements `json:"resources,omitempty"`

	// Image is the DuckDB container image
	// +kubebuilder:default="datacatering/duckdb:v1.3.0"
	Image string `json:"image,omitempty"`

	// ImagePullPolicy defines when to pull the image
	// +kubebuilder:default="IfNotPresent"
	ImagePullPolicy corev1.PullPolicy `json:"imagePullPolicy,omitempty"`

	// SecurityContext defines security settings
	SecurityContext *corev1.PodSecurityContext `json:"securityContext,omitempty"`

	// NodeSelector defines node selection constraints
	NodeSelector map[string]string `json:"nodeSelector,omitempty"`

	// Tolerations defines pod tolerations
	Tolerations []corev1.Toleration `json:"tolerations,omitempty"`

	// Affinity defines pod affinity rules
	Affinity *corev1.Affinity `json:"affinity,omitempty"`
}

PodTemplate defines the template for creating warm pods

func (*PodTemplate) DeepCopy

func (in *PodTemplate) DeepCopy() *PodTemplate

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodTemplate.

func (*PodTemplate) DeepCopyInto

func (in *PodTemplate) DeepCopyInto(out *PodTemplate)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PoolPhase

type PoolPhase string

PoolPhase represents the phase of the pool

const (
	// PoolPhasePending indicates the pool is being created
	PoolPhasePending PoolPhase = "Pending"
	// PoolPhaseRunning indicates the pool is running normally
	PoolPhaseRunning PoolPhase = "Running"
	// PoolPhaseFailed indicates the pool has failed
	PoolPhaseFailed PoolPhase = "Failed"
	// PoolPhaseTerminating indicates the pool is being deleted
	PoolPhaseTerminating PoolPhase = "Terminating"
)

type QueueConfig

type QueueConfig struct {
	// MaxLength is the maximum number of queued requests
	// +kubebuilder:default=100
	MaxLength int32 `json:"maxLength,omitempty"`

	// MaxWaitTime is the maximum time a request may wait in the queue
	// +kubebuilder:default="30s"
	MaxWaitTime metav1.Duration `json:"maxWaitTime,omitempty"`

	// Policy sets the queue policy (fifo or weighted)
	// +kubebuilder:default="fifo"
	Policy string `json:"policy,omitempty"`
}

QueueConfig configures request queueing

type SQLType

type SQLType string

SQLType represents a SQL data type

const (
	// SQLTypeInteger represents INTEGER type
	SQLTypeInteger SQLType = "INTEGER"
	// SQLTypeBigInt represents BIGINT type
	SQLTypeBigInt SQLType = "BIGINT"
	// SQLTypeDouble represents DOUBLE type
	SQLTypeDouble SQLType = "DOUBLE"
	// SQLTypeBoolean represents BOOLEAN type
	SQLTypeBoolean SQLType = "BOOLEAN"
	// SQLTypeVarChar represents VARCHAR type
	SQLTypeVarChar SQLType = "VARCHAR"
	// SQLTypeDate represents DATE type
	SQLTypeDate SQLType = "DATE"
	// SQLTypeTimestamp represents TIMESTAMP type
	SQLTypeTimestamp SQLType = "TIMESTAMP"
	// SQLTypeDecimal represents DECIMAL type
	SQLTypeDecimal SQLType = "DECIMAL"
)

type ScalingBehavior

type ScalingBehavior struct {
	// ScaleUpRate is the maximum number of pods to add per interval
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:default=2
	ScaleUpRate int32 `json:"scaleUpRate,omitempty"`

	// ScaleDownRate is the maximum number of pods to remove per interval
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:default=1
	ScaleDownRate int32 `json:"scaleDownRate,omitempty"`

	// ScaleInterval is the interval between scaling evaluations
	// +kubebuilder:default="30s"
	ScaleInterval metav1.Duration `json:"scaleInterval,omitempty"`

	// StabilizationWindow is the time to wait before scaling down
	// +kubebuilder:default="2m"
	StabilizationWindow metav1.Duration `json:"stabilizationWindow,omitempty"`
}

ScalingBehavior configures pool scaling behavior

func (*ScalingBehavior) DeepCopy

func (in *ScalingBehavior) DeepCopy() *ScalingBehavior

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScalingBehavior.

func (*ScalingBehavior) DeepCopyInto

func (in *ScalingBehavior) DeepCopyInto(out *ScalingBehavior)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SecretReference

type SecretReference struct {
	// Name is the name of the secret
	// +kubebuilder:validation:Required
	Name string `json:"name"`

	// AccessKeyField is the field in the secret containing the access key
	// +kubebuilder:default=access-key
	AccessKeyField string `json:"accessKeyField,omitempty"`

	// SecretKeyField is the field in the secret containing the secret key
	// +kubebuilder:default=secret-key
	SecretKeyField string `json:"secretKeyField,omitempty"`
}

SecretReference contains the reference to a secret

func (*SecretReference) DeepCopy

func (in *SecretReference) DeepCopy() *SecretReference

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecretReference.

func (*SecretReference) DeepCopyInto

func (in *SecretReference) DeepCopyInto(out *SecretReference)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type TableMode

type TableMode string

TableMode represents the table write mode

const (
	// TableModeAppend represents append mode
	TableModeAppend TableMode = "append"
	// TableModeOverwrite represents overwrite mode
	TableModeOverwrite TableMode = "overwrite"
)

type TablePhase

type TablePhase string

TablePhase represents the phase of a DuckLakeTable

const (
	// TablePhasePending indicates the table is being created
	TablePhasePending TablePhase = "Pending"
	// TablePhaseSucceeded indicates the table is ready
	TablePhaseSucceeded TablePhase = "Succeeded"
	// TablePhaseFailed indicates the table failed to create
	TablePhaseFailed TablePhase = "Failed"
)

type VersionEntry

type VersionEntry struct {
	// ID is the version identifier
	ID string `json:"id"`
	// Timestamp records when the snapshot was taken
	Timestamp metav1.Time `json:"timestamp"`
}

VersionEntry represents a stored resource version

type VersioningSpec

type VersioningSpec struct {
	// Enabled toggles versioning
	// +kubebuilder:default=false
	Enabled bool `json:"enabled"`

	// Retention defines how long to keep versions
	// +optional
	Retention metav1.Duration `json:"retention,omitempty"`

	// Strategy determines versioning backend implementation
	// +kubebuilder:default=snapshot
	// +optional
	Strategy string `json:"strategy,omitempty"`
}

VersioningSpec controls automatic snapshotting of metadata for catalogs and tables +kubebuilder:object:generate=true +kubebuilder:resource:scope=Namespaced

Jump to

Keyboard shortcuts

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