{
  "description": "DeviceAllocationResult is the result of allocating devices.",
  "properties": {
    "config": {
      "description": "This field is a combination of all the claim and class configuration parameters. Drivers can distinguish between those based on a flag.\n\nThis includes configuration parameters for drivers which have no allocated devices in the result because it is up to the drivers which configuration parameters they support. They can silently ignore unknown configuration parameters.",
      "items": {
        "description": "DeviceAllocationConfiguration gets embedded in an AllocationResult.",
        "properties": {
          "opaque": {
            "description": "OpaqueDeviceConfiguration contains configuration parameters for a driver in a format defined by the driver vendor.",
            "properties": {
              "driver": {
                "description": "Driver is used to determine which kubelet plugin needs to be passed these configuration parameters.\n\nAn admission policy provided by the driver developer could use this to decide whether it needs to validate them.\n\nMust be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver.",
                "type": "string"
              },
              "parameters": {
                "description": "RawExtension is used to hold extensions in external versions.\n\nTo use this, make a field which has RawExtension as its type in your external, versioned struct, and Object in your internal struct. You also need to register your various plugin types.\n\n// Internal package:\n\n\ttype MyAPIObject struct {\n\t\truntime.TypeMeta `json:\",inline\"`\n\t\tMyPlugin runtime.Object `json:\"myPlugin\"`\n\t}\n\n\ttype PluginA struct {\n\t\tAOption string `json:\"aOption\"`\n\t}\n\n// External package:\n\n\ttype MyAPIObject struct {\n\t\truntime.TypeMeta `json:\",inline\"`\n\t\tMyPlugin runtime.RawExtension `json:\"myPlugin\"`\n\t}\n\n\ttype PluginA struct {\n\t\tAOption string `json:\"aOption\"`\n\t}\n\n// On the wire, the JSON will look something like this:\n\n\t{\n\t\t\"kind\":\"MyAPIObject\",\n\t\t\"apiVersion\":\"v1\",\n\t\t\"myPlugin\": {\n\t\t\t\"kind\":\"PluginA\",\n\t\t\t\"aOption\":\"foo\",\n\t\t},\n\t}\n\nSo what happens? Decode first uses json or yaml to unmarshal the serialized data into your external MyAPIObject. That causes the raw JSON to be stored, but not unpacked. The next step is to copy (using pkg/conversion) into the internal struct. The runtime package's DefaultScheme has conversion functions installed which will unpack the JSON stored in RawExtension, turning it into the correct object type, and storing it in the Object. (TODO: In the case where the object is of an unknown type, a runtime.Unknown object will be created and stored.)",
                "type": "object"
              }
            },
            "required": [
              "driver",
              "parameters"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "requests": {
            "description": "Requests lists the names of requests where the configuration applies. If empty, its applies to all requests.",
            "items": {
              "type": [
                "string",
                "null"
              ]
            },
            "type": [
              "array",
              "null"
            ],
            "x-kubernetes-list-type": "atomic"
          },
          "source": {
            "description": "Source records whether the configuration comes from a class and thus is not something that a normal user would have been able to set or from a claim.",
            "type": "string"
          }
        },
        "required": [
          "source"
        ],
        "type": [
          "object",
          "null"
        ]
      },
      "type": [
        "array",
        "null"
      ],
      "x-kubernetes-list-type": "atomic"
    },
    "results": {
      "description": "Results lists all allocated devices.",
      "items": {
        "description": "DeviceRequestAllocationResult contains the allocation result for one request.",
        "properties": {
          "adminAccess": {
            "description": "AdminAccess indicates that this device was allocated for administrative access. See the corresponding request field for a definition of mode.\n\nThis is an alpha field and requires enabling the DRAAdminAccess feature gate. Admin access is disabled if this field is unset or set to false, otherwise it is enabled.",
            "type": [
              "boolean",
              "null"
            ]
          },
          "device": {
            "description": "Device references one device instance via its name in the driver's resource pool. It must be a DNS label.",
            "type": "string"
          },
          "driver": {
            "description": "Driver specifies the name of the DRA driver whose kubelet plugin should be invoked to process the allocation once the claim is needed on a node.\n\nMust be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver.",
            "type": "string"
          },
          "pool": {
            "description": "This name together with the driver name and the device name field identify which device was allocated (`<driver name>/<pool name>/<device name>`).\n\nMust not be longer than 253 characters and may contain one or more DNS sub-domains separated by slashes.",
            "type": "string"
          },
          "request": {
            "description": "Request is the name of the request in the claim which caused this device to be allocated. Multiple devices may have been allocated per request.",
            "type": "string"
          }
        },
        "required": [
          "request",
          "driver",
          "pool",
          "device"
        ],
        "type": [
          "object",
          "null"
        ]
      },
      "type": [
        "array",
        "null"
      ],
      "x-kubernetes-list-type": "atomic"
    }
  },
  "type": "object",
  "$schema": "http://json-schema.org/schema#"
}