config

package
v0.12.0 Latest Latest
Warning

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

Go to latest
Published: Sep 22, 2025 License: Apache-2.0 Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// SUPPORTED_OPERATING_MODES contains all supported operating modes. Used for validation.
	SUPPORTED_OPERATING_MODES = []QuotaIncreaseOperatingMode{CUMULATIVE, MAXIMUM, SINGULAR}
)

Functions

func Validate

func Validate(cfg *QuotaControllerConfig) error

Validate validates the QuotaController configuration. This is equivalent to ValidateRaw().ToAggregate().

func ValidateRaw

func ValidateRaw(cfg *QuotaControllerConfig) field.ErrorList

ValidateRaw works like validate, but it returns a list of errors instead of an aggregated one.

Types

type QuotaControllerConfig

type QuotaControllerConfig struct {
	// ExternalQuotaDefinitionNames contains the names of the QuotaDefinitions that are managed by other QuotaControllers running in the same cluster.
	// This is used to make sure that only one controller tries to manage a given namespace.
	// If only one QuotaController is running in the cluster, this should be left empty.
	// +optional
	ExternalQuotaDefinitionNames []string `json:"externalQuotaDefinitionNames,omitempty"`

	// Quotas is a list of QuotaDefinitions.
	Quotas []*QuotaDefinition `json:"quotas"`
}

func LoadConfig

func LoadConfig(path string) (*QuotaControllerConfig, error)

LoadConfig reads the configuration file from a given path and parses it into a QuotaControllerConfig object.

func (*QuotaControllerConfig) GetActiveQuotaDefinitions

func (cfg *QuotaControllerConfig) GetActiveQuotaDefinitions() sets.Set[string]

GetActiveQuotaDefinitions returns the set of known active QuotaDefinitions.

type QuotaDefinition

type QuotaDefinition struct {
	// Name is the identifier for this quota definition.
	Name string `json:"name"`
	// Selector is a label selector that specifies which namespaces this quota definition should be applied to.
	// If nil, all namespaces are selected.
	// +optional
	Selector *metav1.LabelSelector `json:"selector"`
	// ResourceQuotaTemplate is the template for the ResourceQuota that should be created for all namespaces which match the selector.
	ResourceQuotaTemplate *ResourceQuotaTemplate `json:"template"`
	// Mode is the mode in which the quota should be increased.
	// cumulative: multiple quota increases for the same resource will add up.
	// maximum: the highest quota increase for the same resource will be used.
	// singular: only one quota increase for the same resource will be used (specified via label on the namespace).
	Mode QuotaIncreaseOperatingMode `json:"mode"`
	// DeleteIneffectiveQuotas specifies whether ResourceQuotas that are no longer effective should be deleted automatically.
	// +optional
	DeleteIneffectiveQuotas bool `json:"deleteIneffectiveQuotas,omitempty"`
}

func (*QuotaDefinition) BaseResourceQuota

func (d *QuotaDefinition) BaseResourceQuota() *corev1.ResourceQuota

BaseResourceQuota returns a ResourceQuota object based on the configured template. A deep copy is returned, the returned object can be modified without affecting the original template. Note that the namespace is missing and has to be set afterwards.

func (*QuotaDefinition) DeepCopy

func (d *QuotaDefinition) DeepCopy() *QuotaDefinition

type QuotaIncreaseOperatingMode

type QuotaIncreaseOperatingMode string
const (
	// CUMULATIVE means that multiple quota increases for the same resource will add up.
	CUMULATIVE QuotaIncreaseOperatingMode = "cumulative"
	// MAXIMUM means that the highest quota increase for the same resource will be used.
	MAXIMUM QuotaIncreaseOperatingMode = "maximum"
	// SINGULAR means that only one quota increase for the same resource will be used.
	SINGULAR QuotaIncreaseOperatingMode = "singular"
)

type ResourceQuotaTemplate

type ResourceQuotaTemplate struct {
	// Annotations are the annotations that should be added to the generated ResourceQuota.
	Annotations map[string]string `json:"annotations,omitempty"`
	// Labels are the labels that should be added to the generated ResourceQuota.
	Labels map[string]string `json:"labels,omitempty"`
	// Spec is the spec of the generated ResourceQuota.
	Spec *corev1.ResourceQuotaSpec `json:"spec"`
}

func (*ResourceQuotaTemplate) DeepCopy

Jump to

Keyboard shortcuts

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