Files
capsule/pkg/runtime/selectors/fields.go
T

44 lines
1.1 KiB
Go

// Copyright 2020-2026 Project Capsule Authors
// SPDX-License-Identifier: Apache-2.0
package selectors
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
"github.com/projectcapsule/capsule/pkg/runtime/jsonpath"
)
type FieldSelectorOperator string
const (
FieldSelectorTruthy FieldSelectorOperator = "truthy"
FieldSelectorEquals FieldSelectorOperator = "equals"
FieldSelectorNotEquals FieldSelectorOperator = "not-equals"
)
// +kubebuilder:object:generate=true
type SelectorWithFields struct {
// Select Items based on their labels.
*metav1.LabelSelector `json:",inline"`
// Additional boolean JSONPath expressions.
// All must evaluate to true for this selector to match.
// +optional
FieldSelectors []string `json:"fieldSelectors,omitempty"`
}
type CompiledSelectorWithFields struct {
LabelSelector labels.Selector
FieldMatchers []CompiledFieldSelector
}
type CompiledFieldSelector struct {
Raw string
Path string
Operator FieldSelectorOperator
Value string
Compiled *jsonpath.CompiledJSONPath
}