--- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.14.0 name: nicdevices.configuration.net.nvidia.com spec: group: configuration.net.nvidia.com names: kind: NicDevice listKind: NicDeviceList plural: nicdevices singular: nicdevice scope: Namespaced versions: - name: v1alpha1 schema: openAPIV3Schema: description: NicDevice is the Schema for the nicdevices API 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: NicDeviceSpec defines the desired state of NicDevice properties: configuration: description: Configuration specifies the configuration requested by NicConfigurationTemplate properties: resetToDefault: description: |- ResetToDefault specifies whether node agent needs to perform a reset flow. In NIC Configuration Operator template v0.1.14 BF2/BF3 DPUs (not SuperNics) FW reset flow isn't supported. The following operations will be performed: * Nvconfig reset of all non-volatile configurations - Mstconfig -d reset for each PF - Mstconfig -d set ADVANCED_PCI_SETTINGS=1 * Node reboot - Applies new NIC NV config - Will undo any runtime configuration previously performed for the device/driver type: boolean template: description: Configuration template applied from the NicConfigurationTemplate CR properties: gpuDirectOptimized: description: GPU Direct optimization settings properties: enabled: description: Optimize GPU Direct type: boolean env: description: GPU direct environment, e.g. Baremetal type: string required: - enabled - env type: object linkType: description: LinkType to be configured, Ethernet|Infiniband enum: - Ethernet - Infiniband type: string numVfs: description: Number of VFs to be configured type: integer pciPerformanceOptimized: description: PCI performance optimization settings properties: enabled: description: Specifies whether to enable PCI performance optimization type: boolean maxAccOutRead: description: Specifies the PCIe Max Accumulative Outstanding read bytes type: integer maxReadRequest: description: Specifies the size of a single PCI read request in bytes enum: - 128 - 256 - 512 - 1024 - 2048 - 4096 type: integer required: - enabled type: object roceOptimized: description: RoCE optimization settings properties: enabled: description: Optimize RoCE type: boolean qos: description: Quality of Service settings properties: pfc: description: Priority-based Flow Control configuration, e.g. "0,0,0,1,0,0,0,0" pattern: ^([01],){7}[01]$ type: string trust: description: Trust mode for QoS settings, e.g. trust-dscp type: string required: - pfc - trust type: object required: - enabled type: object required: - linkType - numVfs type: object type: object type: object status: description: NicDeviceStatus defines the observed state of NicDevice properties: conditions: description: List of conditions observed for the device items: description: "Condition contains details for one aspect of the current state of this API Resource.\n---\nThis struct is intended for direct use as an array at the field path .status.conditions. For example,\n\n\n\ttype FooStatus struct{\n\t // Represents the observations of a foo's current state.\n\t // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t \ // other fields\n\t}" properties: lastTransitionTime: description: |- lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: description: |- message is a human readable message indicating details about the transition. This may be an empty string. maxLength: 32768 type: string observedGeneration: description: |- observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: description: |- reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ type: string status: description: status of the condition, one of True, False, Unknown. enum: - "True" - "False" - Unknown type: string type: description: |- type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string required: - lastTransitionTime - message - reason - status - type type: object type: array firmwareVersion: description: Firmware version currently installed on the device, e.g. 22.31.1014 type: string node: description: Node where the device is located type: string partNumber: description: Part number of the device, e.g. MCX713106AEHEA_QP1 type: string ports: description: List of ports for the device items: description: NicDevicePortSpec describes the ports of the NIC properties: networkInterface: description: NetworkInterface is the name of the network interface for this port, e.g. eth1 type: string pci: description: PCI is a PCI address of the port, e.g. 0000:3b:00.0 type: string rdmaInterface: description: RdmaInterface is the name of the rdma interface for this port, e.g. mlx5_1 type: string required: - pci type: object type: array psid: description: Product Serial ID of the device, e.g. MT_0000000221 type: string serialNumber: description: Serial number of the device, e.g. MT2116X09299 type: string type: description: Type of device, e.g. ConnectX7 type: string required: - firmwareVersion - node - partNumber - ports - psid - serialNumber - type type: object type: object served: true storage: true subresources: status: {}