{
  "description": "ClusterPolicy is the Schema for the clusterpolicies API",
  "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"
    },
    "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"
    },
    "metadata": {
      "type": "object"
    },
    "spec": {
      "description": "ClusterPolicySpec defines the desired state of ClusterPolicy",
      "properties": {
        "ccManager": {
          "description": "CCManager component spec",
          "properties": {
            "args": {
              "description": "Optional: List of arguments",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "defaultMode": {
              "description": "Default CC mode setting for compatible GPUs on the node",
              "enum": [
                "on",
                "off",
                "devtools"
              ],
              "type": "string"
            },
            "enabled": {
              "description": "Enabled indicates if deployment of CC Manager is enabled",
              "type": "boolean"
            },
            "env": {
              "description": "Optional: List of environment variables",
              "items": {
                "description": "EnvVar represents an environment variable present in a Container.",
                "properties": {
                  "name": {
                    "description": "Name of the environment variable.",
                    "type": "string"
                  },
                  "value": {
                    "description": "Value of the environment variable.",
                    "type": "string"
                  }
                },
                "required": [
                  "name"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "image": {
              "description": "CC Manager image name",
              "pattern": "[a-zA-Z0-9\\-]+",
              "type": "string"
            },
            "imagePullPolicy": {
              "description": "Image pull policy",
              "type": "string"
            },
            "imagePullSecrets": {
              "description": "Image pull secrets",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "repository": {
              "description": "CC Manager image repository",
              "type": "string"
            },
            "resources": {
              "description": "Optional: Define resources requests and limits for each pod",
              "properties": {
                "limits": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "string"
                      }
                    ],
                    "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$",
                    "x-kubernetes-int-or-string": true
                  },
                  "description": "Limits describes the maximum amount of compute resources allowed.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
                  "type": "object"
                },
                "requests": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "string"
                      }
                    ],
                    "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$",
                    "x-kubernetes-int-or-string": true
                  },
                  "description": "Requests describes the minimum amount of compute resources required.\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\notherwise to an implementation-defined value. Requests cannot exceed Limits.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
                  "type": "object"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "version": {
              "description": "CC Manager image tag",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "cdi": {
          "description": "CDI configures how the Container Device Interface is used in the cluster",
          "properties": {
            "default": {
              "default": false,
              "description": "Deprecated: This field is no longer used. Setting cdi.enabled=true will configure CDI as the default mechanism for making GPUs accessible to containers.",
              "type": "boolean"
            },
            "enabled": {
              "default": true,
              "description": "Enabled indicates whether the Container Device Interface (CDI) should be used as the mechanism for making GPUs accessible to containers.",
              "type": "boolean"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "daemonsets": {
          "description": "Daemonset defines common configuration for all Daemonsets",
          "properties": {
            "annotations": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Optional: Annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.",
              "type": "object"
            },
            "labels": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Optional: Map of string keys and values that can be used to organize and categorize\n(scope and select) objects. May match selectors of replication controllers\nand services.",
              "type": "object"
            },
            "priorityClassName": {
              "type": "string"
            },
            "rollingUpdate": {
              "description": "Optional: Configuration for rolling update of all DaemonSet pods",
              "properties": {
                "maxUnavailable": {
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "tolerations": {
              "description": "Optional: Set tolerations",
              "items": {
                "description": "The pod this Toleration is attached to tolerates any taint that matches\nthe triple <key,value,effect> using the matching operator <operator>.",
                "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"
                  },
                  "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"
                  },
                  "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"
                  },
                  "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"
                  },
                  "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"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "updateStrategy": {
              "default": "RollingUpdate",
              "enum": [
                "RollingUpdate",
                "OnDelete"
              ],
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "dcgm": {
          "description": "DCGM component spec",
          "properties": {
            "args": {
              "description": "Optional: List of arguments",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "enabled": {
              "description": "Enabled indicates if deployment of NVIDIA DCGM Hostengine as a separate pod is enabled.",
              "type": "boolean"
            },
            "env": {
              "description": "Optional: List of environment variables",
              "items": {
                "description": "EnvVar represents an environment variable present in a Container.",
                "properties": {
                  "name": {
                    "description": "Name of the environment variable.",
                    "type": "string"
                  },
                  "value": {
                    "description": "Value of the environment variable.",
                    "type": "string"
                  }
                },
                "required": [
                  "name"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "hostPort": {
              "description": "Deprecated: HostPort represents host port that needs to be bound for DCGM engine (Default: 5555)",
              "format": "int32",
              "type": "integer"
            },
            "image": {
              "description": "NVIDIA DCGM image name",
              "pattern": "[a-zA-Z0-9\\-]+",
              "type": "string"
            },
            "imagePullPolicy": {
              "description": "Image pull policy",
              "type": "string"
            },
            "imagePullSecrets": {
              "description": "Image pull secrets",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "repository": {
              "description": "NVIDIA DCGM image repository",
              "type": "string"
            },
            "resources": {
              "description": "Optional: Define resources requests and limits for each pod",
              "properties": {
                "limits": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "string"
                      }
                    ],
                    "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$",
                    "x-kubernetes-int-or-string": true
                  },
                  "description": "Limits describes the maximum amount of compute resources allowed.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
                  "type": "object"
                },
                "requests": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "string"
                      }
                    ],
                    "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$",
                    "x-kubernetes-int-or-string": true
                  },
                  "description": "Requests describes the minimum amount of compute resources required.\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\notherwise to an implementation-defined value. Requests cannot exceed Limits.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
                  "type": "object"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "version": {
              "description": "NVIDIA DCGM image tag",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "dcgmExporter": {
          "description": "DCGMExporter spec",
          "properties": {
            "args": {
              "description": "Optional: List of arguments",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "config": {
              "description": "Optional: Custom metrics configuration for NVIDIA DCGM Exporter",
              "properties": {
                "name": {
                  "description": "ConfigMap name with file dcgm-metrics.csv for metrics to be collected by NVIDIA DCGM Exporter",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "enabled": {
              "description": "Enabled indicates if deployment of NVIDIA DCGM Exporter through operator is enabled",
              "type": "boolean"
            },
            "env": {
              "description": "Optional: List of environment variables",
              "items": {
                "description": "EnvVar represents an environment variable present in a Container.",
                "properties": {
                  "name": {
                    "description": "Name of the environment variable.",
                    "type": "string"
                  },
                  "value": {
                    "description": "Value of the environment variable.",
                    "type": "string"
                  }
                },
                "required": [
                  "name"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "hostPID": {
              "description": "HostPID allows the DCGM-Exporter daemon set to access the host's PID namespace",
              "type": "boolean"
            },
            "hpcJobMapping": {
              "description": "Optional: HPC job mapping configuration for NVIDIA DCGM Exporter",
              "properties": {
                "directory": {
                  "description": "Directory path where HPC job mapping files are created by the workload manager\nDefaults to /var/lib/dcgm-exporter/job-mapping if not specified",
                  "type": "string"
                },
                "enabled": {
                  "description": "Enable HPC job mapping for DCGM Exporter",
                  "type": "boolean"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "image": {
              "description": "NVIDIA DCGM Exporter image name",
              "pattern": "[a-zA-Z0-9\\-]+",
              "type": "string"
            },
            "imagePullPolicy": {
              "description": "Image pull policy",
              "type": "string"
            },
            "imagePullSecrets": {
              "description": "Image pull secrets",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "repository": {
              "description": "NVIDIA DCGM Exporter image repository",
              "type": "string"
            },
            "resources": {
              "description": "Optional: Define resources requests and limits for each pod",
              "properties": {
                "limits": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "string"
                      }
                    ],
                    "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$",
                    "x-kubernetes-int-or-string": true
                  },
                  "description": "Limits describes the maximum amount of compute resources allowed.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
                  "type": "object"
                },
                "requests": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "string"
                      }
                    ],
                    "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$",
                    "x-kubernetes-int-or-string": true
                  },
                  "description": "Requests describes the minimum amount of compute resources required.\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\notherwise to an implementation-defined value. Requests cannot exceed Limits.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
                  "type": "object"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "service": {
              "description": "Optional: Service configuration for NVIDIA DCGM Exporter",
              "properties": {
                "internalTrafficPolicy": {
                  "description": "InternalTrafficPolicy describes how nodes distribute service traffic they receive on the ClusterIP.",
                  "type": "string"
                },
                "type": {
                  "description": "Type represents the ServiceType which describes ingress methods for a service",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "serviceMonitor": {
              "description": "Optional: ServiceMonitor configuration for NVIDIA DCGM Exporter",
              "properties": {
                "additionalLabels": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "AdditionalLabels to add to ServiceMonitor instance for NVIDIA DCGM Exporter",
                  "type": "object"
                },
                "enabled": {
                  "description": "Enabled indicates if ServiceMonitor is deployed for NVIDIA DCGM Exporter",
                  "type": "boolean"
                },
                "honorLabels": {
                  "description": "HonorLabels chooses the metric\u2019s labels on collisions with target labels.",
                  "type": "boolean"
                },
                "interval": {
                  "description": "Interval which metrics should be scraped from NVIDIA DCGM Exporter. If not specified Prometheus\u2019 global scrape interval is used.\nSupported units: y, w, d, h, m, s, ms",
                  "pattern": "^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$",
                  "type": "string"
                },
                "relabelings": {
                  "description": "Relabelings allows to rewrite labels on metric sets for NVIDIA DCGM Exporter",
                  "items": {
                    "description": "RelabelConfig allows dynamic rewriting of the label set for targets, alerts,\nscraped samples and remote write samples.\n\nMore info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config",
                    "properties": {
                      "action": {
                        "default": "replace",
                        "description": "Action to perform based on the regex matching.\n\n`Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0.\n`DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0.\n\nDefault: \"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": {
                        "description": "Modulus to take of the hash of the source label values.\n\nOnly applicable when the action is `HashMod`.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "regex": {
                        "description": "Regular expression against which the extracted value is matched.",
                        "type": "string"
                      },
                      "replacement": {
                        "description": "Replacement value against which a Replace action is performed if the\nregular expression matches.\n\nRegex capture groups are available.",
                        "type": "string"
                      },
                      "separator": {
                        "description": "Separator is the string between concatenated SourceLabels.",
                        "type": "string"
                      },
                      "sourceLabels": {
                        "description": "The source labels select values from existing labels. Their content is\nconcatenated using the configured Separator and matched against the\nconfigured regular expression.",
                        "items": {
                          "description": "LabelName is a valid Prometheus label name which may only contain ASCII\nletters, numbers, as well as underscores.",
                          "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$",
                          "type": "string"
                        },
                        "type": "array"
                      },
                      "targetLabel": {
                        "description": "Label to which the resulting string is written in a replacement.\n\nIt is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`,\n`KeepEqual` and `DropEqual` actions.\n\nRegex capture groups are available.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "type": "array"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "version": {
              "description": "NVIDIA DCGM Exporter image tag",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "devicePlugin": {
          "description": "DevicePlugin component spec",
          "properties": {
            "args": {
              "description": "Optional: List of arguments",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "config": {
              "description": "Optional: Configuration for the NVIDIA Device Plugin via the ConfigMap",
              "properties": {
                "default": {
                  "description": "Default config name within the ConfigMap for the NVIDIA Device Plugin  config",
                  "type": "string"
                },
                "name": {
                  "description": "ConfigMap name for NVIDIA Device Plugin config including shared config between plugin and GFD",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "enabled": {
              "description": "Enabled indicates if deployment of NVIDIA Device Plugin through operator is enabled",
              "type": "boolean"
            },
            "env": {
              "description": "Optional: List of environment variables",
              "items": {
                "description": "EnvVar represents an environment variable present in a Container.",
                "properties": {
                  "name": {
                    "description": "Name of the environment variable.",
                    "type": "string"
                  },
                  "value": {
                    "description": "Value of the environment variable.",
                    "type": "string"
                  }
                },
                "required": [
                  "name"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "image": {
              "description": "NVIDIA Device Plugin image name",
              "pattern": "[a-zA-Z0-9\\-]+",
              "type": "string"
            },
            "imagePullPolicy": {
              "description": "Image pull policy",
              "type": "string"
            },
            "imagePullSecrets": {
              "description": "Image pull secrets",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "mps": {
              "description": "Optional: MPS related configuration for the NVIDIA Device Plugin",
              "properties": {
                "root": {
                  "default": "/run/nvidia/mps",
                  "description": "Root defines the MPS root path on the host",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "repository": {
              "description": "NVIDIA Device Plugin image repository",
              "type": "string"
            },
            "resources": {
              "description": "Optional: Define resources requests and limits for each pod",
              "properties": {
                "limits": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "string"
                      }
                    ],
                    "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$",
                    "x-kubernetes-int-or-string": true
                  },
                  "description": "Limits describes the maximum amount of compute resources allowed.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
                  "type": "object"
                },
                "requests": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "string"
                      }
                    ],
                    "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$",
                    "x-kubernetes-int-or-string": true
                  },
                  "description": "Requests describes the minimum amount of compute resources required.\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\notherwise to an implementation-defined value. Requests cannot exceed Limits.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
                  "type": "object"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "version": {
              "description": "NVIDIA Device Plugin image tag",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "driver": {
          "description": "Driver component spec",
          "properties": {
            "args": {
              "description": "Optional: List of arguments",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "certConfig": {
              "description": "Optional: Custom certificates configuration for NVIDIA Driver container",
              "properties": {
                "name": {
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "enabled": {
              "description": "Enabled indicates if deployment of NVIDIA Driver through operator is enabled",
              "type": "boolean"
            },
            "env": {
              "description": "Optional: List of environment variables",
              "items": {
                "description": "EnvVar represents an environment variable present in a Container.",
                "properties": {
                  "name": {
                    "description": "Name of the environment variable.",
                    "type": "string"
                  },
                  "value": {
                    "description": "Value of the environment variable.",
                    "type": "string"
                  }
                },
                "required": [
                  "name"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "image": {
              "description": "NVIDIA Driver image name",
              "pattern": "[a-zA-Z0-9\\-]+",
              "type": "string"
            },
            "imagePullPolicy": {
              "description": "Image pull policy",
              "type": "string"
            },
            "imagePullSecrets": {
              "description": "Image pull secrets",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "kernelModuleConfig": {
              "description": "Optional: Kernel module configuration parameters for the NVIDIA Driver",
              "properties": {
                "name": {
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "kernelModuleType": {
              "default": "auto",
              "description": "KernelModuleType represents the type of driver kernel modules to be used when installing the GPU driver.\nAccepted values are auto, proprietary and open. NOTE: If auto is chosen, it means that the recommended kernel module\ntype is chosen based on the GPU devices on the host and the driver branch used",
              "enum": [
                "auto",
                "open",
                "proprietary"
              ],
              "type": "string"
            },
            "licensingConfig": {
              "description": "Optional: Licensing configuration for NVIDIA vGPU licensing",
              "properties": {
                "configMapName": {
                  "description": "Deprecated: ConfigMapName has been deprecated in favour of SecretName. Please use secrets to handle the licensing server configuration more securely",
                  "type": "string"
                },
                "nlsEnabled": {
                  "description": "NLSEnabled indicates if NVIDIA Licensing System is used for licensing.",
                  "type": "boolean"
                },
                "secretName": {
                  "description": "SecretName indicates the name of the secret containing the licensing token",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "livenessProbe": {
              "description": "NVIDIA Driver container liveness probe settings",
              "properties": {
                "failureThreshold": {
                  "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.\nDefaults to 3. Minimum value is 1.",
                  "format": "int32",
                  "minimum": 1,
                  "type": "integer"
                },
                "initialDelaySeconds": {
                  "description": "Number of seconds after the container has started before liveness probes are initiated.\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes",
                  "format": "int32",
                  "type": "integer"
                },
                "periodSeconds": {
                  "description": "How often (in seconds) to perform the probe.\nDefault to 10 seconds. Minimum value is 1.",
                  "format": "int32",
                  "minimum": 1,
                  "type": "integer"
                },
                "successThreshold": {
                  "description": "Minimum consecutive successes for the probe to be considered successful after having failed.\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.",
                  "format": "int32",
                  "minimum": 1,
                  "type": "integer"
                },
                "timeoutSeconds": {
                  "description": "Number of seconds after which the probe times out.\nDefaults to 1 second. Minimum value is 1.\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes",
                  "format": "int32",
                  "minimum": 1,
                  "type": "integer"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "manager": {
              "description": "Manager represents configuration for NVIDIA Driver Manager initContainer",
              "properties": {
                "env": {
                  "description": "Optional: List of environment variables",
                  "items": {
                    "description": "EnvVar represents an environment variable present in a Container.",
                    "properties": {
                      "name": {
                        "description": "Name of the environment variable.",
                        "type": "string"
                      },
                      "value": {
                        "description": "Value of the environment variable.",
                        "type": "string"
                      }
                    },
                    "required": [
                      "name"
                    ],
                    "type": "object",
                    "additionalProperties": false
                  },
                  "type": "array"
                },
                "image": {
                  "description": "Image represents NVIDIA Driver Manager image name",
                  "pattern": "[a-zA-Z0-9\\-]+",
                  "type": "string"
                },
                "imagePullPolicy": {
                  "description": "Image pull policy",
                  "type": "string"
                },
                "imagePullSecrets": {
                  "description": "Image pull secrets",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "repository": {
                  "description": "Repository represents Driver Managerrepository path",
                  "type": "string"
                },
                "version": {
                  "description": "Version represents NVIDIA Driver Manager image tag(version)",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "rdma": {
              "description": "GPUDirectRDMASpec defines the properties for nvidia-peermem deployment",
              "properties": {
                "enabled": {
                  "description": "Enabled indicates if GPUDirect RDMA is enabled through GPU operator",
                  "type": "boolean"
                },
                "useHostMofed": {
                  "description": "UseHostMOFED indicates to use MOFED drivers directly installed on the host to enable GPUDirect RDMA",
                  "type": "boolean"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "readinessProbe": {
              "description": "NVIDIA Driver container readiness probe settings",
              "properties": {
                "failureThreshold": {
                  "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.\nDefaults to 3. Minimum value is 1.",
                  "format": "int32",
                  "minimum": 1,
                  "type": "integer"
                },
                "initialDelaySeconds": {
                  "description": "Number of seconds after the container has started before liveness probes are initiated.\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes",
                  "format": "int32",
                  "type": "integer"
                },
                "periodSeconds": {
                  "description": "How often (in seconds) to perform the probe.\nDefault to 10 seconds. Minimum value is 1.",
                  "format": "int32",
                  "minimum": 1,
                  "type": "integer"
                },
                "successThreshold": {
                  "description": "Minimum consecutive successes for the probe to be considered successful after having failed.\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.",
                  "format": "int32",
                  "minimum": 1,
                  "type": "integer"
                },
                "timeoutSeconds": {
                  "description": "Number of seconds after which the probe times out.\nDefaults to 1 second. Minimum value is 1.\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes",
                  "format": "int32",
                  "minimum": 1,
                  "type": "integer"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "repoConfig": {
              "description": "Optional: Custom repo configuration for NVIDIA Driver container",
              "properties": {
                "configMapName": {
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "repository": {
              "description": "NVIDIA Driver image repository",
              "type": "string"
            },
            "resources": {
              "description": "Optional: Define resources requests and limits for each pod",
              "properties": {
                "limits": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "string"
                      }
                    ],
                    "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$",
                    "x-kubernetes-int-or-string": true
                  },
                  "description": "Limits describes the maximum amount of compute resources allowed.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
                  "type": "object"
                },
                "requests": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "string"
                      }
                    ],
                    "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$",
                    "x-kubernetes-int-or-string": true
                  },
                  "description": "Requests describes the minimum amount of compute resources required.\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\notherwise to an implementation-defined value. Requests cannot exceed Limits.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
                  "type": "object"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "secretEnv": {
              "description": "Optional: SecretEnv represents the name of the Kubernetes Secret with secret environment variables for the NVIDIA Driver",
              "type": "string"
            },
            "startupProbe": {
              "description": "NVIDIA Driver container startup probe settings",
              "properties": {
                "failureThreshold": {
                  "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.\nDefaults to 3. Minimum value is 1.",
                  "format": "int32",
                  "minimum": 1,
                  "type": "integer"
                },
                "initialDelaySeconds": {
                  "description": "Number of seconds after the container has started before liveness probes are initiated.\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes",
                  "format": "int32",
                  "type": "integer"
                },
                "periodSeconds": {
                  "description": "How often (in seconds) to perform the probe.\nDefault to 10 seconds. Minimum value is 1.",
                  "format": "int32",
                  "minimum": 1,
                  "type": "integer"
                },
                "successThreshold": {
                  "description": "Minimum consecutive successes for the probe to be considered successful after having failed.\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.",
                  "format": "int32",
                  "minimum": 1,
                  "type": "integer"
                },
                "timeoutSeconds": {
                  "description": "Number of seconds after which the probe times out.\nDefaults to 1 second. Minimum value is 1.\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes",
                  "format": "int32",
                  "minimum": 1,
                  "type": "integer"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "upgradePolicy": {
              "description": "Driver auto-upgrade settings",
              "properties": {
                "autoUpgrade": {
                  "default": false,
                  "description": "AutoUpgrade is a global switch for automatic upgrade feature\nif set to false all other options are ignored",
                  "type": "boolean"
                },
                "drain": {
                  "description": "DrainSpec describes configuration for node drain during automatic upgrade",
                  "properties": {
                    "deleteEmptyDir": {
                      "default": false,
                      "description": "DeleteEmptyDir indicates if should continue even if there are pods using emptyDir\n(local data that will be deleted when the node is drained)",
                      "type": "boolean"
                    },
                    "enable": {
                      "default": false,
                      "description": "Enable indicates if node draining is allowed during upgrade",
                      "type": "boolean"
                    },
                    "force": {
                      "default": false,
                      "description": "Force indicates if force draining is allowed",
                      "type": "boolean"
                    },
                    "podSelector": {
                      "description": "PodSelector specifies a label selector to filter pods on the node that need to be drained\nFor more details on label selectors, see:\nhttps://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors",
                      "type": "string"
                    },
                    "timeoutSeconds": {
                      "default": 300,
                      "description": "TimeoutSecond specifies the length of time in seconds to wait before giving up drain, zero means infinite",
                      "minimum": 0,
                      "type": "integer"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "maxParallelUpgrades": {
                  "default": 1,
                  "description": "MaxParallelUpgrades indicates how many nodes can be upgraded in parallel\n0 means no limit, all nodes will be upgraded in parallel",
                  "minimum": 0,
                  "type": "integer"
                },
                "maxUnavailable": {
                  "anyOf": [
                    {
                      "type": "integer"
                    },
                    {
                      "type": "string"
                    }
                  ],
                  "default": "25%",
                  "description": "MaxUnavailable is the maximum number of nodes with the driver installed, that can be unavailable during the upgrade.\nValue can be an absolute number (ex: 5) or a percentage of total nodes at the start of upgrade (ex: 10%).\nAbsolute number is calculated from percentage by rounding up.\nBy default, a fixed value of 25% is used.",
                  "x-kubernetes-int-or-string": true
                },
                "podDeletion": {
                  "description": "PodDeletionSpec describes configuration for deletion of pods using special resources during automatic upgrade",
                  "properties": {
                    "deleteEmptyDir": {
                      "default": false,
                      "description": "DeleteEmptyDir indicates if should continue even if there are pods using emptyDir\n(local data that will be deleted when the pod is deleted)",
                      "type": "boolean"
                    },
                    "force": {
                      "default": false,
                      "description": "Force indicates if force deletion is allowed",
                      "type": "boolean"
                    },
                    "timeoutSeconds": {
                      "default": 300,
                      "description": "TimeoutSecond specifies the length of time in seconds to wait before giving up on pod termination, zero means\ninfinite",
                      "minimum": 0,
                      "type": "integer"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "waitForCompletion": {
                  "description": "WaitForCompletionSpec describes the configuration for waiting on job completions",
                  "properties": {
                    "podSelector": {
                      "description": "PodSelector specifies a label selector for the pods to wait for completion\nFor more details on label selectors, see:\nhttps://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors",
                      "type": "string"
                    },
                    "timeoutSeconds": {
                      "default": 0,
                      "description": "TimeoutSecond specifies the length of time in seconds to wait before giving up on pod termination, zero means\ninfinite",
                      "minimum": 0,
                      "type": "integer"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "useNvidiaDriverCRD": {
              "description": "UseNvidiaDriverCRD indicates if the deployment of NVIDIA Driver is managed by the NVIDIADriver CRD type",
              "type": "boolean"
            },
            "useOpenKernelModules": {
              "description": "Deprecated: This field is no longer honored by the gpu-operator. Please use KernelModuleType instead.\nUseOpenKernelModules indicates if the open GPU kernel modules should be used",
              "type": "boolean"
            },
            "usePrecompiled": {
              "description": "UsePrecompiled indicates if deployment of NVIDIA Driver using pre-compiled modules is enabled",
              "type": "boolean"
            },
            "version": {
              "description": "NVIDIA Driver image tag",
              "type": "string"
            },
            "virtualTopology": {
              "description": "Optional: Virtual Topology Daemon configuration for NVIDIA vGPU drivers",
              "properties": {
                "config": {
                  "description": "Optional: Config name representing virtual topology daemon configuration file nvidia-topologyd.conf",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "gdrcopy": {
          "description": "GDRCopy component spec",
          "properties": {
            "args": {
              "description": "Optional: List of arguments",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "enabled": {
              "description": "Enabled indicates if GDRCopy is enabled through GPU Operator",
              "type": "boolean"
            },
            "env": {
              "description": "Optional: List of environment variables",
              "items": {
                "description": "EnvVar represents an environment variable present in a Container.",
                "properties": {
                  "name": {
                    "description": "Name of the environment variable.",
                    "type": "string"
                  },
                  "value": {
                    "description": "Value of the environment variable.",
                    "type": "string"
                  }
                },
                "required": [
                  "name"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "image": {
              "description": "NVIDIA GDRCopy driver image name",
              "pattern": "[a-zA-Z0-9\\-]+",
              "type": "string"
            },
            "imagePullPolicy": {
              "description": "Image pull policy",
              "type": "string"
            },
            "imagePullSecrets": {
              "description": "Image pull secrets",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "repository": {
              "description": "NVIDIA GDRCopy driver image repository",
              "type": "string"
            },
            "version": {
              "description": "NVIDIA GDRCopy driver image tag",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "gds": {
          "description": "GPUDirectStorage defines the spec for GDS components(Experimental)",
          "properties": {
            "args": {
              "description": "Optional: List of arguments",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "enabled": {
              "description": "Enabled indicates if GPUDirect Storage is enabled through GPU operator",
              "type": "boolean"
            },
            "env": {
              "description": "Optional: List of environment variables",
              "items": {
                "description": "EnvVar represents an environment variable present in a Container.",
                "properties": {
                  "name": {
                    "description": "Name of the environment variable.",
                    "type": "string"
                  },
                  "value": {
                    "description": "Value of the environment variable.",
                    "type": "string"
                  }
                },
                "required": [
                  "name"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "image": {
              "description": "NVIDIA GPUDirect Storage Driver image name",
              "pattern": "[a-zA-Z0-9\\-]+",
              "type": "string"
            },
            "imagePullPolicy": {
              "description": "Image pull policy",
              "type": "string"
            },
            "imagePullSecrets": {
              "description": "Image pull secrets",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "repository": {
              "description": "NVIDIA GPUDirect Storage Driver image repository",
              "type": "string"
            },
            "version": {
              "description": "NVIDIA GPUDirect Storage Driver image tag",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "gfd": {
          "description": "GPUFeatureDiscovery spec",
          "properties": {
            "args": {
              "description": "Optional: List of arguments",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "enabled": {
              "description": "Enabled indicates if deployment of GPU Feature Discovery Plugin is enabled.",
              "type": "boolean"
            },
            "env": {
              "description": "Optional: List of environment variables",
              "items": {
                "description": "EnvVar represents an environment variable present in a Container.",
                "properties": {
                  "name": {
                    "description": "Name of the environment variable.",
                    "type": "string"
                  },
                  "value": {
                    "description": "Value of the environment variable.",
                    "type": "string"
                  }
                },
                "required": [
                  "name"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "image": {
              "description": "GFD image name",
              "pattern": "[a-zA-Z0-9\\-]+",
              "type": "string"
            },
            "imagePullPolicy": {
              "description": "Image pull policy",
              "type": "string"
            },
            "imagePullSecrets": {
              "description": "Image pull secrets",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "repository": {
              "description": "GFD image repository",
              "type": "string"
            },
            "resources": {
              "description": "Optional: Define resources requests and limits for each pod",
              "properties": {
                "limits": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "string"
                      }
                    ],
                    "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$",
                    "x-kubernetes-int-or-string": true
                  },
                  "description": "Limits describes the maximum amount of compute resources allowed.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
                  "type": "object"
                },
                "requests": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "string"
                      }
                    ],
                    "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$",
                    "x-kubernetes-int-or-string": true
                  },
                  "description": "Requests describes the minimum amount of compute resources required.\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\notherwise to an implementation-defined value. Requests cannot exceed Limits.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
                  "type": "object"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "version": {
              "description": "GFD image tag",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "hostPaths": {
          "description": "HostPaths defines various paths on the host needed by GPU Operator components",
          "properties": {
            "driverInstallDir": {
              "description": "DriverInstallDir represents the root at which driver files including libraries,\nconfig files, and executables can be found.",
              "type": "string"
            },
            "rootFS": {
              "description": "RootFS represents the path to the root filesystem of the host.\nThis is used by components that need to interact with the host filesystem\nand as such this must be a chroot-able filesystem.\nExamples include the MIG Manager and Toolkit Container which may need to\nstop, start, or restart systemd services.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "kataManager": {
          "description": "KataManager component spec",
          "properties": {
            "args": {
              "description": "Optional: List of arguments",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "config": {
              "description": "Kata Manager config",
              "properties": {
                "artifactsDir": {
                  "default": "/opt/nvidia-gpu-operator/artifacts/runtimeclasses",
                  "description": "ArtifactsDir is the directory where kata artifacts (e.g. kernel / guest images, configuration, etc.)\nare placed on the local filesystem.",
                  "type": "string"
                },
                "runtimeClasses": {
                  "description": "RuntimeClasses is a list of kata runtime classes to configure.",
                  "items": {
                    "description": "RuntimeClass defines the configuration for a kata RuntimeClass",
                    "properties": {
                      "artifacts": {
                        "description": "Artifacts are the kata artifacts associated with the runtime class.",
                        "properties": {
                          "pullSecret": {
                            "description": "PullSecret is the secret used to pull the OCI artifact.",
                            "type": "string"
                          },
                          "url": {
                            "description": "URL is the path to the OCI artifact (payload) containing all artifacts\nassociated with a kata runtime class.",
                            "type": "string"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object",
                        "additionalProperties": false
                      },
                      "name": {
                        "description": "Name is the name of the kata runtime class.",
                        "type": "string"
                      },
                      "nodeSelector": {
                        "additionalProperties": {
                          "type": "string"
                        },
                        "description": "NodeSelector specifies the nodeSelector for the RuntimeClass object.\nThis ensures pods running with the RuntimeClass only get scheduled\nonto nodes which support it.",
                        "type": "object"
                      }
                    },
                    "required": [
                      "artifacts",
                      "name"
                    ],
                    "type": "object",
                    "additionalProperties": false
                  },
                  "type": "array"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "enabled": {
              "description": "Enabled indicates if deployment of Kata Manager is enabled",
              "type": "boolean"
            },
            "env": {
              "description": "Optional: List of environment variables",
              "items": {
                "description": "EnvVar represents an environment variable present in a Container.",
                "properties": {
                  "name": {
                    "description": "Name of the environment variable.",
                    "type": "string"
                  },
                  "value": {
                    "description": "Value of the environment variable.",
                    "type": "string"
                  }
                },
                "required": [
                  "name"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "image": {
              "description": "Kata Manager image name",
              "pattern": "[a-zA-Z0-9\\-]+",
              "type": "string"
            },
            "imagePullPolicy": {
              "description": "Image pull policy",
              "type": "string"
            },
            "imagePullSecrets": {
              "description": "Image pull secrets",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "repository": {
              "description": "Kata Manager image repository",
              "type": "string"
            },
            "resources": {
              "description": "Optional: Define resources requests and limits for each pod",
              "properties": {
                "limits": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "string"
                      }
                    ],
                    "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$",
                    "x-kubernetes-int-or-string": true
                  },
                  "description": "Limits describes the maximum amount of compute resources allowed.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
                  "type": "object"
                },
                "requests": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "string"
                      }
                    ],
                    "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$",
                    "x-kubernetes-int-or-string": true
                  },
                  "description": "Requests describes the minimum amount of compute resources required.\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\notherwise to an implementation-defined value. Requests cannot exceed Limits.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
                  "type": "object"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "version": {
              "description": "Kata Manager image tag",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "mig": {
          "description": "MIG spec",
          "properties": {
            "strategy": {
              "description": "Optional: MIGStrategy to apply for GFD and NVIDIA Device Plugin",
              "enum": [
                "none",
                "single",
                "mixed"
              ],
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "migManager": {
          "description": "MIGManager for configuration to deploy MIG Manager",
          "properties": {
            "args": {
              "description": "Optional: List of arguments",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "config": {
              "description": "Optional: Custom mig-parted configuration for NVIDIA MIG Manager container",
              "properties": {
                "default": {
                  "default": "all-disabled",
                  "description": "Default MIG config to be applied on the node, when there is no config specified with the node label nvidia.com/mig.config",
                  "enum": [
                    "all-disabled",
                    ""
                  ],
                  "type": "string"
                },
                "name": {
                  "default": "default-mig-parted-config",
                  "description": "ConfigMap name",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "enabled": {
              "description": "Enabled indicates if deployment of NVIDIA MIG Manager is enabled",
              "type": "boolean"
            },
            "env": {
              "description": "Optional: List of environment variables",
              "items": {
                "description": "EnvVar represents an environment variable present in a Container.",
                "properties": {
                  "name": {
                    "description": "Name of the environment variable.",
                    "type": "string"
                  },
                  "value": {
                    "description": "Value of the environment variable.",
                    "type": "string"
                  }
                },
                "required": [
                  "name"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "gpuClientsConfig": {
              "description": "Optional: Custom gpu-clients configuration for NVIDIA MIG Manager container",
              "properties": {
                "name": {
                  "description": "ConfigMap name",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "image": {
              "description": "NVIDIA MIG Manager image name",
              "pattern": "[a-zA-Z0-9\\-]+",
              "type": "string"
            },
            "imagePullPolicy": {
              "description": "Image pull policy",
              "type": "string"
            },
            "imagePullSecrets": {
              "description": "Image pull secrets",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "repository": {
              "description": "NVIDIA MIG Manager image repository",
              "type": "string"
            },
            "resources": {
              "description": "Optional: Define resources requests and limits for each pod",
              "properties": {
                "limits": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "string"
                      }
                    ],
                    "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$",
                    "x-kubernetes-int-or-string": true
                  },
                  "description": "Limits describes the maximum amount of compute resources allowed.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
                  "type": "object"
                },
                "requests": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "string"
                      }
                    ],
                    "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$",
                    "x-kubernetes-int-or-string": true
                  },
                  "description": "Requests describes the minimum amount of compute resources required.\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\notherwise to an implementation-defined value. Requests cannot exceed Limits.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
                  "type": "object"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "version": {
              "description": "NVIDIA MIG Manager image tag",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "nodeStatusExporter": {
          "description": "NodeStatusExporter spec",
          "properties": {
            "args": {
              "description": "Optional: List of arguments",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "enabled": {
              "description": "Enabled indicates if deployment of Node Status Exporter is enabled.",
              "type": "boolean"
            },
            "env": {
              "description": "Optional: List of environment variables",
              "items": {
                "description": "EnvVar represents an environment variable present in a Container.",
                "properties": {
                  "name": {
                    "description": "Name of the environment variable.",
                    "type": "string"
                  },
                  "value": {
                    "description": "Value of the environment variable.",
                    "type": "string"
                  }
                },
                "required": [
                  "name"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "image": {
              "description": "Node Status Exporter image name",
              "pattern": "[a-zA-Z0-9\\-]+",
              "type": "string"
            },
            "imagePullPolicy": {
              "description": "Image pull policy",
              "type": "string"
            },
            "imagePullSecrets": {
              "description": "Image pull secrets",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "repository": {
              "description": "Node Status Exporterimage repository",
              "type": "string"
            },
            "resources": {
              "description": "Optional: Define resources requests and limits for each pod",
              "properties": {
                "limits": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "string"
                      }
                    ],
                    "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$",
                    "x-kubernetes-int-or-string": true
                  },
                  "description": "Limits describes the maximum amount of compute resources allowed.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
                  "type": "object"
                },
                "requests": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "string"
                      }
                    ],
                    "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$",
                    "x-kubernetes-int-or-string": true
                  },
                  "description": "Requests describes the minimum amount of compute resources required.\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\notherwise to an implementation-defined value. Requests cannot exceed Limits.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
                  "type": "object"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "version": {
              "description": "Node Status Exporterimage tag",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "operator": {
          "description": "Operator component spec",
          "properties": {
            "annotations": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Optional: Annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.",
              "type": "object"
            },
            "defaultRuntime": {
              "default": "docker",
              "description": "Runtime defines container runtime type",
              "enum": [
                "docker",
                "crio",
                "containerd"
              ],
              "type": "string"
            },
            "initContainer": {
              "description": "InitContainerSpec describes configuration for initContainer image used with all components",
              "properties": {
                "image": {
                  "description": "Image represents image name",
                  "pattern": "[a-zA-Z0-9\\-]+",
                  "type": "string"
                },
                "imagePullPolicy": {
                  "description": "Image pull policy",
                  "type": "string"
                },
                "imagePullSecrets": {
                  "description": "Image pull secrets",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "repository": {
                  "description": "Repository represents image repository path",
                  "type": "string"
                },
                "version": {
                  "description": "Version represents image tag(version)",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "labels": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Optional: Map of string keys and values that can be used to organize and categorize\n(scope and select) objects. May match selectors of replication controllers\nand services.",
              "type": "object"
            },
            "runtimeClass": {
              "default": "nvidia",
              "type": "string"
            },
            "use_ocp_driver_toolkit": {
              "description": "UseOpenShiftDriverToolkit indicates if DriverToolkit image should be used on OpenShift to build and install driver modules",
              "type": "boolean"
            }
          },
          "required": [
            "defaultRuntime"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "psa": {
          "description": "PSA defines spec for PodSecurityAdmission configuration",
          "properties": {
            "enabled": {
              "description": "Enabled indicates if PodSecurityAdmission configuration needs to be enabled for all Pods",
              "type": "boolean"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "psp": {
          "description": "Deprecated: Pod Security Policies are no longer supported. Please use PodSecurityAdmission instead\nPSP defines spec for handling PodSecurityPolicies",
          "properties": {
            "enabled": {
              "description": "Enabled indicates if PodSecurityPolicies needs to be enabled for all Pods",
              "type": "boolean"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "sandboxDevicePlugin": {
          "description": "SandboxDevicePlugin component spec",
          "properties": {
            "args": {
              "description": "Optional: List of arguments",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "enabled": {
              "description": "Enabled indicates if deployment of NVIDIA Sandbox Device Plugin through operator is enabled",
              "type": "boolean"
            },
            "env": {
              "description": "Optional: List of environment variables",
              "items": {
                "description": "EnvVar represents an environment variable present in a Container.",
                "properties": {
                  "name": {
                    "description": "Name of the environment variable.",
                    "type": "string"
                  },
                  "value": {
                    "description": "Value of the environment variable.",
                    "type": "string"
                  }
                },
                "required": [
                  "name"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "image": {
              "description": "NVIDIA Sandbox Device Plugin image name",
              "pattern": "[a-zA-Z0-9\\-]+",
              "type": "string"
            },
            "imagePullPolicy": {
              "description": "Image pull policy",
              "type": "string"
            },
            "imagePullSecrets": {
              "description": "Image pull secrets",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "repository": {
              "description": "NVIDIA Sandbox Device Plugin image repository",
              "type": "string"
            },
            "resources": {
              "description": "Optional: Define resources requests and limits for each pod",
              "properties": {
                "limits": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "string"
                      }
                    ],
                    "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$",
                    "x-kubernetes-int-or-string": true
                  },
                  "description": "Limits describes the maximum amount of compute resources allowed.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
                  "type": "object"
                },
                "requests": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "string"
                      }
                    ],
                    "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$",
                    "x-kubernetes-int-or-string": true
                  },
                  "description": "Requests describes the minimum amount of compute resources required.\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\notherwise to an implementation-defined value. Requests cannot exceed Limits.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
                  "type": "object"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "version": {
              "description": "NVIDIA Sandbox Device Plugin image tag",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "sandboxWorkloads": {
          "description": "SandboxWorkloads defines the spec for handling sandbox workloads (i.e. Virtual Machines)",
          "properties": {
            "defaultWorkload": {
              "default": "container",
              "description": "DefaultWorkload indicates the default GPU workload type to configure\nworker nodes in the cluster for",
              "enum": [
                "container",
                "vm-passthrough",
                "vm-vgpu"
              ],
              "type": "string"
            },
            "enabled": {
              "description": "Enabled indicates if the GPU Operator should manage additional operands required\nfor sandbox workloads (i.e. VFIO Manager, vGPU Manager, and additional device plugins)",
              "type": "boolean"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "toolkit": {
          "description": "Toolkit component spec",
          "properties": {
            "args": {
              "description": "Optional: List of arguments",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "enabled": {
              "description": "Enabled indicates if deployment of NVIDIA Container Toolkit through operator is enabled",
              "type": "boolean"
            },
            "env": {
              "description": "Optional: List of environment variables",
              "items": {
                "description": "EnvVar represents an environment variable present in a Container.",
                "properties": {
                  "name": {
                    "description": "Name of the environment variable.",
                    "type": "string"
                  },
                  "value": {
                    "description": "Value of the environment variable.",
                    "type": "string"
                  }
                },
                "required": [
                  "name"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "image": {
              "description": "NVIDIA Container Toolkit image name",
              "pattern": "[a-zA-Z0-9\\-]+",
              "type": "string"
            },
            "imagePullPolicy": {
              "description": "Image pull policy",
              "type": "string"
            },
            "imagePullSecrets": {
              "description": "Image pull secrets",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "installDir": {
              "default": "/usr/local/nvidia",
              "description": "Toolkit install directory on the host",
              "type": "string"
            },
            "repository": {
              "description": "NVIDIA Container Toolkit image repository",
              "type": "string"
            },
            "resources": {
              "description": "Optional: Define resources requests and limits for each pod",
              "properties": {
                "limits": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "string"
                      }
                    ],
                    "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$",
                    "x-kubernetes-int-or-string": true
                  },
                  "description": "Limits describes the maximum amount of compute resources allowed.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
                  "type": "object"
                },
                "requests": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "string"
                      }
                    ],
                    "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$",
                    "x-kubernetes-int-or-string": true
                  },
                  "description": "Requests describes the minimum amount of compute resources required.\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\notherwise to an implementation-defined value. Requests cannot exceed Limits.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
                  "type": "object"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "version": {
              "description": "NVIDIA Container Toolkit image tag",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "validator": {
          "description": "Validator defines the spec for operator-validator daemonset",
          "properties": {
            "args": {
              "description": "Optional: List of arguments",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "cuda": {
              "description": "CUDA validator spec",
              "properties": {
                "env": {
                  "description": "Optional: List of environment variables",
                  "items": {
                    "description": "EnvVar represents an environment variable present in a Container.",
                    "properties": {
                      "name": {
                        "description": "Name of the environment variable.",
                        "type": "string"
                      },
                      "value": {
                        "description": "Value of the environment variable.",
                        "type": "string"
                      }
                    },
                    "required": [
                      "name"
                    ],
                    "type": "object",
                    "additionalProperties": false
                  },
                  "type": "array"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "driver": {
              "description": "Toolkit validator spec",
              "properties": {
                "env": {
                  "description": "Optional: List of environment variables",
                  "items": {
                    "description": "EnvVar represents an environment variable present in a Container.",
                    "properties": {
                      "name": {
                        "description": "Name of the environment variable.",
                        "type": "string"
                      },
                      "value": {
                        "description": "Value of the environment variable.",
                        "type": "string"
                      }
                    },
                    "required": [
                      "name"
                    ],
                    "type": "object",
                    "additionalProperties": false
                  },
                  "type": "array"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "env": {
              "description": "Optional: List of environment variables",
              "items": {
                "description": "EnvVar represents an environment variable present in a Container.",
                "properties": {
                  "name": {
                    "description": "Name of the environment variable.",
                    "type": "string"
                  },
                  "value": {
                    "description": "Value of the environment variable.",
                    "type": "string"
                  }
                },
                "required": [
                  "name"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "image": {
              "description": "Validator image name",
              "pattern": "[a-zA-Z0-9\\-]+",
              "type": "string"
            },
            "imagePullPolicy": {
              "description": "Image pull policy",
              "type": "string"
            },
            "imagePullSecrets": {
              "description": "Image pull secrets",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "plugin": {
              "description": "Plugin validator spec",
              "properties": {
                "env": {
                  "description": "Optional: List of environment variables",
                  "items": {
                    "description": "EnvVar represents an environment variable present in a Container.",
                    "properties": {
                      "name": {
                        "description": "Name of the environment variable.",
                        "type": "string"
                      },
                      "value": {
                        "description": "Value of the environment variable.",
                        "type": "string"
                      }
                    },
                    "required": [
                      "name"
                    ],
                    "type": "object",
                    "additionalProperties": false
                  },
                  "type": "array"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "repository": {
              "description": "Validator image repository",
              "type": "string"
            },
            "resources": {
              "description": "Optional: Define resources requests and limits for each pod",
              "properties": {
                "limits": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "string"
                      }
                    ],
                    "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$",
                    "x-kubernetes-int-or-string": true
                  },
                  "description": "Limits describes the maximum amount of compute resources allowed.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
                  "type": "object"
                },
                "requests": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "string"
                      }
                    ],
                    "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$",
                    "x-kubernetes-int-or-string": true
                  },
                  "description": "Requests describes the minimum amount of compute resources required.\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\notherwise to an implementation-defined value. Requests cannot exceed Limits.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
                  "type": "object"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "toolkit": {
              "description": "Toolkit validator spec",
              "properties": {
                "env": {
                  "description": "Optional: List of environment variables",
                  "items": {
                    "description": "EnvVar represents an environment variable present in a Container.",
                    "properties": {
                      "name": {
                        "description": "Name of the environment variable.",
                        "type": "string"
                      },
                      "value": {
                        "description": "Value of the environment variable.",
                        "type": "string"
                      }
                    },
                    "required": [
                      "name"
                    ],
                    "type": "object",
                    "additionalProperties": false
                  },
                  "type": "array"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "version": {
              "description": "Validator image tag",
              "type": "string"
            },
            "vfioPCI": {
              "description": "VfioPCI validator spec",
              "properties": {
                "env": {
                  "description": "Optional: List of environment variables",
                  "items": {
                    "description": "EnvVar represents an environment variable present in a Container.",
                    "properties": {
                      "name": {
                        "description": "Name of the environment variable.",
                        "type": "string"
                      },
                      "value": {
                        "description": "Value of the environment variable.",
                        "type": "string"
                      }
                    },
                    "required": [
                      "name"
                    ],
                    "type": "object",
                    "additionalProperties": false
                  },
                  "type": "array"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "vgpuDevices": {
              "description": "VGPUDevices validator spec",
              "properties": {
                "env": {
                  "description": "Optional: List of environment variables",
                  "items": {
                    "description": "EnvVar represents an environment variable present in a Container.",
                    "properties": {
                      "name": {
                        "description": "Name of the environment variable.",
                        "type": "string"
                      },
                      "value": {
                        "description": "Value of the environment variable.",
                        "type": "string"
                      }
                    },
                    "required": [
                      "name"
                    ],
                    "type": "object",
                    "additionalProperties": false
                  },
                  "type": "array"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "vgpuManager": {
              "description": "VGPUManager validator spec",
              "properties": {
                "env": {
                  "description": "Optional: List of environment variables",
                  "items": {
                    "description": "EnvVar represents an environment variable present in a Container.",
                    "properties": {
                      "name": {
                        "description": "Name of the environment variable.",
                        "type": "string"
                      },
                      "value": {
                        "description": "Value of the environment variable.",
                        "type": "string"
                      }
                    },
                    "required": [
                      "name"
                    ],
                    "type": "object",
                    "additionalProperties": false
                  },
                  "type": "array"
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "vfioManager": {
          "description": "VFIOManager for configuration to deploy VFIO-PCI Manager",
          "properties": {
            "args": {
              "description": "Optional: List of arguments",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "driverManager": {
              "description": "DriverManager represents configuration for NVIDIA Driver Manager",
              "properties": {
                "env": {
                  "description": "Optional: List of environment variables",
                  "items": {
                    "description": "EnvVar represents an environment variable present in a Container.",
                    "properties": {
                      "name": {
                        "description": "Name of the environment variable.",
                        "type": "string"
                      },
                      "value": {
                        "description": "Value of the environment variable.",
                        "type": "string"
                      }
                    },
                    "required": [
                      "name"
                    ],
                    "type": "object",
                    "additionalProperties": false
                  },
                  "type": "array"
                },
                "image": {
                  "description": "Image represents NVIDIA Driver Manager image name",
                  "pattern": "[a-zA-Z0-9\\-]+",
                  "type": "string"
                },
                "imagePullPolicy": {
                  "description": "Image pull policy",
                  "type": "string"
                },
                "imagePullSecrets": {
                  "description": "Image pull secrets",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "repository": {
                  "description": "Repository represents Driver Managerrepository path",
                  "type": "string"
                },
                "version": {
                  "description": "Version represents NVIDIA Driver Manager image tag(version)",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "enabled": {
              "description": "Enabled indicates if deployment of VFIO Manager is enabled",
              "type": "boolean"
            },
            "env": {
              "description": "Optional: List of environment variables",
              "items": {
                "description": "EnvVar represents an environment variable present in a Container.",
                "properties": {
                  "name": {
                    "description": "Name of the environment variable.",
                    "type": "string"
                  },
                  "value": {
                    "description": "Value of the environment variable.",
                    "type": "string"
                  }
                },
                "required": [
                  "name"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "image": {
              "description": "VFIO Manager image name",
              "pattern": "[a-zA-Z0-9\\-]+",
              "type": "string"
            },
            "imagePullPolicy": {
              "description": "Image pull policy",
              "type": "string"
            },
            "imagePullSecrets": {
              "description": "Image pull secrets",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "repository": {
              "description": "VFIO Manager image repository",
              "type": "string"
            },
            "resources": {
              "description": "Optional: Define resources requests and limits for each pod",
              "properties": {
                "limits": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "string"
                      }
                    ],
                    "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$",
                    "x-kubernetes-int-or-string": true
                  },
                  "description": "Limits describes the maximum amount of compute resources allowed.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
                  "type": "object"
                },
                "requests": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "string"
                      }
                    ],
                    "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$",
                    "x-kubernetes-int-or-string": true
                  },
                  "description": "Requests describes the minimum amount of compute resources required.\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\notherwise to an implementation-defined value. Requests cannot exceed Limits.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
                  "type": "object"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "version": {
              "description": "VFIO Manager image tag",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "vgpuDeviceManager": {
          "description": "VGPUDeviceManager spec",
          "properties": {
            "args": {
              "description": "Optional: List of arguments",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "config": {
              "description": "NVIDIA vGPU devices configuration for NVIDIA vGPU Device Manager container",
              "properties": {
                "default": {
                  "default": "default",
                  "description": "Default config name within the ConfigMap",
                  "type": "string"
                },
                "name": {
                  "description": "ConfigMap name",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "enabled": {
              "description": "Enabled indicates if deployment of NVIDIA vGPU Device Manager is enabled",
              "type": "boolean"
            },
            "env": {
              "description": "Optional: List of environment variables",
              "items": {
                "description": "EnvVar represents an environment variable present in a Container.",
                "properties": {
                  "name": {
                    "description": "Name of the environment variable.",
                    "type": "string"
                  },
                  "value": {
                    "description": "Value of the environment variable.",
                    "type": "string"
                  }
                },
                "required": [
                  "name"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "image": {
              "description": "NVIDIA vGPU Device Manager image name",
              "pattern": "[a-zA-Z0-9\\-]+",
              "type": "string"
            },
            "imagePullPolicy": {
              "description": "Image pull policy",
              "type": "string"
            },
            "imagePullSecrets": {
              "description": "Image pull secrets",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "repository": {
              "description": "NVIDIA vGPU Device Manager image repository",
              "type": "string"
            },
            "resources": {
              "description": "Optional: Define resources requests and limits for each pod",
              "properties": {
                "limits": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "string"
                      }
                    ],
                    "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$",
                    "x-kubernetes-int-or-string": true
                  },
                  "description": "Limits describes the maximum amount of compute resources allowed.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
                  "type": "object"
                },
                "requests": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "string"
                      }
                    ],
                    "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$",
                    "x-kubernetes-int-or-string": true
                  },
                  "description": "Requests describes the minimum amount of compute resources required.\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\notherwise to an implementation-defined value. Requests cannot exceed Limits.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
                  "type": "object"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "version": {
              "description": "NVIDIA vGPU Device Manager image tag",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "vgpuManager": {
          "description": "VGPUManager component spec",
          "properties": {
            "args": {
              "description": "Optional: List of arguments",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "driverManager": {
              "description": "DriverManager represents configuration for NVIDIA Driver Manager initContainer",
              "properties": {
                "env": {
                  "description": "Optional: List of environment variables",
                  "items": {
                    "description": "EnvVar represents an environment variable present in a Container.",
                    "properties": {
                      "name": {
                        "description": "Name of the environment variable.",
                        "type": "string"
                      },
                      "value": {
                        "description": "Value of the environment variable.",
                        "type": "string"
                      }
                    },
                    "required": [
                      "name"
                    ],
                    "type": "object",
                    "additionalProperties": false
                  },
                  "type": "array"
                },
                "image": {
                  "description": "Image represents NVIDIA Driver Manager image name",
                  "pattern": "[a-zA-Z0-9\\-]+",
                  "type": "string"
                },
                "imagePullPolicy": {
                  "description": "Image pull policy",
                  "type": "string"
                },
                "imagePullSecrets": {
                  "description": "Image pull secrets",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "repository": {
                  "description": "Repository represents Driver Managerrepository path",
                  "type": "string"
                },
                "version": {
                  "description": "Version represents NVIDIA Driver Manager image tag(version)",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "enabled": {
              "description": "Enabled indicates if deployment of NVIDIA vGPU Manager through operator is enabled",
              "type": "boolean"
            },
            "env": {
              "description": "Optional: List of environment variables",
              "items": {
                "description": "EnvVar represents an environment variable present in a Container.",
                "properties": {
                  "name": {
                    "description": "Name of the environment variable.",
                    "type": "string"
                  },
                  "value": {
                    "description": "Value of the environment variable.",
                    "type": "string"
                  }
                },
                "required": [
                  "name"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "image": {
              "description": "NVIDIA vGPU Manager  image name",
              "pattern": "[a-zA-Z0-9\\-]+",
              "type": "string"
            },
            "imagePullPolicy": {
              "description": "Image pull policy",
              "type": "string"
            },
            "imagePullSecrets": {
              "description": "Image pull secrets",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "repository": {
              "description": "NVIDIA vGPU Manager image repository",
              "type": "string"
            },
            "resources": {
              "description": "Optional: Define resources requests and limits for each pod",
              "properties": {
                "limits": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "string"
                      }
                    ],
                    "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$",
                    "x-kubernetes-int-or-string": true
                  },
                  "description": "Limits describes the maximum amount of compute resources allowed.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
                  "type": "object"
                },
                "requests": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "string"
                      }
                    ],
                    "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$",
                    "x-kubernetes-int-or-string": true
                  },
                  "description": "Requests describes the minimum amount of compute resources required.\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\notherwise to an implementation-defined value. Requests cannot exceed Limits.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
                  "type": "object"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "version": {
              "description": "NVIDIA vGPU Manager image tag",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        }
      },
      "required": [
        "daemonsets",
        "dcgm",
        "dcgmExporter",
        "devicePlugin",
        "driver",
        "gfd",
        "nodeStatusExporter",
        "operator",
        "toolkit"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "ClusterPolicyStatus defines the observed state of ClusterPolicy",
      "properties": {
        "conditions": {
          "description": "Conditions is a list of conditions representing the ClusterPolicy's current state.",
          "items": {
            "description": "Condition contains details for one aspect of the current state of this API Resource.",
            "properties": {
              "lastTransitionTime": {
                "description": "lastTransitionTime is the last time the condition transitioned from one status to another.\nThis 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.\nThis may be an empty string.",
                "maxLength": 32768,
                "type": "string"
              },
              "observedGeneration": {
                "description": "observedGeneration represents the .metadata.generation that the condition was set based upon.\nFor instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date\nwith 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.\nProducers of specific condition types may define expected values and meanings for this field,\nand whether the values are considered a guaranteed API.\nThe value should be a CamelCase string.\nThis 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.",
                "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",
            "additionalProperties": false
          },
          "type": "array"
        },
        "namespace": {
          "description": "Namespace indicates a namespace in which the operator is installed",
          "type": "string"
        },
        "state": {
          "description": "State indicates status of ClusterPolicy",
          "enum": [
            "ignored",
            "ready",
            "notReady"
          ],
          "type": "string"
        }
      },
      "required": [
        "state"
      ],
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
