{
  "description": "QatDevicePlugin is the Schema for the qatdeviceplugins API. It represents the QAT device\nplugin responsible for advertising Intel QuickAssist Technology hardware resources\nto the kubelet.",
  "properties": {
    "apiVersion": {
      "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
      "type": [
        "string",
        "null"
      ]
    },
    "kind": {
      "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
      "type": [
        "string",
        "null"
      ]
    },
    "metadata": {
      "type": [
        "object",
        "null"
      ]
    },
    "spec": {
      "additionalProperties": false,
      "description": "QatDevicePluginSpec defines the desired state of QatDevicePlugin.",
      "properties": {
        "dpdkDriver": {
          "description": "DpdkDriver is a DPDK device driver for configuring the QAT device.",
          "enum": [
            "igb_uio",
            "vfio-pci"
          ],
          "type": [
            "string",
            "null"
          ]
        },
        "image": {
          "description": "Image is a container image with QAT device plugin executable.",
          "type": [
            "string",
            "null"
          ]
        },
        "initImage": {
          "description": "InitImage is a container image with a script that initialize devices.",
          "type": [
            "string",
            "null"
          ]
        },
        "kernelVfDrivers": {
          "description": "KernelVfDrivers is a list of VF device drivers for the QuickAssist devices in the system.",
          "items": {
            "description": "KernelVfDriver is a VF device driver for QuickAssist devices.",
            "enum": [
              "dh895xccvf",
              "c6xxvf",
              "c3xxxvf",
              "d15xxvf",
              "4xxxvf",
              "420xxvf",
              "c4xxxvf",
              "6xxxvf"
            ],
            "type": "string"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "logLevel": {
          "description": "LogLevel sets the plugin's log level.",
          "minimum": 0,
          "type": [
            "integer",
            "null"
          ]
        },
        "maxNumDevices": {
          "description": "MaxNumDevices is a maximum number of QAT devices to be provided to the QuickAssist device plugin",
          "minimum": 1,
          "type": [
            "integer",
            "null"
          ]
        },
        "nodeSelector": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "NodeSelector provides a simple way to constrain device plugin pods to nodes with particular labels.",
          "type": [
            "object",
            "null"
          ]
        },
        "preferredAllocationPolicy": {
          "description": "PreferredAllocationPolicy sets the mode of allocating QAT devices on a node.\nSee documentation for detailed description of the policies.",
          "enum": [
            "balanced",
            "packed"
          ],
          "type": [
            "string",
            "null"
          ]
        },
        "provisioningConfig": {
          "description": "ProvisioningConfig is a ConfigMap used to pass the configuration of QAT devices into qat initcontainer.",
          "type": [
            "string",
            "null"
          ]
        },
        "tolerations": {
          "description": "Specialized nodes (e.g., with accelerators) can be Tainted to make sure unwanted pods are not scheduled on them. Tolerations can be set for the plugin pod to neutralize the Taint.",
          "items": {
            "additionalProperties": false,
            "description": "The pod this Toleration is attached to tolerates any taint that matches\nthe triple \u003ckey,value,effect\u003e using the matching operator \u003coperator\u003e.",
            "properties": {
              "effect": {
                "description": "Effect indicates the taint effect to match. Empty means match all taint effects.\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "key": {
                "description": "Key is the taint key that the toleration applies to. Empty means match all taint keys.\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "operator": {
                "description": "Operator represents a key's relationship to the value.\nValid operators are Exists and Equal. Defaults to Equal.\nExists is equivalent to wildcard for value, so that a pod can\ntolerate all taints of a particular category.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "tolerationSeconds": {
                "description": "TolerationSeconds represents the period of time the toleration (which must be\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\nit is not set, which means tolerate the taint forever (do not evict). Zero and\nnegative values will be treated as 0 (evict immediately) by the system.",
                "format": "int64",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "value": {
                "description": "Value is the taint value the toleration matches to.\nIf the operator is Exists, the value should be empty, otherwise just a regular string.",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "type": "object"
          },
          "type": [
            "array",
            "null"
          ]
        }
      },
      "type": [
        "object",
        "null"
      ]
    },
    "status": {
      "additionalProperties": false,
      "description": "QatDevicePluginStatus defines the observed state of QatDevicePlugin.",
      "properties": {
        "controlledDaemonSet": {
          "additionalProperties": false,
          "description": "ControlledDaemoSet references the DaemonSet controlled by the operator.",
          "properties": {
            "apiVersion": {
              "description": "API version of the referent.",
              "type": [
                "string",
                "null"
              ]
            },
            "fieldPath": {
              "description": "If referring to a piece of an object instead of an entire object, this string\nshould contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].\nFor example, if the object reference is to a container within a pod, this would take on a value like:\n\"spec.containers{name}\" (where \"name\" refers to the name of the container that triggered\nthe event) or if no container name is specified \"spec.containers[2]\" (container with\nindex 2 in this pod). This syntax is chosen only to have some well-defined way of\nreferencing a part of an object.",
              "type": [
                "string",
                "null"
              ]
            },
            "kind": {
              "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
              "type": [
                "string",
                "null"
              ]
            },
            "name": {
              "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
              "type": [
                "string",
                "null"
              ]
            },
            "namespace": {
              "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/",
              "type": [
                "string",
                "null"
              ]
            },
            "resourceVersion": {
              "description": "Specific resourceVersion to which this reference is made, if any.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency",
              "type": [
                "string",
                "null"
              ]
            },
            "uid": {
              "description": "UID of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids",
              "type": [
                "string",
                "null"
              ]
            }
          },
          "type": [
            "object",
            "null"
          ],
          "x-kubernetes-map-type": "atomic"
        },
        "desiredNumberScheduled": {
          "description": "The total number of nodes that should be running the device plugin\npod (including nodes correctly running the device plugin pod).",
          "format": "int32",
          "type": "integer"
        },
        "nodeNames": {
          "description": "The list of Node names where the device plugin pods are running.",
          "items": {
            "type": "string"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "numberReady": {
          "description": "The number of nodes that should be running the device plugin pod and have one\nor more of the device plugin pod running and ready.",
          "format": "int32",
          "type": "integer"
        }
      },
      "required": [
        "desiredNumberScheduled",
        "numberReady"
      ],
      "type": [
        "object",
        "null"
      ]
    }
  },
  "type": "object"
}