{
  "description": "An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).",
  "properties": {
    "preference": {
      "description": "A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.",
      "properties": {
        "matchExpressions": {
          "description": "A list of node selector requirements by node's labels.",
          "items": {
            "description": "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.",
            "properties": {
              "key": {
                "description": "The label key that the selector applies to.",
                "type": "string"
              },
              "operator": {
                "description": "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.",
                "type": "string"
              },
              "values": {
                "description": "An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.",
                "items": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "type": [
                  "array",
                  "null"
                ],
                "x-kubernetes-list-type": "atomic"
              }
            },
            "required": [
              "key",
              "operator"
            ],
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": false
          },
          "type": [
            "array",
            "null"
          ],
          "x-kubernetes-list-type": "atomic"
        },
        "matchFields": {
          "description": "A list of node selector requirements by node's fields.",
          "items": {
            "description": "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.",
            "properties": {
              "key": {
                "description": "The label key that the selector applies to.",
                "type": "string"
              },
              "operator": {
                "description": "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.",
                "type": "string"
              },
              "values": {
                "description": "An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.",
                "items": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "type": [
                  "array",
                  "null"
                ],
                "x-kubernetes-list-type": "atomic"
              }
            },
            "required": [
              "key",
              "operator"
            ],
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": false
          },
          "type": [
            "array",
            "null"
          ],
          "x-kubernetes-list-type": "atomic"
        }
      },
      "type": [
        "object",
        "null"
      ],
      "x-kubernetes-map-type": "atomic",
      "additionalProperties": false
    },
    "weight": {
      "description": "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.",
      "format": "int32",
      "type": [
        "integer",
        "null"
      ]
    }
  },
  "required": [
    "weight",
    "preference"
  ],
  "type": "object",
  "additionalProperties": false,
  "$schema": "http://json-schema.org/schema#"
}