mirror of
https://github.com/kubernetes-sigs/node-feature-discovery.git
synced 2025-03-05 16:27:05 +00:00
Support backreferencing of output values from previous rules. Enables complex rule setups where custom features are further combined together to form even more sophisticated higher level labels. The labels created by preceding rules are available as a special 'rule.matched' feature (for matchFeatures to use). If referencing rules accross multiple configs/CRDs care must be taken with the ordering. Processing order of rules in nfd-worker: 1. Static rules 2. Files from /etc/kubernetes/node-feature-discovery/custom.d/ in alphabetical order. Subdirectories are processed by reading their files in alphabetical order. 3. Custom rules from main nfd-worker.conf In nfd-master, NodeFeatureRule objects are processed in alphabetical order (based on their metadata.name). This patch also adds new 'vars' fields to the rule spec. Like 'labels', it is a map of key-value pairs but no labels are generated from these. The values specified in 'vars' are only added for backreferencing into the 'rules.matched' feature. This may by desired in schemes where the output of certain rules is only used as intermediate variables for other rules and no labels out of these are wanted. An example setup: - name: "kernel feature" labels: kernel-feature: matchFeatures: - feature: kernel.version matchExpressions: major: {op: Gt, value: ["4"]} - name: "intermediate var feature" vars: nolabel-feature: "true" matchFeatures: - feature: cpu.cpuid matchExpressions: AVX512F: {op: Exists} - feature: pci.device matchExpressions: vendor: {op: In, value: ["8086"]} device: {op: In, value: ["1234", "1235"]} - name: top-level-feature matchFeatures: - feature: rule.matched matchExpressions: kernel-feature: "true" nolabel-feature: "true"
350 lines
9.4 KiB
Go
350 lines
9.4 KiB
Go
//go:build !ignore_autogenerated
|
|
// +build !ignore_autogenerated
|
|
|
|
// Code generated by controller-gen. DO NOT EDIT.
|
|
|
|
package v1alpha1
|
|
|
|
import (
|
|
"k8s.io/apimachinery/pkg/runtime"
|
|
)
|
|
|
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
|
func (in Expressions) DeepCopyInto(out *Expressions) {
|
|
{
|
|
in := &in
|
|
*out = make(Expressions, len(*in))
|
|
for key, val := range *in {
|
|
var outVal *MatchExpression
|
|
if val == nil {
|
|
(*out)[key] = nil
|
|
} else {
|
|
in, out := &val, &outVal
|
|
*out = new(MatchExpression)
|
|
(*in).DeepCopyInto(*out)
|
|
}
|
|
(*out)[key] = outVal
|
|
}
|
|
}
|
|
}
|
|
|
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Expressions.
|
|
func (in Expressions) DeepCopy() Expressions {
|
|
if in == nil {
|
|
return nil
|
|
}
|
|
out := new(Expressions)
|
|
in.DeepCopyInto(out)
|
|
return *out
|
|
}
|
|
|
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
|
func (in FeatureMatcher) DeepCopyInto(out *FeatureMatcher) {
|
|
{
|
|
in := &in
|
|
*out = make(FeatureMatcher, len(*in))
|
|
for i := range *in {
|
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
|
}
|
|
}
|
|
}
|
|
|
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FeatureMatcher.
|
|
func (in FeatureMatcher) DeepCopy() FeatureMatcher {
|
|
if in == nil {
|
|
return nil
|
|
}
|
|
out := new(FeatureMatcher)
|
|
in.DeepCopyInto(out)
|
|
return *out
|
|
}
|
|
|
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
|
func (in *FeatureMatcherTerm) DeepCopyInto(out *FeatureMatcherTerm) {
|
|
*out = *in
|
|
in.MatchExpressions.DeepCopyInto(&out.MatchExpressions)
|
|
}
|
|
|
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FeatureMatcherTerm.
|
|
func (in *FeatureMatcherTerm) DeepCopy() *FeatureMatcherTerm {
|
|
if in == nil {
|
|
return nil
|
|
}
|
|
out := new(FeatureMatcherTerm)
|
|
in.DeepCopyInto(out)
|
|
return out
|
|
}
|
|
|
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
|
func (in *MatchAnyElem) DeepCopyInto(out *MatchAnyElem) {
|
|
*out = *in
|
|
if in.MatchFeatures != nil {
|
|
in, out := &in.MatchFeatures, &out.MatchFeatures
|
|
*out = make(FeatureMatcher, len(*in))
|
|
for i := range *in {
|
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
|
}
|
|
}
|
|
}
|
|
|
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MatchAnyElem.
|
|
func (in *MatchAnyElem) DeepCopy() *MatchAnyElem {
|
|
if in == nil {
|
|
return nil
|
|
}
|
|
out := new(MatchAnyElem)
|
|
in.DeepCopyInto(out)
|
|
return out
|
|
}
|
|
|
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
|
func (in *MatchExpression) DeepCopyInto(out *MatchExpression) {
|
|
*out = *in
|
|
if in.Value != nil {
|
|
in, out := &in.Value, &out.Value
|
|
*out = make(MatchValue, len(*in))
|
|
copy(*out, *in)
|
|
}
|
|
in.valueRe.DeepCopyInto(&out.valueRe)
|
|
}
|
|
|
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MatchExpression.
|
|
func (in *MatchExpression) DeepCopy() *MatchExpression {
|
|
if in == nil {
|
|
return nil
|
|
}
|
|
out := new(MatchExpression)
|
|
in.DeepCopyInto(out)
|
|
return out
|
|
}
|
|
|
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
|
func (in *MatchExpressionSet) DeepCopyInto(out *MatchExpressionSet) {
|
|
*out = *in
|
|
if in.Expressions != nil {
|
|
in, out := &in.Expressions, &out.Expressions
|
|
*out = make(Expressions, len(*in))
|
|
for key, val := range *in {
|
|
var outVal *MatchExpression
|
|
if val == nil {
|
|
(*out)[key] = nil
|
|
} else {
|
|
in, out := &val, &outVal
|
|
*out = new(MatchExpression)
|
|
(*in).DeepCopyInto(*out)
|
|
}
|
|
(*out)[key] = outVal
|
|
}
|
|
}
|
|
}
|
|
|
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MatchExpressionSet.
|
|
func (in *MatchExpressionSet) DeepCopy() *MatchExpressionSet {
|
|
if in == nil {
|
|
return nil
|
|
}
|
|
out := new(MatchExpressionSet)
|
|
in.DeepCopyInto(out)
|
|
return out
|
|
}
|
|
|
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
|
func (in MatchValue) DeepCopyInto(out *MatchValue) {
|
|
{
|
|
in := &in
|
|
*out = make(MatchValue, len(*in))
|
|
copy(*out, *in)
|
|
}
|
|
}
|
|
|
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MatchValue.
|
|
func (in MatchValue) DeepCopy() MatchValue {
|
|
if in == nil {
|
|
return nil
|
|
}
|
|
out := new(MatchValue)
|
|
in.DeepCopyInto(out)
|
|
return *out
|
|
}
|
|
|
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
|
func (in MatchedInstance) DeepCopyInto(out *MatchedInstance) {
|
|
{
|
|
in := &in
|
|
*out = make(MatchedInstance, len(*in))
|
|
for key, val := range *in {
|
|
(*out)[key] = val
|
|
}
|
|
}
|
|
}
|
|
|
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MatchedInstance.
|
|
func (in MatchedInstance) DeepCopy() MatchedInstance {
|
|
if in == nil {
|
|
return nil
|
|
}
|
|
out := new(MatchedInstance)
|
|
in.DeepCopyInto(out)
|
|
return *out
|
|
}
|
|
|
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
|
func (in *MatchedKey) DeepCopyInto(out *MatchedKey) {
|
|
*out = *in
|
|
}
|
|
|
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MatchedKey.
|
|
func (in *MatchedKey) DeepCopy() *MatchedKey {
|
|
if in == nil {
|
|
return nil
|
|
}
|
|
out := new(MatchedKey)
|
|
in.DeepCopyInto(out)
|
|
return out
|
|
}
|
|
|
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
|
func (in *MatchedValue) DeepCopyInto(out *MatchedValue) {
|
|
*out = *in
|
|
}
|
|
|
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MatchedValue.
|
|
func (in *MatchedValue) DeepCopy() *MatchedValue {
|
|
if in == nil {
|
|
return nil
|
|
}
|
|
out := new(MatchedValue)
|
|
in.DeepCopyInto(out)
|
|
return out
|
|
}
|
|
|
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
|
func (in *NodeFeatureRule) DeepCopyInto(out *NodeFeatureRule) {
|
|
*out = *in
|
|
out.TypeMeta = in.TypeMeta
|
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
|
in.Spec.DeepCopyInto(&out.Spec)
|
|
}
|
|
|
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeFeatureRule.
|
|
func (in *NodeFeatureRule) DeepCopy() *NodeFeatureRule {
|
|
if in == nil {
|
|
return nil
|
|
}
|
|
out := new(NodeFeatureRule)
|
|
in.DeepCopyInto(out)
|
|
return out
|
|
}
|
|
|
|
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
|
func (in *NodeFeatureRule) DeepCopyObject() runtime.Object {
|
|
if c := in.DeepCopy(); c != nil {
|
|
return c
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
|
func (in *NodeFeatureRuleList) DeepCopyInto(out *NodeFeatureRuleList) {
|
|
*out = *in
|
|
out.TypeMeta = in.TypeMeta
|
|
in.ListMeta.DeepCopyInto(&out.ListMeta)
|
|
if in.Items != nil {
|
|
in, out := &in.Items, &out.Items
|
|
*out = make([]NodeFeatureRule, len(*in))
|
|
for i := range *in {
|
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
|
}
|
|
}
|
|
}
|
|
|
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeFeatureRuleList.
|
|
func (in *NodeFeatureRuleList) DeepCopy() *NodeFeatureRuleList {
|
|
if in == nil {
|
|
return nil
|
|
}
|
|
out := new(NodeFeatureRuleList)
|
|
in.DeepCopyInto(out)
|
|
return out
|
|
}
|
|
|
|
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
|
func (in *NodeFeatureRuleList) DeepCopyObject() runtime.Object {
|
|
if c := in.DeepCopy(); c != nil {
|
|
return c
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
|
func (in *NodeFeatureRuleSpec) DeepCopyInto(out *NodeFeatureRuleSpec) {
|
|
*out = *in
|
|
if in.Rules != nil {
|
|
in, out := &in.Rules, &out.Rules
|
|
*out = make([]Rule, len(*in))
|
|
for i := range *in {
|
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
|
}
|
|
}
|
|
}
|
|
|
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeFeatureRuleSpec.
|
|
func (in *NodeFeatureRuleSpec) DeepCopy() *NodeFeatureRuleSpec {
|
|
if in == nil {
|
|
return nil
|
|
}
|
|
out := new(NodeFeatureRuleSpec)
|
|
in.DeepCopyInto(out)
|
|
return out
|
|
}
|
|
|
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
|
func (in *Rule) DeepCopyInto(out *Rule) {
|
|
*out = *in
|
|
if in.Labels != nil {
|
|
in, out := &in.Labels, &out.Labels
|
|
*out = make(map[string]string, len(*in))
|
|
for key, val := range *in {
|
|
(*out)[key] = val
|
|
}
|
|
}
|
|
if in.Vars != nil {
|
|
in, out := &in.Vars, &out.Vars
|
|
*out = make(map[string]string, len(*in))
|
|
for key, val := range *in {
|
|
(*out)[key] = val
|
|
}
|
|
}
|
|
if in.MatchFeatures != nil {
|
|
in, out := &in.MatchFeatures, &out.MatchFeatures
|
|
*out = make(FeatureMatcher, len(*in))
|
|
for i := range *in {
|
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
|
}
|
|
}
|
|
if in.MatchAny != nil {
|
|
in, out := &in.MatchAny, &out.MatchAny
|
|
*out = make([]MatchAnyElem, len(*in))
|
|
for i := range *in {
|
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
|
}
|
|
}
|
|
if in.labelsTemplate != nil {
|
|
in, out := &in.labelsTemplate, &out.labelsTemplate
|
|
*out = (*in).DeepCopy()
|
|
}
|
|
if in.varsTemplate != nil {
|
|
in, out := &in.varsTemplate, &out.varsTemplate
|
|
*out = (*in).DeepCopy()
|
|
}
|
|
}
|
|
|
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Rule.
|
|
func (in *Rule) DeepCopy() *Rule {
|
|
if in == nil {
|
|
return nil
|
|
}
|
|
out := new(Rule)
|
|
in.DeepCopyInto(out)
|
|
return out
|
|
}
|