-
Notifications
You must be signed in to change notification settings - Fork 256
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #653 from marquiz/devel/nodefeaturerule-crd
specify CRD for custom labeling rules
- Loading branch information
Showing
28 changed files
with
1,531 additions
and
561 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
apiVersion: nfd.k8s-sigs.io/v1alpha1 | ||
kind: NodeFeatureRule | ||
metadata: | ||
name: my-rule | ||
spec: | ||
rules: | ||
# The following feature demonstrates the capabilities of the matchFeatures and | ||
# matchAny matchers. | ||
- name: "my feature rule" | ||
labels: | ||
"my-complex-feature": "my-value" | ||
# matchFeatures implements a logical AND over feature matchers. | ||
matchFeatures: | ||
- feature: cpu.cpuid | ||
matchExpressions: | ||
AVX512F: {op: Exists} | ||
- feature: cpu.cstate | ||
matchExpressions: | ||
enabled: {op: IsTrue} | ||
- feature: cpu.pstate | ||
matchExpressions: | ||
no_turbo: {op: IsFalse} | ||
scaling_governor: {op: In, value: ["performance"]} | ||
- feature: cpu.rdt | ||
matchExpressions: | ||
RDTL3CA: {op: Exists} | ||
- feature: cpu.sst | ||
matchExpressions: | ||
bf.enabled: {op: IsTrue} | ||
- feature: cpu.topology | ||
matchExpressions: | ||
hardware_multithreading: {op: IsFalse} | ||
|
||
- feature: kernel.config | ||
matchExpressions: | ||
X86: {op: Exists} | ||
LSM: {op: InRegexp, value: ["apparmor"]} | ||
- feature: kernel.loadedmodule | ||
matchExpressions: | ||
e1000e: {op: Exists} | ||
- feature: kernel.selinux | ||
matchExpressions: | ||
enabled: {op: IsFalse} | ||
- feature: kernel.version | ||
matchExpressions: | ||
major: {op: In, value: ["5"]} | ||
minor: {op: Gt, value: ["10"]} | ||
|
||
- feature: system.osrelease | ||
matchExpressions: | ||
ID: {op: In, value: ["fedora", "centos"]} | ||
- feature: system.name | ||
matchExpressions: | ||
nodename: {op: InRegexp, value: ["^worker-X"]} | ||
|
||
- feature: local.label | ||
matchExpressions: | ||
custom-feature-knob: {op: Gt, value: ["100"]} | ||
|
||
# matchAny implements a logical IF over all listed matchers (i.e. at | ||
# least one must match) | ||
matchAny: | ||
- matchFeatures: | ||
- feature: pci.device | ||
matchExpressions: | ||
vendor: {op: In, value: ["8086"]} | ||
class: {op: In, value: ["0200"]} | ||
- feature: usb.device | ||
matchExpressions: | ||
vendor: {op: In, value: ["8086"]} | ||
class: {op: In, value: ["02"]} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
apiVersion: kustomize.config.k8s.io/v1beta1 | ||
kind: Kustomization | ||
|
||
resources: | ||
- nodefeaturerule-crd.yaml |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,208 @@ | ||
|
||
--- | ||
apiVersion: apiextensions.k8s.io/v1 | ||
kind: CustomResourceDefinition | ||
metadata: | ||
annotations: | ||
controller-gen.kubebuilder.io/version: v0.7.0 | ||
creationTimestamp: null | ||
name: nodefeaturerules.nfd.k8s-sigs.io | ||
spec: | ||
group: nfd.k8s-sigs.io | ||
names: | ||
kind: NodeFeatureRule | ||
listKind: NodeFeatureRuleList | ||
plural: nodefeaturerules | ||
singular: nodefeaturerule | ||
scope: Cluster | ||
versions: | ||
- name: v1alpha1 | ||
schema: | ||
openAPIV3Schema: | ||
description: NodeFeatureRule resource specifies a configuration for feature-based | ||
customization of node objects, such as node labeling. | ||
properties: | ||
apiVersion: | ||
description: 'APIVersion defines the versioned schema of this representation | ||
of an object. Servers should convert recognized schemas to the latest | ||
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' | ||
type: string | ||
kind: | ||
description: 'Kind is a string value representing the REST resource this | ||
object represents. Servers may infer this from the endpoint the client | ||
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' | ||
type: string | ||
metadata: | ||
type: object | ||
spec: | ||
description: NodeFeatureRuleSpec describes a NodeFeatureRule. | ||
properties: | ||
rules: | ||
description: Rules is a list of node customization rules. | ||
items: | ||
description: Rule defines a rule for node customization such as | ||
labeling. | ||
properties: | ||
labels: | ||
additionalProperties: | ||
type: string | ||
description: Labels to create if the rule matches. | ||
type: object | ||
labelsTemplate: | ||
description: LabelsTemplate specifies a template to expand for | ||
dynamically generating multiple labels. Data (after template | ||
expansion) must be keys with an optional value (<key>[=<value>]) | ||
separated by newlines. | ||
type: string | ||
matchAny: | ||
description: MatchAny specifies a list of matchers one of which | ||
must match. | ||
items: | ||
description: MatchAnyElem specifies one sub-matcher of MatchAny. | ||
properties: | ||
matchFeatures: | ||
description: MatchFeatures specifies a set of matcher | ||
terms all of which must match. | ||
items: | ||
description: FeatureMatcherTerm defines requirements | ||
against one feature set. All requirements (specified | ||
as MatchExpressions) are evaluated against each element | ||
in the feature set. | ||
properties: | ||
feature: | ||
type: string | ||
matchExpressions: | ||
additionalProperties: | ||
description: "MatchExpression specifies an expression | ||
to evaluate against a set of input values. It | ||
contains an operator that is applied when matching | ||
the input and an array of values that the operator | ||
evaluates the input against. \n NB: CreateMatchExpression | ||
or MustCreateMatchExpression() should be used | ||
for creating new instances. NB: Validate() | ||
must be called if Op or Value fields are modified | ||
or if a new instance is created from scratch | ||
without using the helper functions." | ||
properties: | ||
op: | ||
description: Op is the operator to be applied. | ||
enum: | ||
- In | ||
- NotIn | ||
- InRegexp | ||
- Exists | ||
- DoesNotExist | ||
- Gt | ||
- Lt | ||
- GtLt | ||
- IsTrue | ||
- IsFalse | ||
type: string | ||
value: | ||
description: Value is the list of values that | ||
the operand evaluates the input against. | ||
Value should be empty if the operator is | ||
Exists, DoesNotExist, IsTrue or IsFalse. | ||
Value should contain exactly one element | ||
if the operator is Gt or Lt and exactly | ||
two elements if the operator is GtLt. In | ||
other cases Value should contain at least | ||
one element. | ||
items: | ||
type: string | ||
type: array | ||
required: | ||
- op | ||
type: object | ||
description: MatchExpressionSet contains a set of | ||
MatchExpressions, each of which is evaluated against | ||
a set of input values. | ||
type: object | ||
required: | ||
- feature | ||
- matchExpressions | ||
type: object | ||
type: array | ||
required: | ||
- matchFeatures | ||
type: object | ||
type: array | ||
matchFeatures: | ||
description: MatchFeatures specifies a set of matcher terms | ||
all of which must match. | ||
items: | ||
description: FeatureMatcherTerm defines requirements against | ||
one feature set. All requirements (specified as MatchExpressions) | ||
are evaluated against each element in the feature set. | ||
properties: | ||
feature: | ||
type: string | ||
matchExpressions: | ||
additionalProperties: | ||
description: "MatchExpression specifies an expression | ||
to evaluate against a set of input values. It contains | ||
an operator that is applied when matching the input | ||
and an array of values that the operator evaluates | ||
the input against. \n NB: CreateMatchExpression or | ||
MustCreateMatchExpression() should be used for creating | ||
new instances. NB: Validate() must be called if Op | ||
or Value fields are modified or if a new instance | ||
is created from scratch without using the helper functions." | ||
properties: | ||
op: | ||
description: Op is the operator to be applied. | ||
enum: | ||
- In | ||
- NotIn | ||
- InRegexp | ||
- Exists | ||
- DoesNotExist | ||
- Gt | ||
- Lt | ||
- GtLt | ||
- IsTrue | ||
- IsFalse | ||
type: string | ||
value: | ||
description: Value is the list of values that the | ||
operand evaluates the input against. Value should | ||
be empty if the operator is Exists, DoesNotExist, | ||
IsTrue or IsFalse. Value should contain exactly | ||
one element if the operator is Gt or Lt and exactly | ||
two elements if the operator is GtLt. In other | ||
cases Value should contain at least one element. | ||
items: | ||
type: string | ||
type: array | ||
required: | ||
- op | ||
type: object | ||
description: MatchExpressionSet contains a set of MatchExpressions, | ||
each of which is evaluated against a set of input values. | ||
type: object | ||
required: | ||
- feature | ||
- matchExpressions | ||
type: object | ||
type: array | ||
name: | ||
description: Name of the rule. | ||
type: string | ||
required: | ||
- name | ||
type: object | ||
type: array | ||
required: | ||
- rules | ||
type: object | ||
required: | ||
- spec | ||
type: object | ||
served: true | ||
storage: true | ||
status: | ||
acceptedNames: | ||
kind: "" | ||
plural: "" | ||
conditions: [] | ||
storedVersions: [] |
Oops, something went wrong.