{
  "description": "ProvisioningRequestConfig is the Schema for the provisioningrequestconfig 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": "spec is the specification of the ProvisioningRequestConfig.",
      "properties": {
        "managedResources": {
          "description": "managedResources contains the list of resources managed by the autoscaling.\n\nIf empty, all resources are considered managed.\n\nIf not empty, the ProvisioningRequest will contain only the podsets that are\nrequesting at least one of them.\n\nIf none of the workloads podsets is requesting at least a managed resource,\nthe workload is considered ready.",
          "items": {
            "description": "ResourceName is the name identifying various resources in a ResourceList.",
            "type": "string"
          },
          "maxItems": 100,
          "type": "array",
          "x-kubernetes-list-type": "set"
        },
        "parameters": {
          "additionalProperties": {
            "description": "Parameter is limited to 255 characters.",
            "maxLength": 255,
            "type": "string"
          },
          "description": "parameters contains all other parameters classes may require.",
          "maxProperties": 100,
          "type": "object"
        },
        "podSetMergePolicy": {
          "description": "podSetMergePolicy specifies the policy for merging PodSets before being passed\nto the cluster autoscaler.",
          "enum": [
            "IdenticalPodTemplates",
            "IdenticalWorkloadSchedulingRequirements"
          ],
          "type": "string"
        },
        "podSetUpdates": {
          "description": "podSetUpdates specifies the update of the workload's PodSetUpdates which\nare used to target the provisioned nodes.",
          "properties": {
            "nodeSelector": {
              "description": "nodeSelector specifies the list of updates for the NodeSelector.",
              "items": {
                "properties": {
                  "key": {
                    "description": "key specifies the key for the NodeSelector.",
                    "maxLength": 317,
                    "minLength": 1,
                    "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"
                  },
                  "valueFromProvisioningClassDetail": {
                    "description": "valueFromProvisioningClassDetail specifies the key of the\nProvisioningRequest.status.provisioningClassDetails from which the value\nis used for the update.",
                    "maxLength": 32768,
                    "minLength": 1,
                    "type": "string"
                  }
                },
                "required": [
                  "key",
                  "valueFromProvisioningClassDetail"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "maxItems": 8,
              "type": "array"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "provisioningClassName": {
          "description": "provisioningClassName describes the different modes of provisioning the resources.\nCheck autoscaling.x-k8s.io ProvisioningRequestSpec.ProvisioningClassName for details.",
          "maxLength": 253,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$",
          "type": "string"
        },
        "retryStrategy": {
          "default": {
            "backoffBaseSeconds": 60,
            "backoffLimitCount": 3,
            "backoffMaxSeconds": 1800
          },
          "description": "retryStrategy defines strategy for retrying ProvisioningRequest.\nIf null, then the default configuration is applied with the following parameter values:\nbackoffLimitCount:  3\nbackoffBaseSeconds: 60 - 1 min\nbackoffMaxSeconds:  1800 - 30 mins\n\nTo switch off retry mechanism\nset retryStrategy.backoffLimitCount to 0.",
          "properties": {
            "backoffBaseSeconds": {
              "default": 60,
              "description": "backoffBaseSeconds defines the base for the exponential backoff for\nre-queuing an evicted workload.\n\nDefaults to 60.",
              "format": "int32",
              "type": "integer"
            },
            "backoffLimitCount": {
              "default": 3,
              "description": "backoffLimitCount defines the maximum number of re-queuing retries.\nOnce the number is reached, the workload is deactivated (`.spec.activate`=`false`).\n\nEvery backoff duration is about \"b*2^(n-1)+Rand\" where:\n- \"b\" represents the base set by \"BackoffBaseSeconds\" parameter,\n- \"n\" represents the \"workloadStatus.requeueState.count\",\n- \"Rand\" represents the random jitter.\nDuring this time, the workload is taken as an inadmissible and\nother workloads will have a chance to be admitted.\nBy default, the consecutive requeue delays are around: (60s, 120s, 240s, ...).\n\nDefaults to 3.",
              "format": "int32",
              "type": "integer"
            },
            "backoffMaxSeconds": {
              "default": 1800,
              "description": "backoffMaxSeconds defines the maximum backoff time to re-queue an evicted workload.\n\nDefaults to 1800.",
              "format": "int32",
              "type": "integer"
            }
          },
          "type": "object",
          "additionalProperties": false
        }
      },
      "required": [
        "provisioningClassName"
      ],
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
