mirror of
https://github.com/kubernetes-sigs/node-feature-discovery.git
synced 2025-03-16 21:38:23 +00:00
Separate feature discovery and creation of feature labels. Generalize the discovery of nvdimm devices so that they can be matched in custom label rules in a similar fashion as pci and usb devices. Available attributes for matching nvdimm devices are limited to: - devtype - mode For numa we now detect the number of numa nodes which can be matched agains in custom label rules. Labels created by the memory feature source are unchanged. The new features being detected are available in custom rules only. Example custom rule: - name: "my memory rule" labels: my-memory-feature: "true" matchFeatures: - feature: memory.numa matchExpressions: "node_count": {op: Gt, value: ["3"]} - feature: memory.nv matchExpressions: "devtype" {op: In, value: ["nd_dax"]} Also, add minimalist unit test.
89 lines
2.8 KiB
YAML
89 lines
2.8 KiB
YAML
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: storage.block
|
|
matchExpressions:
|
|
rotational: {op: In, value: ["0"]}
|
|
dax: {op: In, value: ["0"]}
|
|
|
|
- feature: network.device
|
|
matchExpressions:
|
|
operstate: {op: In, value: ["up"]}
|
|
speed: {op: Gt, value: ["100"]}
|
|
|
|
- feature: memory.numa
|
|
matchExpressions:
|
|
node_count: {op: Gt, value: ["2"]}
|
|
- feature: memory.nv
|
|
matchExpressions:
|
|
devtype: {op: In, value: ["nd_dax"]}
|
|
mode: {op: In, value: ["memory"]}
|
|
|
|
- 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"]}
|