{
  "description": "AzureMachinePool is the Schema for the azuremachinepools 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": "AzureMachinePoolSpec defines the desired state of AzureMachinePool.",
      "properties": {
        "additionalTags": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "AdditionalTags is an optional set of tags to add to an instance, in addition to the ones added by default by the\nAzure provider. If both the AzureCluster and the AzureMachine specify the same tag name with different values, the\nAzureMachine's value takes precedence.",
          "type": "object"
        },
        "identity": {
          "default": "None",
          "description": "Identity is the type of identity used for the Virtual Machine Scale Set.\nThe type 'SystemAssigned' is an implicitly created identity.\nThe generated identity will be assigned a Subscription contributor role.\nThe type 'UserAssigned' is a standalone Azure resource provided by the user\nand assigned to the VM",
          "enum": [
            "None",
            "SystemAssigned",
            "UserAssigned"
          ],
          "type": "string"
        },
        "location": {
          "description": "Location is the Azure region location e.g. westus2",
          "type": "string"
        },
        "orchestrationMode": {
          "default": "Uniform",
          "description": "OrchestrationMode specifies the orchestration mode for the Virtual Machine Scale Set",
          "enum": [
            "Flexible",
            "Uniform"
          ],
          "type": "string"
        },
        "platformFaultDomainCount": {
          "description": "PlatformFaultDomainCount specifies the number of fault domains that the Virtual Machine Scale Set can use.\nThe count determines the spreading algorithm of the Azure fault domain.",
          "format": "int32",
          "type": "integer"
        },
        "providerID": {
          "description": "ProviderID is the identification ID of the Virtual Machine Scale Set",
          "type": "string"
        },
        "providerIDList": {
          "description": "ProviderIDList are the identification IDs of machine instances provided by the provider.\nThis field must match the provider IDs as seen on the node objects corresponding to a machine pool's machine instances.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "roleAssignmentName": {
          "description": "Deprecated: RoleAssignmentName should be set in the systemAssignedIdentityRole field.",
          "type": "string"
        },
        "strategy": {
          "default": {
            "rollingUpdate": {
              "deletePolicy": "Oldest",
              "maxSurge": 1,
              "maxUnavailable": 0
            },
            "type": "RollingUpdate"
          },
          "description": "The deployment strategy to use to replace existing AzureMachinePoolMachines with new ones.",
          "properties": {
            "rollingUpdate": {
              "description": "Rolling update config params. Present only if\nMachineDeploymentStrategyType = RollingUpdate.",
              "properties": {
                "deletePolicy": {
                  "default": "Oldest",
                  "description": "DeletePolicy defines the policy used by the MachineDeployment to identify nodes to delete when downscaling.\nValid values are \"Random, \"Newest\", \"Oldest\"\nWhen no value is supplied, the default is Oldest",
                  "enum": [
                    "Random",
                    "Newest",
                    "Oldest"
                  ],
                  "type": "string"
                },
                "maxSurge": {
                  "anyOf": [
                    {
                      "type": "integer"
                    },
                    {
                      "type": "string"
                    }
                  ],
                  "default": 1,
                  "description": "The maximum number of machines that can be scheduled above the\ndesired number of machines.\nValue can be an absolute number (ex: 5) or a percentage of\ndesired machines (ex: 10%).\nThis can not be 0 if MaxUnavailable is 0.\nAbsolute number is calculated from percentage by rounding up.\nDefaults to 1.\nExample: when this is set to 30%, the new MachineSet can be scaled\nup immediately when the rolling update starts, such that the total\nnumber of old and new machines do not exceed 130% of desired\nmachines. Once old machines have been killed, new MachineSet can\nbe scaled up further, ensuring that total number of machines running\nat any time during the update is at most 130% of desired machines.",
                  "x-kubernetes-int-or-string": true
                },
                "maxUnavailable": {
                  "anyOf": [
                    {
                      "type": "integer"
                    },
                    {
                      "type": "string"
                    }
                  ],
                  "default": 0,
                  "description": "The maximum number of machines that can be unavailable during the update.\nValue can be an absolute number (ex: 5) or a percentage of desired\nmachines (ex: 10%).\nAbsolute number is calculated from percentage by rounding down.\nThis can not be 0 if MaxSurge is 0.\nDefaults to 0.\nExample: when this is set to 30%, the old MachineSet can be scaled\ndown to 70% of desired machines immediately when the rolling update\nstarts. Once new machines are ready, old MachineSet can be scaled\ndown further, followed by scaling up the new MachineSet, ensuring\nthat the total number of machines available at all times\nduring the update is at least 70% of desired machines.",
                  "x-kubernetes-int-or-string": true
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "type": {
              "default": "RollingUpdate",
              "description": "Type of deployment. Currently the only supported strategy is RollingUpdate",
              "enum": [
                "RollingUpdate"
              ],
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "systemAssignedIdentityRole": {
          "description": "SystemAssignedIdentityRole defines the role and scope to assign to the system assigned identity.",
          "properties": {
            "definitionID": {
              "description": "DefinitionID is the ID of the role definition to create for a system assigned identity. It can be an Azure built-in role or a custom role.\nRefer to built-in roles: https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles",
              "type": "string"
            },
            "name": {
              "description": "Name is the name of the role assignment to create for a system assigned identity. It can be any valid UUID.\nIf not specified, a random UUID will be generated.",
              "type": "string"
            },
            "scope": {
              "description": "Scope is the scope that the role assignment or definition applies to. The scope can be any REST resource instance.\nIf not specified, the scope will be the subscription.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "template": {
          "description": "Template contains the details used to build a replica virtual machine within the Machine Pool",
          "properties": {
            "acceleratedNetworking": {
              "description": "Deprecated: AcceleratedNetworking should be set in the networkInterfaces field.",
              "type": "boolean"
            },
            "dataDisks": {
              "description": "DataDisks specifies the list of data disks to be created for a Virtual Machine",
              "items": {
                "description": "DataDisk specifies the parameters that are used to add one or more data disks to the machine.",
                "properties": {
                  "cachingType": {
                    "description": "CachingType specifies the caching requirements.",
                    "enum": [
                      "None",
                      "ReadOnly",
                      "ReadWrite"
                    ],
                    "type": "string"
                  },
                  "diskSizeGB": {
                    "description": "DiskSizeGB is the size in GB to assign to the data disk.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "lun": {
                    "description": "Lun Specifies the logical unit number of the data disk. This value is used to identify data disks within the VM and therefore must be unique for each data disk attached to a VM.\nThe value must be between 0 and 63.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "managedDisk": {
                    "description": "ManagedDisk specifies the Managed Disk parameters for the data disk.",
                    "properties": {
                      "diskEncryptionSet": {
                        "description": "DiskEncryptionSet specifies the customer-managed disk encryption set resource id for the managed disk.",
                        "properties": {
                          "id": {
                            "description": "ID defines resourceID for diskEncryptionSet resource. It must be in the same subscription",
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "securityProfile": {
                        "description": "SecurityProfile specifies the security profile for the managed disk.",
                        "properties": {
                          "diskEncryptionSet": {
                            "description": "DiskEncryptionSet specifies the customer-managed disk encryption set resource id for the\nmanaged disk that is used for Customer Managed Key encrypted ConfidentialVM OS Disk and\nVMGuest blob.",
                            "properties": {
                              "id": {
                                "description": "ID defines resourceID for diskEncryptionSet resource. It must be in the same subscription",
                                "type": "string"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "securityEncryptionType": {
                            "description": "SecurityEncryptionType specifies the encryption type of the managed disk.\nIt is set to DiskWithVMGuestState to encrypt the managed disk along with the VMGuestState\nblob, and to VMGuestStateOnly to encrypt the VMGuestState blob only.\nWhen set to VMGuestStateOnly, VirtualizedTrustedPlatformModule should be set to Enabled.\nWhen set to DiskWithVMGuestState, EncryptionAtHost should be disabled, SecureBoot and\nVirtualizedTrustedPlatformModule should be set to Enabled.\nIt can be set only for Confidential VMs.",
                            "enum": [
                              "VMGuestStateOnly",
                              "DiskWithVMGuestState"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "storageAccountType": {
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "nameSuffix": {
                    "description": "NameSuffix is the suffix to be appended to the machine name to generate the disk name.\nEach disk name will be in format <machineName>_<nameSuffix>.",
                    "type": "string"
                  }
                },
                "required": [
                  "diskSizeGB",
                  "nameSuffix"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "diagnostics": {
              "description": "Diagnostics specifies the diagnostics settings for a virtual machine.\nIf not specified then Boot diagnostics (Managed) will be enabled.",
              "properties": {
                "boot": {
                  "description": "Boot configures the boot diagnostics settings for the virtual machine.\nThis allows to configure capturing serial output from the virtual machine on boot.\nThis is useful for debugging software based launch issues.\nIf not specified then Boot diagnostics (Managed) will be enabled.",
                  "properties": {
                    "storageAccountType": {
                      "description": "StorageAccountType determines if the storage account for storing the diagnostics data\nshould be disabled (Disabled), provisioned by Azure (Managed) or by the user (UserManaged).",
                      "enum": [
                        "Managed",
                        "UserManaged",
                        "Disabled"
                      ],
                      "type": "string"
                    },
                    "userManaged": {
                      "description": "UserManaged provides a reference to the user-managed storage account.",
                      "properties": {
                        "storageAccountURI": {
                          "description": "StorageAccountURI is the URI of the user-managed storage account.\nThe URI typically will be `https://<mystorageaccountname>.blob.core.windows.net/`\nbut may differ if you are using Azure DNS zone endpoints.\nYou can find the correct endpoint by looking for the Blob Primary Endpoint in the\nendpoints tab in the Azure console or with the CLI by issuing\n`az storage account list --query='[].{name: name, \"resource group\": resourceGroup, \"blob endpoint\": primaryEndpoints.blob}'`.",
                          "maxLength": 1024,
                          "pattern": "^https://",
                          "type": "string"
                        }
                      },
                      "required": [
                        "storageAccountURI"
                      ],
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "storageAccountType"
                  ],
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "image": {
              "description": "Image is used to provide details of an image to use during VM creation.\nIf image details are omitted the image will default the Azure Marketplace \"capi\" offer,\nwhich is based on Ubuntu.",
              "properties": {
                "computeGallery": {
                  "description": "ComputeGallery specifies an image to use from the Azure Compute Gallery",
                  "properties": {
                    "gallery": {
                      "description": "Gallery specifies the name of the compute image gallery that contains the image",
                      "minLength": 1,
                      "type": "string"
                    },
                    "name": {
                      "description": "Name is the name of the image",
                      "minLength": 1,
                      "type": "string"
                    },
                    "plan": {
                      "description": "Plan contains plan information.",
                      "properties": {
                        "offer": {
                          "description": "Offer specifies the name of a group of related images created by the publisher.\nFor example, UbuntuServer, WindowsServer",
                          "minLength": 1,
                          "type": "string"
                        },
                        "publisher": {
                          "description": "Publisher is the name of the organization that created the image",
                          "minLength": 1,
                          "type": "string"
                        },
                        "sku": {
                          "description": "SKU specifies an instance of an offer, such as a major release of a distribution.\nFor example, 18.04-LTS, 2019-Datacenter",
                          "minLength": 1,
                          "type": "string"
                        }
                      },
                      "required": [
                        "offer",
                        "publisher",
                        "sku"
                      ],
                      "type": "object",
                      "additionalProperties": false
                    },
                    "resourceGroup": {
                      "description": "ResourceGroup specifies the resource group containing the private compute gallery.",
                      "type": "string"
                    },
                    "subscriptionID": {
                      "description": "SubscriptionID is the identifier of the subscription that contains the private compute gallery.",
                      "type": "string"
                    },
                    "version": {
                      "description": "Version specifies the version of the marketplace image. The allowed formats\nare Major.Minor.Build or 'latest'. Major, Minor, and Build are decimal numbers.\nSpecify 'latest' to use the latest version of an image available at deploy time.\nEven if you use 'latest', the VM image will not automatically update after deploy\ntime even if a new version becomes available.",
                      "minLength": 1,
                      "type": "string"
                    }
                  },
                  "required": [
                    "gallery",
                    "name",
                    "version"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "id": {
                  "description": "ID specifies an image to use by ID",
                  "type": "string"
                },
                "marketplace": {
                  "description": "Marketplace specifies an image to use from the Azure Marketplace",
                  "properties": {
                    "offer": {
                      "description": "Offer specifies the name of a group of related images created by the publisher.\nFor example, UbuntuServer, WindowsServer",
                      "minLength": 1,
                      "type": "string"
                    },
                    "publisher": {
                      "description": "Publisher is the name of the organization that created the image",
                      "minLength": 1,
                      "type": "string"
                    },
                    "sku": {
                      "description": "SKU specifies an instance of an offer, such as a major release of a distribution.\nFor example, 18.04-LTS, 2019-Datacenter",
                      "minLength": 1,
                      "type": "string"
                    },
                    "thirdPartyImage": {
                      "default": false,
                      "description": "ThirdPartyImage indicates the image is published by a third party publisher and a Plan\nwill be generated for it.",
                      "type": "boolean"
                    },
                    "version": {
                      "description": "Version specifies the version of an image sku. The allowed formats\nare Major.Minor.Build or 'latest'. Major, Minor, and Build are decimal numbers.\nSpecify 'latest' to use the latest version of an image available at deploy time.\nEven if you use 'latest', the VM image will not automatically update after deploy\ntime even if a new version becomes available.",
                      "minLength": 1,
                      "type": "string"
                    }
                  },
                  "required": [
                    "offer",
                    "publisher",
                    "sku",
                    "version"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "sharedGallery": {
                  "description": "SharedGallery specifies an image to use from an Azure Shared Image Gallery\nDeprecated: use ComputeGallery instead.",
                  "properties": {
                    "gallery": {
                      "description": "Gallery specifies the name of the shared image gallery that contains the image",
                      "minLength": 1,
                      "type": "string"
                    },
                    "name": {
                      "description": "Name is the name of the image",
                      "minLength": 1,
                      "type": "string"
                    },
                    "offer": {
                      "description": "Offer specifies the name of a group of related images created by the publisher.\nFor example, UbuntuServer, WindowsServer\nThis value will be used to add a `Plan` in the API request when creating the VM/VMSS resource.\nThis is needed when the source image from which this SIG image was built requires the `Plan` to be used.",
                      "type": "string"
                    },
                    "publisher": {
                      "description": "Publisher is the name of the organization that created the image.\nThis value will be used to add a `Plan` in the API request when creating the VM/VMSS resource.\nThis is needed when the source image from which this SIG image was built requires the `Plan` to be used.",
                      "type": "string"
                    },
                    "resourceGroup": {
                      "description": "ResourceGroup specifies the resource group containing the shared image gallery",
                      "minLength": 1,
                      "type": "string"
                    },
                    "sku": {
                      "description": "SKU specifies an instance of an offer, such as a major release of a distribution.\nFor example, 18.04-LTS, 2019-Datacenter\nThis value will be used to add a `Plan` in the API request when creating the VM/VMSS resource.\nThis is needed when the source image from which this SIG image was built requires the `Plan` to be used.",
                      "type": "string"
                    },
                    "subscriptionID": {
                      "description": "SubscriptionID is the identifier of the subscription that contains the shared image gallery",
                      "minLength": 1,
                      "type": "string"
                    },
                    "version": {
                      "description": "Version specifies the version of the marketplace image. The allowed formats\nare Major.Minor.Build or 'latest'. Major, Minor, and Build are decimal numbers.\nSpecify 'latest' to use the latest version of an image available at deploy time.\nEven if you use 'latest', the VM image will not automatically update after deploy\ntime even if a new version becomes available.",
                      "minLength": 1,
                      "type": "string"
                    }
                  },
                  "required": [
                    "gallery",
                    "name",
                    "resourceGroup",
                    "subscriptionID",
                    "version"
                  ],
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "networkInterfaces": {
              "description": "NetworkInterfaces specifies a list of network interface configurations.\nIf left unspecified, the VM will get a single network interface with a\nsingle IPConfig in the subnet specified in the cluster's node subnet field.\nThe primary interface will be the first networkInterface specified (index 0) in the list.",
              "items": {
                "description": "NetworkInterface defines a network interface.",
                "properties": {
                  "acceleratedNetworking": {
                    "description": "AcceleratedNetworking enables or disables Azure accelerated networking. If omitted, it will be set based on\nwhether the requested VMSize supports accelerated networking.\nIf AcceleratedNetworking is set to true with a VMSize that does not support it, Azure will return an error.",
                    "type": "boolean"
                  },
                  "privateIPConfigs": {
                    "description": "PrivateIPConfigs specifies the number of private IP addresses to attach to the interface.\nDefaults to 1 if not specified.",
                    "type": "integer"
                  },
                  "subnetName": {
                    "description": "SubnetName specifies the subnet in which the new network interface will be placed.",
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "osDisk": {
              "description": "OSDisk contains the operating system disk information for a Virtual Machine",
              "properties": {
                "cachingType": {
                  "description": "CachingType specifies the caching requirements.",
                  "enum": [
                    "None",
                    "ReadOnly",
                    "ReadWrite"
                  ],
                  "type": "string"
                },
                "diffDiskSettings": {
                  "description": "DiffDiskSettings describe ephemeral disk settings for the os disk.",
                  "properties": {
                    "option": {
                      "description": "Option enables ephemeral OS when set to \"Local\"\nSee https://learn.microsoft.com/azure/virtual-machines/ephemeral-os-disks for full details",
                      "enum": [
                        "Local"
                      ],
                      "type": "string"
                    },
                    "placement": {
                      "description": "Placement specifies the ephemeral disk placement for operating system disk. If placement is specified, Option must be set to \"Local\".",
                      "enum": [
                        "CacheDisk",
                        "NvmeDisk",
                        "ResourceDisk"
                      ],
                      "type": "string"
                    }
                  },
                  "required": [
                    "option"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "diskSizeGB": {
                  "description": "DiskSizeGB is the size in GB to assign to the OS disk.\nWill have a default of 30GB if not provided",
                  "format": "int32",
                  "type": "integer"
                },
                "managedDisk": {
                  "description": "ManagedDisk specifies the Managed Disk parameters for the OS disk.",
                  "properties": {
                    "diskEncryptionSet": {
                      "description": "DiskEncryptionSet specifies the customer-managed disk encryption set resource id for the managed disk.",
                      "properties": {
                        "id": {
                          "description": "ID defines resourceID for diskEncryptionSet resource. It must be in the same subscription",
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "securityProfile": {
                      "description": "SecurityProfile specifies the security profile for the managed disk.",
                      "properties": {
                        "diskEncryptionSet": {
                          "description": "DiskEncryptionSet specifies the customer-managed disk encryption set resource id for the\nmanaged disk that is used for Customer Managed Key encrypted ConfidentialVM OS Disk and\nVMGuest blob.",
                          "properties": {
                            "id": {
                              "description": "ID defines resourceID for diskEncryptionSet resource. It must be in the same subscription",
                              "type": "string"
                            }
                          },
                          "type": "object",
                          "additionalProperties": false
                        },
                        "securityEncryptionType": {
                          "description": "SecurityEncryptionType specifies the encryption type of the managed disk.\nIt is set to DiskWithVMGuestState to encrypt the managed disk along with the VMGuestState\nblob, and to VMGuestStateOnly to encrypt the VMGuestState blob only.\nWhen set to VMGuestStateOnly, VirtualizedTrustedPlatformModule should be set to Enabled.\nWhen set to DiskWithVMGuestState, EncryptionAtHost should be disabled, SecureBoot and\nVirtualizedTrustedPlatformModule should be set to Enabled.\nIt can be set only for Confidential VMs.",
                          "enum": [
                            "VMGuestStateOnly",
                            "DiskWithVMGuestState"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "storageAccountType": {
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "osType": {
                  "type": "string"
                }
              },
              "required": [
                "osType"
              ],
              "type": "object",
              "additionalProperties": false
            },
            "securityProfile": {
              "description": "SecurityProfile specifies the Security profile settings for a virtual machine.",
              "properties": {
                "encryptionAtHost": {
                  "description": "This field indicates whether Host Encryption should be enabled\nor disabled for a virtual machine or virtual machine scale set.\nThis should be disabled when SecurityEncryptionType is set to DiskWithVMGuestState.\nDefault is disabled.",
                  "type": "boolean"
                },
                "securityType": {
                  "description": "SecurityType specifies the SecurityType of the virtual machine. It has to be set to any specified value to\nenable UefiSettings. The default behavior is: UefiSettings will not be enabled unless this property is set.",
                  "enum": [
                    "ConfidentialVM",
                    "TrustedLaunch"
                  ],
                  "type": "string"
                },
                "uefiSettings": {
                  "description": "UefiSettings specifies the security settings like secure boot and vTPM used while creating the virtual machine.",
                  "properties": {
                    "secureBootEnabled": {
                      "description": "SecureBootEnabled specifies whether secure boot should be enabled on the virtual machine.\nSecure Boot verifies the digital signature of all boot components and halts the boot process if signature verification fails.\nIf omitted, the platform chooses a default, which is subject to change over time, currently that default is false.",
                      "type": "boolean"
                    },
                    "vTpmEnabled": {
                      "description": "VTpmEnabled specifies whether vTPM should be enabled on the virtual machine.\nWhen true it enables the virtualized trusted platform module measurements to create a known good boot integrity policy baseline.\nThe integrity policy baseline is used for comparison with measurements from subsequent VM boots to determine if anything has changed.\nThis is required to be set to Enabled if SecurityEncryptionType is defined.\nIf omitted, the platform chooses a default, which is subject to change over time, currently that default is false.",
                      "type": "boolean"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "spotVMOptions": {
              "description": "SpotVMOptions allows the ability to specify the Machine should use a Spot VM",
              "properties": {
                "evictionPolicy": {
                  "description": "EvictionPolicy defines the behavior of the virtual machine when it is evicted. It can be either Delete or Deallocate.",
                  "enum": [
                    "Deallocate",
                    "Delete"
                  ],
                  "type": "string"
                },
                "maxPrice": {
                  "anyOf": [
                    {
                      "type": "integer"
                    },
                    {
                      "type": "string"
                    }
                  ],
                  "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances",
                  "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$",
                  "x-kubernetes-int-or-string": true
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "sshPublicKey": {
              "description": "SSHPublicKey is the SSH public key string, base64-encoded to add to a Virtual Machine. Linux only.\nRefer to documentation on how to set up SSH access on Windows instances.",
              "type": "string"
            },
            "subnetName": {
              "description": "Deprecated: SubnetName should be set in the networkInterfaces field.",
              "type": "string"
            },
            "terminateNotificationTimeout": {
              "description": "TerminateNotificationTimeout enables or disables VMSS scheduled events termination notification with specified timeout\nallowed values are between 5 and 15 (mins)",
              "type": "integer"
            },
            "vmExtensions": {
              "description": "VMExtensions specifies a list of extensions to be added to the scale set.",
              "items": {
                "description": "VMExtension specifies the parameters for a custom VM extension.",
                "properties": {
                  "name": {
                    "description": "Name is the name of the extension.",
                    "type": "string"
                  },
                  "protectedSettings": {
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "ProtectedSettings is a JSON formatted protected settings for the extension.",
                    "type": "object"
                  },
                  "publisher": {
                    "description": "Publisher is the name of the extension handler publisher.",
                    "type": "string"
                  },
                  "settings": {
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "Settings is a JSON formatted public settings for the extension.",
                    "type": "object"
                  },
                  "version": {
                    "description": "Version specifies the version of the script handler.",
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "publisher",
                  "version"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "vmSize": {
              "description": "VMSize is the size of the Virtual Machine to build.\nSee https://learn.microsoft.com/rest/api/compute/virtualmachines/createorupdate#virtualmachinesizetypes",
              "type": "string"
            }
          },
          "required": [
            "osDisk",
            "vmSize"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "userAssignedIdentities": {
          "description": "UserAssignedIdentities is a list of standalone Azure identities provided by the user\nThe lifecycle of a user-assigned identity is managed separately from the lifecycle of\nthe AzureMachinePool.\nSee https://learn.microsoft.com/azure/active-directory/managed-identities-azure-resources/how-to-manage-ua-identity-cli",
          "items": {
            "description": "UserAssignedIdentity defines the user-assigned identities provided\nby the user to be assigned to Azure resources.",
            "properties": {
              "providerID": {
                "description": "ProviderID is the identification ID of the user-assigned Identity, the format of an identity is:\n'azure:///subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'",
                "type": "string"
              }
            },
            "required": [
              "providerID"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "zoneBalance": {
          "description": "ZoneBalane dictates whether to force strictly even Virtual Machine distribution cross x-zones in case there is zone outage.",
          "type": "boolean"
        }
      },
      "required": [
        "location",
        "template"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "AzureMachinePoolStatus defines the observed state of AzureMachinePool.",
      "properties": {
        "conditions": {
          "description": "Conditions defines current service state of the AzureMachinePool.",
          "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"
        },
        "failureMessage": {
          "description": "FailureMessage will be set in the event that there is a terminal problem\nreconciling the MachinePool and will contain a more verbose string suitable\nfor logging and human consumption.\n\n\nThis field should not be set for transitive errors that a controller\nfaces that are expected to be fixed automatically over\ntime (like service outages), but instead indicate that something is\nfundamentally wrong with the MachinePool's spec or the configuration of\nthe controller, and that manual intervention is required. Examples\nof terminal errors would be invalid combinations of settings in the\nspec, values that are unsupported by the controller, or the\nresponsible controller itself being critically misconfigured.\n\n\nAny transient errors that occur during the reconciliation of MachinePools\ncan be added as events to the MachinePool object and/or logged in the\ncontroller's output.",
          "type": "string"
        },
        "failureReason": {
          "description": "FailureReason will be set in the event that there is a terminal problem\nreconciling the MachinePool and will contain a succinct value suitable\nfor machine interpretation.\n\n\nThis field should not be set for transitive errors that a controller\nfaces that are expected to be fixed automatically over\ntime (like service outages), but instead indicate that something is\nfundamentally wrong with the MachinePool's spec or the configuration of\nthe controller, and that manual intervention is required. Examples\nof terminal errors would be invalid combinations of settings in the\nspec, values that are unsupported by the controller, or the\nresponsible controller itself being critically misconfigured.\n\n\nAny transient errors that occur during the reconciliation of MachinePools\ncan be added as events to the MachinePool object and/or logged in the\ncontroller's output.",
          "type": "string"
        },
        "image": {
          "description": "Image is the current image used in the AzureMachinePool. When the spec image is nil, this image is populated\nwith the details of the defaulted Azure Marketplace \"capi\" offer.",
          "properties": {
            "computeGallery": {
              "description": "ComputeGallery specifies an image to use from the Azure Compute Gallery",
              "properties": {
                "gallery": {
                  "description": "Gallery specifies the name of the compute image gallery that contains the image",
                  "minLength": 1,
                  "type": "string"
                },
                "name": {
                  "description": "Name is the name of the image",
                  "minLength": 1,
                  "type": "string"
                },
                "plan": {
                  "description": "Plan contains plan information.",
                  "properties": {
                    "offer": {
                      "description": "Offer specifies the name of a group of related images created by the publisher.\nFor example, UbuntuServer, WindowsServer",
                      "minLength": 1,
                      "type": "string"
                    },
                    "publisher": {
                      "description": "Publisher is the name of the organization that created the image",
                      "minLength": 1,
                      "type": "string"
                    },
                    "sku": {
                      "description": "SKU specifies an instance of an offer, such as a major release of a distribution.\nFor example, 18.04-LTS, 2019-Datacenter",
                      "minLength": 1,
                      "type": "string"
                    }
                  },
                  "required": [
                    "offer",
                    "publisher",
                    "sku"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "resourceGroup": {
                  "description": "ResourceGroup specifies the resource group containing the private compute gallery.",
                  "type": "string"
                },
                "subscriptionID": {
                  "description": "SubscriptionID is the identifier of the subscription that contains the private compute gallery.",
                  "type": "string"
                },
                "version": {
                  "description": "Version specifies the version of the marketplace image. The allowed formats\nare Major.Minor.Build or 'latest'. Major, Minor, and Build are decimal numbers.\nSpecify 'latest' to use the latest version of an image available at deploy time.\nEven if you use 'latest', the VM image will not automatically update after deploy\ntime even if a new version becomes available.",
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "gallery",
                "name",
                "version"
              ],
              "type": "object",
              "additionalProperties": false
            },
            "id": {
              "description": "ID specifies an image to use by ID",
              "type": "string"
            },
            "marketplace": {
              "description": "Marketplace specifies an image to use from the Azure Marketplace",
              "properties": {
                "offer": {
                  "description": "Offer specifies the name of a group of related images created by the publisher.\nFor example, UbuntuServer, WindowsServer",
                  "minLength": 1,
                  "type": "string"
                },
                "publisher": {
                  "description": "Publisher is the name of the organization that created the image",
                  "minLength": 1,
                  "type": "string"
                },
                "sku": {
                  "description": "SKU specifies an instance of an offer, such as a major release of a distribution.\nFor example, 18.04-LTS, 2019-Datacenter",
                  "minLength": 1,
                  "type": "string"
                },
                "thirdPartyImage": {
                  "default": false,
                  "description": "ThirdPartyImage indicates the image is published by a third party publisher and a Plan\nwill be generated for it.",
                  "type": "boolean"
                },
                "version": {
                  "description": "Version specifies the version of an image sku. The allowed formats\nare Major.Minor.Build or 'latest'. Major, Minor, and Build are decimal numbers.\nSpecify 'latest' to use the latest version of an image available at deploy time.\nEven if you use 'latest', the VM image will not automatically update after deploy\ntime even if a new version becomes available.",
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "offer",
                "publisher",
                "sku",
                "version"
              ],
              "type": "object",
              "additionalProperties": false
            },
            "sharedGallery": {
              "description": "SharedGallery specifies an image to use from an Azure Shared Image Gallery\nDeprecated: use ComputeGallery instead.",
              "properties": {
                "gallery": {
                  "description": "Gallery specifies the name of the shared image gallery that contains the image",
                  "minLength": 1,
                  "type": "string"
                },
                "name": {
                  "description": "Name is the name of the image",
                  "minLength": 1,
                  "type": "string"
                },
                "offer": {
                  "description": "Offer specifies the name of a group of related images created by the publisher.\nFor example, UbuntuServer, WindowsServer\nThis value will be used to add a `Plan` in the API request when creating the VM/VMSS resource.\nThis is needed when the source image from which this SIG image was built requires the `Plan` to be used.",
                  "type": "string"
                },
                "publisher": {
                  "description": "Publisher is the name of the organization that created the image.\nThis value will be used to add a `Plan` in the API request when creating the VM/VMSS resource.\nThis is needed when the source image from which this SIG image was built requires the `Plan` to be used.",
                  "type": "string"
                },
                "resourceGroup": {
                  "description": "ResourceGroup specifies the resource group containing the shared image gallery",
                  "minLength": 1,
                  "type": "string"
                },
                "sku": {
                  "description": "SKU specifies an instance of an offer, such as a major release of a distribution.\nFor example, 18.04-LTS, 2019-Datacenter\nThis value will be used to add a `Plan` in the API request when creating the VM/VMSS resource.\nThis is needed when the source image from which this SIG image was built requires the `Plan` to be used.",
                  "type": "string"
                },
                "subscriptionID": {
                  "description": "SubscriptionID is the identifier of the subscription that contains the shared image gallery",
                  "minLength": 1,
                  "type": "string"
                },
                "version": {
                  "description": "Version specifies the version of the marketplace image. The allowed formats\nare Major.Minor.Build or 'latest'. Major, Minor, and Build are decimal numbers.\nSpecify 'latest' to use the latest version of an image available at deploy time.\nEven if you use 'latest', the VM image will not automatically update after deploy\ntime even if a new version becomes available.",
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "gallery",
                "name",
                "resourceGroup",
                "subscriptionID",
                "version"
              ],
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "infrastructureMachineKind": {
          "description": "InfrastructureMachineKind is the kind of the infrastructure resources behind MachinePool Machines.",
          "type": "string"
        },
        "instances": {
          "description": "Instances is the VM instance status for each VM in the VMSS",
          "items": {
            "description": "AzureMachinePoolInstanceStatus provides status information for each instance in the VMSS.",
            "properties": {
              "instanceID": {
                "description": "InstanceID is the identification of the Machine Instance within the VMSS",
                "type": "string"
              },
              "instanceName": {
                "description": "InstanceName is the name of the Machine Instance within the VMSS",
                "type": "string"
              },
              "latestModelApplied": {
                "description": "LatestModelApplied indicates the instance is running the most up-to-date VMSS model. A VMSS model describes\nthe image version the VM is running. If the instance is not running the latest model, it means the instance\nmay not be running the version of Kubernetes the Machine Pool has specified and needs to be updated.",
                "type": "boolean"
              },
              "providerID": {
                "description": "ProviderID is the provider identification of the VMSS Instance",
                "type": "string"
              },
              "provisioningState": {
                "description": "ProvisioningState is the provisioning state of the Azure virtual machine instance.",
                "type": "string"
              },
              "version": {
                "description": "Version defines the Kubernetes version for the VM Instance",
                "type": "string"
              }
            },
            "required": [
              "latestModelApplied"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "longRunningOperationStates": {
          "description": "LongRunningOperationStates saves the state 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"
        },
        "provisioningState": {
          "description": "ProvisioningState is the provisioning state of the Azure virtual machine.",
          "type": "string"
        },
        "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"
        },
        "version": {
          "description": "Version is the Kubernetes version for the current VMSS model",
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
