---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.17.0
  labels:
    app.kubernetes.io/component: amd-gpu
    app.kubernetes.io/instance: amd-gpu
    app.kubernetes.io/name: gpu-operator-charts
    app.kubernetes.io/part-of: amd-gpu
    app.kubernetes.io/version: v1.3.0
  name: deviceconfigs.amd.com
spec:
  group: amd.com
  names:
    kind: DeviceConfig
    listKind: DeviceConfigList
    plural: deviceconfigs
    shortNames:
      - gpue
    singular: deviceconfig
  scope: Namespaced
  versions:
    - name: v1alpha1
      schema:
        openAPIV3Schema:
          properties:
            apiVersion:
              type: string
            kind:
              type: string
            metadata:
              type: object
            spec:
              properties:
                commonConfig:
                  properties:
                    initContainerImage:
                      type: string
                    utilsContainer:
                      properties:
                        image:
                          pattern: ^([a-z0-9]+(?:[._-][a-z0-9]+)*(:[0-9]+)?)(/[a-z0-9]+(?:[._-][a-z0-9]+)*)*(?::[a-z0-9._-]+)?(?:@[a-zA-Z0-9]+:[a-f0-9]+)?$
                          type: string
                        imagePullPolicy:
                          enum:
                            - Always
                            - IfNotPresent
                            - Never
                          type: string
                        imageRegistrySecret:
                          properties:
                            name:
                              default: ""
                              type: string
                          type: object
                          x-kubernetes-map-type: atomic
                      type: object
                  type: object
                configManager:
                  properties:
                    config:
                      properties:
                        name:
                          default: ""
                          type: string
                      type: object
                      x-kubernetes-map-type: atomic
                    configManagerTolerations:
                      items:
                        properties:
                          effect:
                            type: string
                          key:
                            type: string
                          operator:
                            type: string
                          tolerationSeconds:
                            format: int64
                            type: integer
                          value:
                            type: string
                        type: object
                      type: array
                    enable:
                      type: boolean
                    image:
                      pattern: ^([a-z0-9]+(?:[._-][a-z0-9]+)*(:[0-9]+)?)(/[a-z0-9]+(?:[._-][a-z0-9]+)*)*(?::[a-z0-9._-]+)?(?:@[a-zA-Z0-9]+:[a-f0-9]+)?$
                      type: string
                    imagePullPolicy:
                      enum:
                        - Always
                        - IfNotPresent
                        - Never
                      type: string
                    imageRegistrySecret:
                      properties:
                        name:
                          default: ""
                          type: string
                      type: object
                      x-kubernetes-map-type: atomic
                    selector:
                      additionalProperties:
                        type: string
                      type: object
                    upgradePolicy:
                      properties:
                        maxUnavailable:
                          default: 1
                          format: int32
                          type: integer
                        upgradeStrategy:
                          enum:
                            - RollingUpdate
                            - OnDelete
                          type: string
                      type: object
                  type: object
                devicePlugin:
                  properties:
                    devicePluginArguments:
                      additionalProperties:
                        type: string
                      type: object
                    devicePluginImage:
                      pattern: ^([a-z0-9]+(?:[._-][a-z0-9]+)*(:[0-9]+)?)(/[a-z0-9]+(?:[._-][a-z0-9]+)*)*(?::[a-z0-9._-]+)?(?:@[a-zA-Z0-9]+:[a-f0-9]+)?$
                      type: string
                    devicePluginImagePullPolicy:
                      enum:
                        - Always
                        - IfNotPresent
                        - Never
                      type: string
                    devicePluginTolerations:
                      items:
                        properties:
                          effect:
                            type: string
                          key:
                            type: string
                          operator:
                            type: string
                          tolerationSeconds:
                            format: int64
                            type: integer
                          value:
                            type: string
                        type: object
                      type: array
                    enableNodeLabeller:
                      default: true
                      type: boolean
                    imageRegistrySecret:
                      properties:
                        name:
                          default: ""
                          type: string
                      type: object
                      x-kubernetes-map-type: atomic
                    nodeLabellerArguments:
                      items:
                        type: string
                      type: array
                    nodeLabellerImage:
                      pattern: ^([a-z0-9]+(?:[._-][a-z0-9]+)*(:[0-9]+)?)(/[a-z0-9]+(?:[._-][a-z0-9]+)*)*(?::[a-z0-9._-]+)?(?:@[a-zA-Z0-9]+:[a-f0-9]+)?$
                      type: string
                    nodeLabellerImagePullPolicy:
                      enum:
                        - Always
                        - IfNotPresent
                        - Never
                      type: string
                    nodeLabellerTolerations:
                      items:
                        properties:
                          effect:
                            type: string
                          key:
                            type: string
                          operator:
                            type: string
                          tolerationSeconds:
                            format: int64
                            type: integer
                          value:
                            type: string
                        type: object
                      type: array
                    upgradePolicy:
                      properties:
                        maxUnavailable:
                          default: 1
                          format: int32
                          type: integer
                        upgradeStrategy:
                          enum:
                            - RollingUpdate
                            - OnDelete
                          type: string
                      type: object
                  type: object
                driver:
                  properties:
                    amdgpuInstallerRepoURL:
                      type: string
                    blacklist:
                      type: boolean
                    enable:
                      default: true
                      type: boolean
                    image:
                      pattern: ^([a-z0-9]+(?:[._-][a-z0-9]+)*(:[0-9]+)?)(/[$a-zA-Z0-9_]+(?:[._-][$a-zA-Z0-9_]+)*)*(?::[a-z0-9._-]+)?(?:@[a-zA-Z0-9]+:[a-f0-9]+)?$
                      type: string
                    imageRegistrySecret:
                      properties:
                        name:
                          default: ""
                          type: string
                      type: object
                      x-kubernetes-map-type: atomic
                    imageRegistryTLS:
                      properties:
                        insecure:
                          type: boolean
                        insecureSkipTLSVerify:
                          type: boolean
                      type: object
                    imageSign:
                      properties:
                        certSecret:
                          properties:
                            name:
                              default: ""
                              type: string
                          type: object
                          x-kubernetes-map-type: atomic
                        keySecret:
                          properties:
                            name:
                              default: ""
                              type: string
                          type: object
                          x-kubernetes-map-type: atomic
                      type: object
                    upgradePolicy:
                      properties:
                        enable:
                          type: boolean
                        maxParallelUpgrades:
                          default: 1
                          minimum: 0
                          type: integer
                        maxUnavailableNodes:
                          anyOf:
                            - type: integer
                            - type: string
                          default: 25%
                          x-kubernetes-int-or-string: true
                        nodeDrainPolicy:
                          properties:
                            force:
                              default: false
                              type: boolean
                            gracePeriodSeconds:
                              default: -1
                              type: integer
                            timeoutSeconds:
                              default: 300
                              minimum: 0
                              type: integer
                          type: object
                        podDeletionPolicy:
                          properties:
                            force:
                              default: false
                              type: boolean
                            gracePeriodSeconds:
                              default: -1
                              type: integer
                            timeoutSeconds:
                              default: 300
                              minimum: 0
                              type: integer
                          type: object
                        rebootRequired:
                          default: true
                          type: boolean
                      type: object
                    version:
                      type: string
                  type: object
                metricsExporter:
                  properties:
                    config:
                      properties:
                        name:
                          type: string
                      type: object
                    enable:
                      type: boolean
                    image:
                      pattern: ^([a-z0-9]+(?:[._-][a-z0-9]+)*(:[0-9]+)?)(/[a-z0-9]+(?:[._-][a-z0-9]+)*)*(?::[a-z0-9._-]+)?(?:@[a-zA-Z0-9]+:[a-f0-9]+)?$
                      type: string
                    imagePullPolicy:
                      enum:
                        - Always
                        - IfNotPresent
                        - Never
                      type: string
                    imageRegistrySecret:
                      properties:
                        name:
                          default: ""
                          type: string
                      type: object
                      x-kubernetes-map-type: atomic
                    nodePort:
                      format: int32
                      maximum: 32767
                      minimum: 30000
                      type: integer
                    port:
                      default: 5000
                      format: int32
                      type: integer
                    prometheus:
                      properties:
                        serviceMonitor:
                          properties:
                            attachMetadata:
                              properties:
                                node:
                                  type: boolean
                              type: object
                            authorization:
                              properties:
                                credentials:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      default: ""
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                    - key
                                  type: object
                                  x-kubernetes-map-type: atomic
                                type:
                                  type: string
                              type: object
                            bearerTokenFile:
                              type: string
                            enable:
                              type: boolean
                            honorLabels:
                              default: true
                              type: boolean
                            honorTimestamps:
                              type: boolean
                            interval:
                              pattern: ^([0-9]+)(ms|s|m|h)$
                              type: string
                            labels:
                              additionalProperties:
                                type: string
                              type: object
                            metricRelabelings:
                              items:
                                properties:
                                  action:
                                    default: replace
                                    enum:
                                      - replace
                                      - Replace
                                      - keep
                                      - Keep
                                      - drop
                                      - Drop
                                      - hashmod
                                      - HashMod
                                      - labelmap
                                      - LabelMap
                                      - labeldrop
                                      - LabelDrop
                                      - labelkeep
                                      - LabelKeep
                                      - lowercase
                                      - Lowercase
                                      - uppercase
                                      - Uppercase
                                      - keepequal
                                      - KeepEqual
                                      - dropequal
                                      - DropEqual
                                    type: string
                                  modulus:
                                    format: int64
                                    type: integer
                                  regex:
                                    type: string
                                  replacement:
                                    type: string
                                  separator:
                                    type: string
                                  sourceLabels:
                                    items:
                                      pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$
                                      type: string
                                    type: array
                                  targetLabel:
                                    type: string
                                type: object
                              type: array
                            relabelings:
                              items:
                                properties:
                                  action:
                                    default: replace
                                    enum:
                                      - replace
                                      - Replace
                                      - keep
                                      - Keep
                                      - drop
                                      - Drop
                                      - hashmod
                                      - HashMod
                                      - labelmap
                                      - LabelMap
                                      - labeldrop
                                      - LabelDrop
                                      - labelkeep
                                      - LabelKeep
                                      - lowercase
                                      - Lowercase
                                      - uppercase
                                      - Uppercase
                                      - keepequal
                                      - KeepEqual
                                      - dropequal
                                      - DropEqual
                                    type: string
                                  modulus:
                                    format: int64
                                    type: integer
                                  regex:
                                    type: string
                                  replacement:
                                    type: string
                                  separator:
                                    type: string
                                  sourceLabels:
                                    items:
                                      pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$
                                      type: string
                                    type: array
                                  targetLabel:
                                    type: string
                                type: object
                              type: array
                            tlsConfig:
                              properties:
                                ca:
                                  properties:
                                    configMap:
                                      properties:
                                        key:
                                          type: string
                                        name:
                                          default: ""
                                          type: string
                                        optional:
                                          type: boolean
                                      required:
                                        - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    secret:
                                      properties:
                                        key:
                                          type: string
                                        name:
                                          default: ""
                                          type: string
                                        optional:
                                          type: boolean
                                      required:
                                        - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                  type: object
                                caFile:
                                  type: string
                                cert:
                                  properties:
                                    configMap:
                                      properties:
                                        key:
                                          type: string
                                        name:
                                          default: ""
                                          type: string
                                        optional:
                                          type: boolean
                                      required:
                                        - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    secret:
                                      properties:
                                        key:
                                          type: string
                                        name:
                                          default: ""
                                          type: string
                                        optional:
                                          type: boolean
                                      required:
                                        - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                  type: object
                                certFile:
                                  type: string
                                insecureSkipVerify:
                                  type: boolean
                                keyFile:
                                  type: string
                                keySecret:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      default: ""
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                    - key
                                  type: object
                                  x-kubernetes-map-type: atomic
                                maxVersion:
                                  enum:
                                    - TLS10
                                    - TLS11
                                    - TLS12
                                    - TLS13
                                  type: string
                                minVersion:
                                  enum:
                                    - TLS10
                                    - TLS11
                                    - TLS12
                                    - TLS13
                                  type: string
                                serverName:
                                  type: string
                              type: object
                          type: object
                      type: object
                    rbacConfig:
                      properties:
                        clientCAConfigMap:
                          properties:
                            name:
                              default: ""
                              type: string
                          type: object
                          x-kubernetes-map-type: atomic
                        disableHttps:
                          type: boolean
                        enable:
                          type: boolean
                        image:
                          pattern: ^([a-z0-9]+(?:[._-][a-z0-9]+)*(:[0-9]+)?)(/[a-z0-9]+(?:[._-][a-z0-9]+)*)*(?::[a-z0-9._-]+)?(?:@[a-zA-Z0-9]+:[a-f0-9]+)?$
                          type: string
                        secret:
                          properties:
                            name:
                              default: ""
                              type: string
                          type: object
                          x-kubernetes-map-type: atomic
                        staticAuthorization:
                          properties:
                            clientName:
                              type: string
                            enable:
                              type: boolean
                          type: object
                      type: object
                    selector:
                      additionalProperties:
                        type: string
                      type: object
                    serviceType:
                      default: ClusterIP
                      enum:
                        - ClusterIP
                        - NodePort
                      type: string
                    tolerations:
                      items:
                        properties:
                          effect:
                            type: string
                          key:
                            type: string
                          operator:
                            type: string
                          tolerationSeconds:
                            format: int64
                            type: integer
                          value:
                            type: string
                        type: object
                      type: array
                    upgradePolicy:
                      properties:
                        maxUnavailable:
                          default: 1
                          format: int32
                          type: integer
                        upgradeStrategy:
                          enum:
                            - RollingUpdate
                            - OnDelete
                          type: string
                      type: object
                  type: object
                selector:
                  additionalProperties:
                    type: string
                  type: object
                testRunner:
                  properties:
                    config:
                      properties:
                        name:
                          default: ""
                          type: string
                      type: object
                      x-kubernetes-map-type: atomic
                    enable:
                      type: boolean
                    image:
                      pattern: ^([a-z0-9]+(?:[._-][a-z0-9]+)*(:[0-9]+)?)(/[a-z0-9]+(?:[._-][a-z0-9]+)*)*(?::[a-z0-9._-]+)?(?:@[a-zA-Z0-9]+:[a-f0-9]+)?$
                      type: string
                    imagePullPolicy:
                      enum:
                        - Always
                        - IfNotPresent
                        - Never
                      type: string
                    imageRegistrySecret:
                      properties:
                        name:
                          default: ""
                          type: string
                      type: object
                      x-kubernetes-map-type: atomic
                    logsLocation:
                      properties:
                        hostPath:
                          default: /var/log/amd-test-runner
                          type: string
                        logsExportSecrets:
                          items:
                            properties:
                              name:
                                default: ""
                                type: string
                            type: object
                            x-kubernetes-map-type: atomic
                          type: array
                        mountPath:
                          default: /var/log/amd-test-runner
                          type: string
                      type: object
                    selector:
                      additionalProperties:
                        type: string
                      type: object
                    tolerations:
                      items:
                        properties:
                          effect:
                            type: string
                          key:
                            type: string
                          operator:
                            type: string
                          tolerationSeconds:
                            format: int64
                            type: integer
                          value:
                            type: string
                        type: object
                      type: array
                    upgradePolicy:
                      properties:
                        maxUnavailable:
                          default: 1
                          format: int32
                          type: integer
                        upgradeStrategy:
                          enum:
                            - RollingUpdate
                            - OnDelete
                          type: string
                      type: object
                  type: object
              type: object
            status:
              properties:
                conditions:
                  items:
                    properties:
                      lastTransitionTime:
                        format: date-time
                        type: string
                      message:
                        maxLength: 32768
                        type: string
                      observedGeneration:
                        format: int64
                        minimum: 0
                        type: integer
                      reason:
                        maxLength: 1024
                        minLength: 1
                        pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                        type: string
                      status:
                        enum:
                          - "True"
                          - "False"
                          - Unknown
                        type: string
                      type:
                        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
                configManager:
                  properties:
                    availableNumber:
                      format: int32
                      type: integer
                    desiredNumber:
                      format: int32
                      type: integer
                    nodesMatchingSelectorNumber:
                      format: int32
                      type: integer
                  type: object
                devicePlugin:
                  properties:
                    availableNumber:
                      format: int32
                      type: integer
                    desiredNumber:
                      format: int32
                      type: integer
                    nodesMatchingSelectorNumber:
                      format: int32
                      type: integer
                  type: object
                driver:
                  properties:
                    availableNumber:
                      format: int32
                      type: integer
                    desiredNumber:
                      format: int32
                      type: integer
                    nodesMatchingSelectorNumber:
                      format: int32
                      type: integer
                  type: object
                metricsExporter:
                  properties:
                    availableNumber:
                      format: int32
                      type: integer
                    desiredNumber:
                      format: int32
                      type: integer
                    nodesMatchingSelectorNumber:
                      format: int32
                      type: integer
                  type: object
                nodeModuleStatus:
                  additionalProperties:
                    properties:
                      bootId:
                        type: string
                      containerImage:
                        type: string
                      kernelVersion:
                        type: string
                      lastTransitionTime:
                        type: string
                      status:
                        type: string
                      upgradeStartTime:
                        type: string
                    type: object
                  type: object
                observedGeneration:
                  format: int64
                  type: integer
              type: object
          type: object
      served: true
      storage: true
      subresources:
        status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
