--- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.17.3 operatorframework.io/installed-alongside-8057064ebd85b550: opendatahub/opendatahub-operator.v3.4.0-ea.1 creationTimestamp: "2026-04-22T18:51:49Z" generation: 1 labels: olm.managed: "true" operators.coreos.com/opendatahub-operator.opendatahub: "" managedFields: - apiVersion: apiextensions.k8s.io/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: .: {} f:controller-gen.kubebuilder.io/version: {} f:operatorframework.io/installed-alongside-8057064ebd85b550: {} f:labels: .: {} f:olm.managed: {} f:spec: f:conversion: .: {} f:strategy: {} f:group: {} f:names: f:kind: {} f:listKind: {} f:plural: {} f:singular: {} f:scope: {} f:versions: {} manager: catalog operation: Update time: "2026-04-22T18:51:49Z" - apiVersion: apiextensions.k8s.io/v1 fieldsType: FieldsV1 fieldsV1: f:status: f:acceptedNames: f:kind: {} f:listKind: {} f:plural: {} f:singular: {} f:conditions: k:{"type":"Established"}: .: {} f:lastTransitionTime: {} f:message: {} f:reason: {} f:status: {} f:type: {} k:{"type":"NamesAccepted"}: .: {} f:lastTransitionTime: {} f:message: {} f:reason: {} f:status: {} f:type: {} manager: kube-apiserver operation: Update subresource: status time: "2026-04-22T18:51:49Z" - apiVersion: apiextensions.k8s.io/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:labels: f:operators.coreos.com/opendatahub-operator.opendatahub: {} manager: olm operation: Update time: "2026-04-22T18:51:49Z" name: hardwareprofiles.infrastructure.opendatahub.io resourceVersion: "13775" uid: fdb86f38-47f4-4e7c-abe6-4597ec3bdf29 spec: conversion: strategy: None group: infrastructure.opendatahub.io names: kind: HardwareProfile listKind: HardwareProfileList plural: hardwareprofiles singular: hardwareprofile scope: Namespaced versions: - name: v1 schema: openAPIV3Schema: description: HardwareProfile is the Schema for the hardwareprofiles 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: HardwareProfileSpec defines the desired state of HardwareProfile. properties: identifiers: description: The array of identifiers items: properties: defaultCount: anyOf: - type: integer - type: string description: The default count can be an integer or a string. x-kubernetes-int-or-string: true displayName: description: The display name of identifier. type: string identifier: description: The resource identifier of the hardware device. type: string maxCount: anyOf: - type: integer - type: string description: The maximum count can be an integer or a string. x-kubernetes-int-or-string: true minCount: anyOf: - type: integer - type: string description: The minimum count can be an integer or a string. x-kubernetes-int-or-string: true resourceType: description: The type of identifier. could be "CPU", "Memory", or "Accelerator". Leave it undefined for the other types. enum: - CPU - Memory - Accelerator type: string required: - defaultCount - displayName - identifier - minCount type: object type: array scheduling: description: SchedulingSpec specifies how workloads using this hardware profile should be scheduled. properties: kueue: description: |- Kueue specifies queue-based scheduling configuration. This field is only valid when schedulingType is "Queue". properties: localQueueName: description: |- LocalQueueName specifies the name of the local queue to use for workload scheduling. When specified, workloads using this hardware profile will be submitted to the specified queue and the queue's configuration will determine the actual node placement and tolerations. minLength: 1 type: string priorityClass: description: PriorityClass specifies the name of the WorkloadPriorityClass associated with the HardwareProfile. type: string required: - localQueueName type: object node: description: |- node specifies direct node scheduling configuration. This field is only valid when schedulingType is "Node". properties: nodeSelector: additionalProperties: type: string description: |- NodeSelector specifies the node selector to use for direct node scheduling. Workloads will be scheduled only on nodes that match all the specified labels. type: object tolerations: description: |- Tolerations specifies the tolerations to apply to workloads for direct node scheduling. These tolerations allow workloads to be scheduled on nodes with matching taints. items: description: |- The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . properties: effect: description: |- Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. type: string key: description: |- Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. type: string operator: description: |- Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. type: string tolerationSeconds: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: description: |- Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. type: string type: object type: array type: object type: description: |- SchedulingType is the scheduling method discriminator. Users must set this value to indicate which scheduling method to use. The value of this field should match exactly one configured scheduling method. Valid values are "Queue" and "Node". enum: - Queue - Node type: string required: - type type: object x-kubernetes-validations: - message: When schedulingType is 'Queue', the 'kueue.localQueueName' field must be specified and non-empty, and the 'node' field must not be set rule: 'self.type == ''Queue'' ? (has(self.kueue) && has(self.kueue.localQueueName) && !has(self.node)) : true' - message: When schedulingType is 'Node', the 'node' field must be set, and the 'kueue' field must not be set rule: 'self.type == ''Node'' ? (has(self.node) && !has(self.kueue)) : true' type: object status: description: HardwareProfileStatus defines the observed state of HardwareProfile. type: object required: - spec type: object served: true storage: true subresources: status: {} - deprecated: true deprecationWarning: infrastructure.opendatahub.io/v1alpha1 is deprecated; please use infrastructure.opendatahub.io/v1 name: v1alpha1 schema: openAPIV3Schema: description: HardwareProfile is the Schema for the hardwareprofiles 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: HardwareProfileSpec defines the desired state of HardwareProfile. properties: identifiers: description: The array of identifiers items: properties: defaultCount: anyOf: - type: integer - type: string description: The default count can be an integer or a string. x-kubernetes-int-or-string: true displayName: description: The display name of identifier. type: string identifier: description: The resource identifier of the hardware device. type: string maxCount: anyOf: - type: integer - type: string description: The maximum count can be an integer or a string. x-kubernetes-int-or-string: true minCount: anyOf: - type: integer - type: string description: The minimum count can be an integer or a string. x-kubernetes-int-or-string: true resourceType: description: The type of identifier. could be "CPU", "Memory", or "Accelerator". Leave it undefined for the other types. enum: - CPU - Memory - Accelerator type: string required: - defaultCount - displayName - identifier - minCount type: object type: array scheduling: description: SchedulingSpec specifies how workloads using this hardware profile should be scheduled. properties: kueue: description: |- Kueue specifies queue-based scheduling configuration. This field is only valid when schedulingType is "Queue". properties: localQueueName: description: |- LocalQueueName specifies the name of the local queue to use for workload scheduling. When specified, workloads using this hardware profile will be submitted to the specified queue and the queue's configuration will determine the actual node placement and tolerations. minLength: 1 type: string priorityClass: description: PriorityClass specifies the name of the WorkloadPriorityClass associated with the HardwareProfile. type: string required: - localQueueName type: object node: description: |- node specifies direct node scheduling configuration. This field is only valid when schedulingType is "Node". properties: nodeSelector: additionalProperties: type: string description: |- NodeSelector specifies the node selector to use for direct node scheduling. Workloads will be scheduled only on nodes that match all the specified labels. type: object tolerations: description: |- Tolerations specifies the tolerations to apply to workloads for direct node scheduling. These tolerations allow workloads to be scheduled on nodes with matching taints. items: description: |- The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . properties: effect: description: |- Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. type: string key: description: |- Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. type: string operator: description: |- Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. type: string tolerationSeconds: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: description: |- Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. type: string type: object type: array type: object type: description: |- SchedulingType is the scheduling method discriminator. Users must set this value to indicate which scheduling method to use. The value of this field should match exactly one configured scheduling method. Valid values are "Queue" and "Node". enum: - Queue - Node type: string required: - type type: object x-kubernetes-validations: - message: When schedulingType is 'Queue', the 'kueue.localQueueName' field must be specified and non-empty, and the 'node' field must not be set rule: 'self.type == ''Queue'' ? (has(self.kueue) && has(self.kueue.localQueueName) && !has(self.node)) : true' - message: When schedulingType is 'Node', the 'node' field must be set, and the 'kueue' field must not be set rule: 'self.type == ''Node'' ? (has(self.node) && !has(self.kueue)) : true' type: object status: description: HardwareProfileStatus defines the observed state of HardwareProfile. type: object required: - spec type: object served: true storage: false subresources: status: {} status: acceptedNames: kind: HardwareProfile listKind: HardwareProfileList plural: hardwareprofiles singular: hardwareprofile conditions: - lastTransitionTime: "2026-04-22T18:51:49Z" message: no conflicts found reason: NoConflicts status: "True" type: NamesAccepted - lastTransitionTime: "2026-04-22T18:51:49Z" message: the initial names have been accepted reason: InitialNamesAccepted status: "True" type: Established storedVersions: - v1