resolution

package
v0.0.0-...-1377e06 Latest Latest
Warning

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

Go to latest
Published: May 10, 2026 License: Apache-2.0 Imports: 3 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ComponentWebServer       = common.ComponentWebServer
	ComponentCeleryWorker    = common.ComponentCeleryWorker
	ComponentCeleryBeat      = common.ComponentCeleryBeat
	ComponentCeleryFlower    = common.ComponentCeleryFlower
	ComponentWebsocketServer = common.ComponentWebsocketServer
	ComponentMcpServer       = common.ComponentMcpServer
	ComponentInit            = common.ComponentInit
)

Component type constants re-exported for convenience.

Variables

This section is empty.

Functions

func MergeContainerPorts

func MergeContainerPorts(slices ...[]corev1.ContainerPort) []corev1.ContainerPort

MergeContainerPorts merges multiple container port slices. Later entries with the same Name replace earlier entries in place to preserve ordering.

func MergeContainerTemplate

MergeContainerTemplate field-level merges two ContainerTemplates and folds in operator-injected env vars and volume mounts.

func MergeContainers

func MergeContainers(slices ...[]corev1.Container) []corev1.Container

MergeContainers concatenates multiple container slices (for sidecars/initContainers). Later entries with the same Name replace earlier entries.

func MergeDeploymentTemplate

func MergeDeploymentTemplate(comp, tl *supersetv1alpha1.DeploymentTemplate) *supersetv1alpha1.DeploymentTemplate

MergeDeploymentTemplate field-level merges two DeploymentTemplates. Only contains Deployment-level fields (no nested PodTemplate).

func MergeEnvFromSources

func MergeEnvFromSources(slices ...[]corev1.EnvFromSource) []corev1.EnvFromSource

MergeEnvFromSources concatenates multiple EnvFromSource slices. Unlike named resources (EnvVar, Volume, Container), EnvFromSource entries are not deduplicated because there is no single natural key: an EnvFromSource can reference either a ConfigMap or a Secret, each with an optional Prefix, and the same source may be intentionally included multiple times with different prefixes.

func MergeEnvVars

func MergeEnvVars(slices ...[]corev1.EnvVar) []corev1.EnvVar

MergeEnvVars merges multiple env var slices. Later entries with the same Name replace earlier entries in place to preserve ordering.

func MergeHostAliases

func MergeHostAliases(slices ...[]corev1.HostAlias) []corev1.HostAlias

MergeHostAliases merges multiple host alias slices. Later entries with the same IP replace earlier entries in place to preserve ordering.

func MergeMaps

func MergeMaps(maps ...map[string]string) map[string]string

MergeMaps merges multiple string maps. Later maps take precedence on key conflict. Returns nil if the result is empty.

func MergePodTemplate

func MergePodTemplate(comp, tl *supersetv1alpha1.PodTemplate, operatorLabels map[string]string, op *OperatorInjected) *supersetv1alpha1.PodTemplate

MergePodTemplate field-level merges two PodTemplates and folds in operator-injected values (volumes, init containers, labels).

func MergeVolumeMounts

func MergeVolumeMounts(slices ...[]corev1.VolumeMount) []corev1.VolumeMount

MergeVolumeMounts merges multiple volume mount slices. Later entries with the same Name replace earlier entries in place to preserve ordering.

func MergeVolumes

func MergeVolumes(slices ...[]corev1.Volume) []corev1.Volume

MergeVolumes merges multiple volume slices. Later entries with the same Name replace earlier entries in place to preserve ordering.

func Ptr

func Ptr[T any](v T) *T

Ptr returns a pointer to the given value. Delegates to common.Ptr.

func ResolveOverridableMap

func ResolveOverridableMap(override, defaultVal map[string]string) map[string]string

ResolveOverridableMap returns the override if it's non-nil (even if empty), otherwise returns the default. This enables overriding with an empty map.

func ResolveOverridableSlice

func ResolveOverridableSlice[T any](override, defaultVal []T) []T

ResolveOverridableSlice returns the override if it's non-nil (even if empty), otherwise returns the default. This enables overriding with an empty slice.

func ResolveOverridableValue

func ResolveOverridableValue[T any](override, defaultVal *T) *T

ResolveOverridableValue returns the override if non-nil, otherwise the default.

func ResolveResource

func ResolveResource(values ...*corev1.ResourceRequirements) corev1.ResourceRequirements

ResolveResource returns the first non-nil ResourceRequirements.

func ResolveScalar

func ResolveScalar[T any](values ...*T) T

ResolveScalar returns the first non-nil value from the provided pointers. Returns the zero value of T if all are nil.

Types

type ComponentInput

type ComponentInput struct {
	SharedInput
}

ComponentInput captures per-component fields. Embeds SharedInput.

type ComponentType

type ComponentType = common.ComponentType

ComponentType is an alias for common.ComponentType.

type FlatSpec

type FlatSpec struct {
	Replicas            int32
	DeploymentTemplate  *supersetv1alpha1.DeploymentTemplate
	PodTemplate         *supersetv1alpha1.PodTemplate
	Autoscaling         *supersetv1alpha1.AutoscalingSpec
	PodDisruptionBudget *supersetv1alpha1.PDBSpec
}

FlatSpec is the fully resolved output from the resolution engine.

func ResolveChildSpec

func ResolveChildSpec(
	componentType ComponentType,
	topLevel *SharedInput,
	component *ComponentInput,
	operatorLabels map[string]string,
	operator *OperatorInjected,
) *FlatSpec

ResolveChildSpec produces a fully-flattened spec from a 2-level model: top-level SharedInput + per-component ComponentInput. The DeploymentTemplate is field-level merged (component wins on conflict for scalars/structs, collections merge by name or append). Operator-injected values are folded in at the appropriate template level.

type OperatorInjected

type OperatorInjected struct {
	Env            []corev1.EnvVar
	Volumes        []corev1.Volume
	VolumeMounts   []corev1.VolumeMount
	InitContainers []corev1.Container
}

OperatorInjected holds volumes, mounts, env vars, and init containers that the operator injects (e.g., config mount, TLS mounts, config env vars).

type SharedInput

type SharedInput struct {
	Replicas            *int32
	DeploymentTemplate  *supersetv1alpha1.DeploymentTemplate
	PodTemplate         *supersetv1alpha1.PodTemplate
	Autoscaling         *supersetv1alpha1.AutoscalingSpec
	PodDisruptionBudget *supersetv1alpha1.PDBSpec
}

SharedInput holds top-level or per-component fields for resolution.

Jump to

Keyboard shortcuts

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