{
  "description": "AzureManagedMachinePool is the Schema for the azuremanagedmachinepools 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": "AzureManagedMachinePoolSpec defines the desired state of AzureManagedMachinePool.",
      "properties": {
        "additionalTags": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "AdditionalTags is an optional set of tags to add to Azure resources managed by the\nAzure provider, in addition to the ones added by default.",
          "type": "object"
        },
        "asoManagedClustersAgentPoolPatches": {
          "description": "ASOManagedClustersAgentPoolPatches defines JSON merge patches to be applied to the generated ASO ManagedClustersAgentPool resource.\nWARNING: This is meant to be used sparingly to enable features for development and testing that are not\notherwise represented in the CAPZ API. Misconfiguration that conflicts with CAPZ's normal mode of\noperation is possible.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "availabilityZones": {
          "description": "AvailabilityZones - Availability zones for nodes. Must use VirtualMachineScaleSets AgentPoolType.\nImmutable.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "enableEncryptionAtHost": {
          "description": "EnableEncryptionAtHost indicates whether host encryption is enabled on the node pool.\nImmutable.\nSee also [AKS doc].\n\n\n[AKS doc]: https://learn.microsoft.com/en-us/azure/aks/enable-host-encryption",
          "type": "boolean"
        },
        "enableFIPS": {
          "description": "EnableFIPS indicates whether FIPS is enabled on the node pool.\nImmutable.",
          "type": "boolean"
        },
        "enableNodePublicIP": {
          "description": "EnableNodePublicIP controls whether or not nodes in the pool each have a public IP address.\nImmutable.",
          "type": "boolean"
        },
        "enableUltraSSD": {
          "description": "EnableUltraSSD enables the storage type UltraSSD_LRS for the agent pool.\nImmutable.",
          "type": "boolean"
        },
        "kubeletConfig": {
          "description": "KubeletConfig specifies the kubelet configurations for nodes.\nImmutable.",
          "properties": {
            "allowedUnsafeSysctls": {
              "description": "AllowedUnsafeSysctls - Allowlist of unsafe sysctls or unsafe sysctl patterns (ending in `*`).\nValid values match `kernel.shm*`, `kernel.msg*`, `kernel.sem`, `fs.mqueue.*`, or `net.*`.",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "containerLogMaxFiles": {
              "description": "ContainerLogMaxFiles - The maximum number of container log files that can be present for a container. The number must be \u2265 2.",
              "minimum": 2,
              "type": "integer"
            },
            "containerLogMaxSizeMB": {
              "description": "ContainerLogMaxSizeMB - The maximum size in MB of a container log file before it is rotated.",
              "type": "integer"
            },
            "cpuCfsQuota": {
              "description": "CPUCfsQuota - Enable CPU CFS quota enforcement for containers that specify CPU limits.",
              "type": "boolean"
            },
            "cpuCfsQuotaPeriod": {
              "description": "CPUCfsQuotaPeriod - Sets CPU CFS quota period value.\nMust end in \"ms\", e.g. \"100ms\"",
              "type": "string"
            },
            "cpuManagerPolicy": {
              "description": "CPUManagerPolicy - CPU Manager policy to use.",
              "enum": [
                "none",
                "static"
              ],
              "type": "string"
            },
            "failSwapOn": {
              "description": "FailSwapOn - If set to true it will make the Kubelet fail to start if swap is enabled on the node.",
              "type": "boolean"
            },
            "imageGcHighThreshold": {
              "description": "ImageGcHighThreshold - The percent of disk usage after which image garbage collection is always run.\nValid values are 0-100 (inclusive).",
              "maximum": 100,
              "minimum": 0,
              "type": "integer"
            },
            "imageGcLowThreshold": {
              "description": "ImageGcLowThreshold - The percent of disk usage before which image garbage collection is never run.\nValid values are 0-100 (inclusive) and must be less than `imageGcHighThreshold`.",
              "maximum": 100,
              "minimum": 0,
              "type": "integer"
            },
            "podMaxPids": {
              "description": "PodMaxPids - The maximum number of processes per pod.\nMust not exceed kernel PID limit. -1 disables the limit.",
              "minimum": -1,
              "type": "integer"
            },
            "topologyManagerPolicy": {
              "description": "TopologyManagerPolicy - Topology Manager policy to use.",
              "enum": [
                "none",
                "best-effort",
                "restricted",
                "single-numa-node"
              ],
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "kubeletDiskType": {
          "description": "KubeletDiskType specifies the kubelet disk type. Default to OS. Possible values include: 'OS', 'Temporary'.\nRequires Microsoft.ContainerService/KubeletDisk preview feature to be set.\nImmutable.\nSee also [AKS doc].\n\n\n[AKS doc]: https://learn.microsoft.com/rest/api/aks/agent-pools/create-or-update?tabs=HTTP#kubeletdisktype",
          "enum": [
            "OS",
            "Temporary"
          ],
          "type": "string"
        },
        "linuxOSConfig": {
          "description": "LinuxOSConfig specifies the custom Linux OS settings and configurations.\nImmutable.",
          "properties": {
            "swapFileSizeMB": {
              "description": "SwapFileSizeMB specifies size in MB of a swap file will be created on the agent nodes from this node pool.\nMax value of SwapFileSizeMB should be the size of temporary disk(/dev/sdb).\nMust be at least 1.\nSee also [AKS doc].\n\n\n[AKS doc]: https://learn.microsoft.com/azure/virtual-machines/managed-disks-overview#temporary-disk",
              "minimum": 1,
              "type": "integer"
            },
            "sysctls": {
              "description": "Sysctl specifies the settings for Linux agent nodes.",
              "properties": {
                "fsAioMaxNr": {
                  "description": "FsAioMaxNr specifies the maximum number of system-wide asynchronous io requests.\nValid values are 65536-6553500 (inclusive).\nMaps to fs.aio-max-nr.",
                  "maximum": 6553500,
                  "minimum": 65536,
                  "type": "integer"
                },
                "fsFileMax": {
                  "description": "FsFileMax specifies the max number of file-handles that the Linux kernel will allocate, by increasing increases the maximum number of open files permitted.\nValid values are 8192-12000500 (inclusive).\nMaps to fs.file-max.",
                  "maximum": 12000500,
                  "minimum": 8192,
                  "type": "integer"
                },
                "fsInotifyMaxUserWatches": {
                  "description": "FsInotifyMaxUserWatches specifies the number of file watches allowed by the system. Each watch is roughly 90 bytes on a 32-bit kernel, and roughly 160 bytes on a 64-bit kernel.\nValid values are 781250-2097152 (inclusive).\nMaps to fs.inotify.max_user_watches.",
                  "maximum": 2097152,
                  "minimum": 781250,
                  "type": "integer"
                },
                "fsNrOpen": {
                  "description": "FsNrOpen specifies the maximum number of file-handles a process can allocate.\nValid values are 8192-20000500 (inclusive).\nMaps to fs.nr_open.",
                  "maximum": 20000500,
                  "minimum": 8192,
                  "type": "integer"
                },
                "kernelThreadsMax": {
                  "description": "KernelThreadsMax specifies the maximum number of all threads that can be created.\nValid values are 20-513785 (inclusive).\nMaps to kernel.threads-max.",
                  "maximum": 513785,
                  "minimum": 20,
                  "type": "integer"
                },
                "netCoreNetdevMaxBacklog": {
                  "description": "NetCoreNetdevMaxBacklog specifies maximum number of packets, queued on the INPUT side, when the interface receives packets faster than kernel can process them.\nValid values are 1000-3240000 (inclusive).\nMaps to net.core.netdev_max_backlog.",
                  "maximum": 3240000,
                  "minimum": 1000,
                  "type": "integer"
                },
                "netCoreOptmemMax": {
                  "description": "NetCoreOptmemMax specifies the maximum ancillary buffer size (option memory buffer) allowed per socket.\nSocket option memory is used in a few cases to store extra structures relating to usage of the socket.\nValid values are 20480-4194304 (inclusive).\nMaps to net.core.optmem_max.",
                  "maximum": 4194304,
                  "minimum": 20480,
                  "type": "integer"
                },
                "netCoreRmemDefault": {
                  "description": "NetCoreRmemDefault specifies the default receive socket buffer size in bytes.\nValid values are 212992-134217728 (inclusive).\nMaps to net.core.rmem_default.",
                  "maximum": 134217728,
                  "minimum": 212992,
                  "type": "integer"
                },
                "netCoreRmemMax": {
                  "description": "NetCoreRmemMax specifies the maximum receive socket buffer size in bytes.\nValid values are 212992-134217728 (inclusive).\nMaps to net.core.rmem_max.",
                  "maximum": 134217728,
                  "minimum": 212992,
                  "type": "integer"
                },
                "netCoreSomaxconn": {
                  "description": "NetCoreSomaxconn specifies maximum number of connection requests that can be queued for any given listening socket.\nAn upper limit for the value of the backlog parameter passed to the listen(2)(https://man7.org/linux/man-pages/man2/listen.2.html) function.\nIf the backlog argument is greater than the somaxconn, then it's silently truncated to this limit.\nValid values are 4096-3240000 (inclusive).\nMaps to net.core.somaxconn.",
                  "maximum": 3240000,
                  "minimum": 4096,
                  "type": "integer"
                },
                "netCoreWmemDefault": {
                  "description": "NetCoreWmemDefault specifies the default send socket buffer size in bytes.\nValid values are 212992-134217728 (inclusive).\nMaps to net.core.wmem_default.",
                  "maximum": 134217728,
                  "minimum": 212992,
                  "type": "integer"
                },
                "netCoreWmemMax": {
                  "description": "NetCoreWmemMax specifies the maximum send socket buffer size in bytes.\nValid values are 212992-134217728 (inclusive).\nMaps to net.core.wmem_max.",
                  "maximum": 134217728,
                  "minimum": 212992,
                  "type": "integer"
                },
                "netIpv4IPLocalPortRange": {
                  "description": "NetIpv4IPLocalPortRange is used by TCP and UDP traffic to choose the local port on the agent node.\nPortRange should be specified in the format \"first last\".\nFirst, being an integer, must be between [1024 - 60999].\nLast, being an integer, must be between [32768 - 65000].\nMaps to net.ipv4.ip_local_port_range.",
                  "type": "string"
                },
                "netIpv4NeighDefaultGcThresh1": {
                  "description": "NetIpv4NeighDefaultGcThresh1 specifies the minimum number of entries that may be in the ARP cache.\nGarbage collection won't be triggered if the number of entries is below this setting.\nValid values are 128-80000 (inclusive).\nMaps to net.ipv4.neigh.default.gc_thresh1.",
                  "maximum": 80000,
                  "minimum": 128,
                  "type": "integer"
                },
                "netIpv4NeighDefaultGcThresh2": {
                  "description": "NetIpv4NeighDefaultGcThresh2 specifies soft maximum number of entries that may be in the ARP cache.\nARP garbage collection will be triggered about 5 seconds after reaching this soft maximum.\nValid values are 512-90000 (inclusive).\nMaps to net.ipv4.neigh.default.gc_thresh2.",
                  "maximum": 90000,
                  "minimum": 512,
                  "type": "integer"
                },
                "netIpv4NeighDefaultGcThresh3": {
                  "description": "NetIpv4NeighDefaultGcThresh3 specified hard maximum number of entries in the ARP cache.\nValid values are 1024-100000 (inclusive).\nMaps to net.ipv4.neigh.default.gc_thresh3.",
                  "maximum": 100000,
                  "minimum": 1024,
                  "type": "integer"
                },
                "netIpv4TCPFinTimeout": {
                  "description": "NetIpv4TCPFinTimeout specifies the length of time an orphaned connection will remain in the FIN_WAIT_2 state before it's aborted at the local end.\nValid values are 5-120 (inclusive).\nMaps to net.ipv4.tcp_fin_timeout.",
                  "maximum": 120,
                  "minimum": 5,
                  "type": "integer"
                },
                "netIpv4TCPKeepaliveProbes": {
                  "description": "NetIpv4TCPKeepaliveProbes specifies the number of keepalive probes TCP sends out, until it decides the connection is broken.\nValid values are 1-15 (inclusive).\nMaps to net.ipv4.tcp_keepalive_probes.",
                  "maximum": 15,
                  "minimum": 1,
                  "type": "integer"
                },
                "netIpv4TCPKeepaliveTime": {
                  "description": "NetIpv4TCPKeepaliveTime specifies the rate at which TCP sends out a keepalive message when keepalive is enabled.\nValid values are 30-432000 (inclusive).\nMaps to net.ipv4.tcp_keepalive_time.",
                  "maximum": 432000,
                  "minimum": 30,
                  "type": "integer"
                },
                "netIpv4TCPMaxSynBacklog": {
                  "description": "NetIpv4TCPMaxSynBacklog specifies the maximum number of queued connection requests that have still not received an acknowledgment from the connecting client.\nIf this number is exceeded, the kernel will begin dropping requests.\nValid values are 128-3240000 (inclusive).\nMaps to net.ipv4.tcp_max_syn_backlog.",
                  "maximum": 3240000,
                  "minimum": 128,
                  "type": "integer"
                },
                "netIpv4TCPMaxTwBuckets": {
                  "description": "NetIpv4TCPMaxTwBuckets specifies maximal number of timewait sockets held by system simultaneously.\nIf this number is exceeded, time-wait socket is immediately destroyed and warning is printed.\nValid values are 8000-1440000 (inclusive).\nMaps to net.ipv4.tcp_max_tw_buckets.",
                  "maximum": 1440000,
                  "minimum": 8000,
                  "type": "integer"
                },
                "netIpv4TCPTwReuse": {
                  "description": "NetIpv4TCPTwReuse is used to allow to reuse TIME-WAIT sockets for new connections when it's safe from protocol viewpoint.\nMaps to net.ipv4.tcp_tw_reuse.",
                  "type": "boolean"
                },
                "netIpv4TCPkeepaliveIntvl": {
                  "description": "NetIpv4TCPkeepaliveIntvl specifies the frequency of the probes sent out.\nMultiplied by tcpKeepaliveprobes, it makes up the time to kill a connection that isn't responding, after probes started.\nValid values are 1-75 (inclusive).\nMaps to net.ipv4.tcp_keepalive_intvl.",
                  "maximum": 75,
                  "minimum": 1,
                  "type": "integer"
                },
                "netNetfilterNfConntrackBuckets": {
                  "description": "NetNetfilterNfConntrackBuckets specifies the size of hash table used by nf_conntrack module to record the established connection record of the TCP protocol.\nValid values are 65536-147456 (inclusive).\nMaps to net.netfilter.nf_conntrack_buckets.",
                  "maximum": 147456,
                  "minimum": 65536,
                  "type": "integer"
                },
                "netNetfilterNfConntrackMax": {
                  "description": "NetNetfilterNfConntrackMax specifies the maximum number of connections supported by the nf_conntrack module or the size of connection tracking table.\nValid values are 131072-1048576 (inclusive).\nMaps to net.netfilter.nf_conntrack_max.",
                  "maximum": 1048576,
                  "minimum": 131072,
                  "type": "integer"
                },
                "vmMaxMapCount": {
                  "description": "VMMaxMapCount specifies the maximum number of memory map areas a process may have.\nMaps to vm.max_map_count.\nValid values are 65530-262144 (inclusive).",
                  "maximum": 262144,
                  "minimum": 65530,
                  "type": "integer"
                },
                "vmSwappiness": {
                  "description": "VMSwappiness specifies aggressiveness of the kernel in swapping memory pages.\nHigher values will increase aggressiveness, lower values decrease the amount of swap.\nValid values are 0-100 (inclusive).\nMaps to vm.swappiness.",
                  "maximum": 100,
                  "minimum": 0,
                  "type": "integer"
                },
                "vmVfsCachePressure": {
                  "description": "VMVfsCachePressure specifies the percentage value that controls tendency of the kernel to reclaim the memory, which is used for caching of directory and inode objects.\nValid values are 1-500 (inclusive).\nMaps to vm.vfs_cache_pressure.",
                  "maximum": 500,
                  "minimum": 1,
                  "type": "integer"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "transparentHugePageDefrag": {
              "description": "TransparentHugePageDefrag specifies whether the kernel should make aggressive use of memory compaction to make more hugepages available.\nSee also [Linux doc].\n\n\n[Linux doc]: https://www.kernel.org/doc/html/latest/admin-guide/mm/transhuge.html#admin-guide-transhuge for more details.",
              "enum": [
                "always",
                "defer",
                "defer+madvise",
                "madvise",
                "never"
              ],
              "type": "string"
            },
            "transparentHugePageEnabled": {
              "description": "TransparentHugePageEnabled specifies various modes of Transparent Hugepages.\nSee also [Linux doc].\n\n\n[Linux doc]: https://www.kernel.org/doc/html/latest/admin-guide/mm/transhuge.html#admin-guide-transhuge for more details.",
              "enum": [
                "always",
                "madvise",
                "never"
              ],
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "maxPods": {
          "description": "MaxPods specifies the kubelet `--max-pods` configuration for the node pool.\nImmutable.\nSee also [AKS doc], [K8s doc].\n\n\n[AKS doc]: https://learn.microsoft.com/azure/aks/configure-azure-cni#configure-maximum---new-clusters\n[K8s doc]: https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/",
          "type": "integer"
        },
        "mode": {
          "description": "Mode represents the mode of an agent pool. Possible values include: System, User.",
          "enum": [
            "System",
            "User"
          ],
          "type": "string"
        },
        "name": {
          "description": "Name is the name of the agent pool. If not specified, CAPZ uses the name of the CR as the agent pool name.\nImmutable.",
          "type": "string"
        },
        "nodeLabels": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Node labels represent the labels for all of the nodes present in node pool.\nSee also [AKS doc].\n\n\n[AKS doc]: https://learn.microsoft.com/azure/aks/use-labels",
          "type": "object"
        },
        "nodePublicIPPrefixID": {
          "description": "NodePublicIPPrefixID specifies the public IP prefix resource ID which VM nodes should use IPs from.\nImmutable.",
          "type": "string"
        },
        "osDiskSizeGB": {
          "description": "OSDiskSizeGB is the disk size for every machine in this agent pool.\nIf you specify 0, it will apply the default osDisk size according to the vmSize specified.\nImmutable.",
          "type": "integer"
        },
        "osDiskType": {
          "default": "Managed",
          "description": "OsDiskType specifies the OS disk type for each node in the pool. Allowed values are 'Ephemeral' and 'Managed' (default).\nImmutable.\nSee also [AKS doc].\n\n\n[AKS doc]: https://learn.microsoft.com/azure/aks/cluster-configuration#ephemeral-os",
          "enum": [
            "Ephemeral",
            "Managed"
          ],
          "type": "string"
        },
        "osType": {
          "description": "OSType specifies the virtual machine operating system. Default to Linux. Possible values include: 'Linux', 'Windows'.\n'Windows' requires the AzureManagedControlPlane's `spec.networkPlugin` to be `azure`.\nImmutable.\nSee also [AKS doc].\n\n\n[AKS doc]: https://learn.microsoft.com/rest/api/aks/agent-pools/create-or-update?tabs=HTTP#ostype",
          "enum": [
            "Linux",
            "Windows"
          ],
          "type": "string"
        },
        "providerIDList": {
          "description": "ProviderIDList is the unique identifier as specified by the cloud provider.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "scaleDownMode": {
          "default": "Delete",
          "description": "ScaleDownMode affects the cluster autoscaler behavior. Default to Delete. Possible values include: 'Deallocate', 'Delete'",
          "enum": [
            "Deallocate",
            "Delete"
          ],
          "type": "string"
        },
        "scaleSetPriority": {
          "description": "ScaleSetPriority specifies the ScaleSetPriority value. Default to Regular. Possible values include: 'Regular', 'Spot'\nImmutable.",
          "enum": [
            "Regular",
            "Spot"
          ],
          "type": "string"
        },
        "scaling": {
          "description": "Scaling specifies the autoscaling parameters for the node pool.",
          "properties": {
            "maxSize": {
              "description": "MaxSize is the maximum number of nodes for auto-scaling.",
              "type": "integer"
            },
            "minSize": {
              "description": "MinSize is the minimum number of nodes for auto-scaling.",
              "type": "integer"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "sku": {
          "description": "SKU is the size of the VMs in the node pool.\nImmutable.",
          "type": "string"
        },
        "spotMaxPrice": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            }
          ],
          "description": "SpotMaxPrice defines max price to pay for spot instance. Possible values are any decimal value greater than zero or -1.\nIf you set the max price to be -1, the VM won't be evicted based on price. The price for the VM will be the current price\nfor spot or the price for a standard VM, which ever is less, as long as there's capacity and quota available.",
          "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$",
          "x-kubernetes-int-or-string": true
        },
        "subnetName": {
          "description": "SubnetName specifies the Subnet where the MachinePool will be placed\nImmutable.",
          "type": "string"
        },
        "taints": {
          "description": "Taints specifies the taints for nodes present in this agent pool.\nSee also [AKS doc].\n\n\n[AKS doc]: https://learn.microsoft.com/azure/aks/use-multiple-node-pools#setting-node-pool-taints",
          "items": {
            "description": "Taint represents a Kubernetes taint.",
            "properties": {
              "effect": {
                "description": "Effect specifies the effect for the taint",
                "enum": [
                  "NoSchedule",
                  "NoExecute",
                  "PreferNoSchedule"
                ],
                "type": "string"
              },
              "key": {
                "description": "Key is the key of the taint",
                "type": "string"
              },
              "value": {
                "description": "Value is the value of the taint",
                "type": "string"
              }
            },
            "required": [
              "effect",
              "key",
              "value"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        }
      },
      "required": [
        "mode",
        "sku"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "AzureManagedMachinePoolStatus defines the observed state of AzureManagedMachinePool.",
      "properties": {
        "conditions": {
          "description": "Conditions defines current service state of the AzureManagedControlPlane.",
          "items": {
            "description": "Condition defines an observation of a Cluster API resource operational state.",
            "properties": {
              "lastTransitionTime": {
                "description": "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\nthe API field changed is acceptable.",
                "format": "date-time",
                "type": "string"
              },
              "message": {
                "description": "A human readable message indicating details about the transition.\nThis field may be empty.",
                "type": "string"
              },
              "reason": {
                "description": "The reason for the condition's last transition in CamelCase.\nThe specific API may choose whether or not this field is considered a guaranteed API.\nThis field may not be empty.",
                "type": "string"
              },
              "severity": {
                "description": "Severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False.",
                "type": "string"
              },
              "status": {
                "description": "Status of the condition, one of True, False, Unknown.",
                "type": "string"
              },
              "type": {
                "description": "Type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important.",
                "type": "string"
              }
            },
            "required": [
              "lastTransitionTime",
              "status",
              "type"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "errorMessage": {
          "description": "Any transient errors that occur during the reconciliation of Machines\ncan be added as events to the Machine object and/or logged in the\ncontroller's output.",
          "type": "string"
        },
        "errorReason": {
          "description": "Any transient errors that occur during the reconciliation of Machines\ncan be added as events to the Machine object and/or logged in the\ncontroller's output.",
          "type": "string"
        },
        "longRunningOperationStates": {
          "description": "LongRunningOperationStates saves the states for Azure long-running operations so they can be continued on the\nnext reconciliation loop.",
          "items": {
            "description": "Future contains the data needed for an Azure long-running operation to continue across reconcile loops.",
            "properties": {
              "data": {
                "description": "Data is the base64 url encoded json Azure AutoRest Future.",
                "type": "string"
              },
              "name": {
                "description": "Name is the name of the Azure resource.\nTogether with the service name, this forms the unique identifier for the future.",
                "type": "string"
              },
              "resourceGroup": {
                "description": "ResourceGroup is the Azure resource group for the resource.",
                "type": "string"
              },
              "serviceName": {
                "description": "ServiceName is the name of the Azure service.\nTogether with the name of the resource, this forms the unique identifier for the future.",
                "type": "string"
              },
              "type": {
                "description": "Type describes the type of future, such as update, create, delete, etc.",
                "type": "string"
              }
            },
            "required": [
              "data",
              "name",
              "serviceName",
              "type"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "ready": {
          "description": "Ready is true when the provider resource is ready.",
          "type": "boolean"
        },
        "replicas": {
          "description": "Replicas is the most recently observed number of replicas.",
          "format": "int32",
          "type": "integer"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
