---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    {{- if .Values.enableCertManager }}
    cert-manager.io/inject-ca-from: {{ .Release.Namespace }}/{{ include "kueue.fullname" . }}-serving-cert
    {{- end }}
    controller-gen.kubebuilder.io/version: v0.12.0
  name: resourceflavors.kueue.x-k8s.io
spec:
  conversion:
    strategy: Webhook
    webhook:
      clientConfig:
        service:
          name: {{ include "kueue.fullname" . }}-webhook-service
          namespace: '{{ .Release.Namespace }}'
          path: /convert
      conversionReviewVersions:
      - v1
  group: kueue.x-k8s.io
  names:
    kind: ResourceFlavor
    listKind: ResourceFlavorList
    plural: resourceflavors
    shortNames:
    - flavor
    - flavors
    singular: resourceflavor
  scope: Cluster
  versions:
  - name: v1beta1
    schema:
      openAPIV3Schema:
        description: ResourceFlavor is the Schema for the resourceflavors 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: ResourceFlavorSpec defines the desired state of the ResourceFlavor
            properties:
              nodeLabels:
                additionalProperties:
                  type: string
                description: "nodeLabels are labels that associate the ResourceFlavor
                  with Nodes that have the same labels. When a Workload is admitted,
                  its podsets can only get assigned ResourceFlavors whose nodeLabels
                  match the nodeSelector and nodeAffinity fields. Once a ResourceFlavor
                  is assigned to a podSet, the ResourceFlavor's nodeLabels should
                  be injected into the pods of the Workload by the controller that
                  integrates with the Workload object. \n nodeLabels can be up to
                  8 elements."
                maxProperties: 8
                type: object
                x-kubernetes-map-type: atomic
              nodeTaints:
                description: "nodeTaints are taints that the nodes associated with
                  this ResourceFlavor have. Workloads' podsets must have tolerations
                  for these nodeTaints in order to get assigned this ResourceFlavor
                  during admission. \n An example of a nodeTaint is cloud.provider.com/preemptible=\"true\":NoSchedule
                  \n nodeTaints can be up to 8 elements."
                items:
                  description: The node this Taint is attached to has the "effect"
                    on any pod that does not tolerate the Taint.
                  properties:
                    effect:
                      description: Required. The effect of the taint on pods that
                        do not tolerate the taint. Valid effects are NoSchedule, PreferNoSchedule
                        and NoExecute.
                      type: string
                    key:
                      description: Required. The taint key to be applied to a node.
                      type: string
                    timeAdded:
                      description: TimeAdded represents the time at which the taint
                        was added. It is only written for NoExecute taints.
                      format: date-time
                      type: string
                    value:
                      description: The taint value corresponding to the taint key.
                      type: string
                  required:
                  - effect
                  - key
                  type: object
                maxItems: 8
                type: array
                x-kubernetes-list-type: atomic
            type: object
        type: object
    served: true
    storage: true
