{
  "description": "AzureMachinePoolMachine is the Schema for the azuremachinepoolmachines 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": "AzureMachinePoolMachineSpec defines the desired state of AzureMachinePoolMachine.",
      "properties": {
        "instanceID": {
          "description": "InstanceID is the identification of the Machine Instance within the VMSS",
          "type": "string"
        },
        "providerID": {
          "description": "ProviderID is the identification ID of the Virtual Machine Scale Set",
          "type": "string"
        }
      },
      "required": [
        "providerID"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "AzureMachinePoolMachineStatus defines the observed state of AzureMachinePoolMachine.",
      "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\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 machine and will contain a succinct value suitable\nfor machine interpretation.\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"
        },
        "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"
        },
        "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"
        },
        "nodeRef": {
          "description": "NodeRef will point to the corresponding Node if it exists.",
          "properties": {
            "apiVersion": {
              "description": "API version of the referent.",
              "type": "string"
            },
            "fieldPath": {
              "description": "If referring to a piece of an object instead of an entire object, this string\nshould contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].\nFor example, if the object reference is to a container within a pod, this would take on a value like:\n\"spec.containers{name}\" (where \"name\" refers to the name of the container that triggered\nthe event) or if no container name is specified \"spec.containers[2]\" (container with\nindex 2 in this pod). This syntax is chosen only to have some well-defined way of\nreferencing a part of an object.\nTODO: this design is not final and this field is subject to change in the future.",
              "type": "string"
            },
            "kind": {
              "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
              "type": "string"
            },
            "name": {
              "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
              "type": "string"
            },
            "namespace": {
              "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/",
              "type": "string"
            },
            "resourceVersion": {
              "description": "Specific resourceVersion to which this reference is made, if any.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency",
              "type": "string"
            },
            "uid": {
              "description": "UID of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids",
              "type": "string"
            }
          },
          "type": "object",
          "x-kubernetes-map-type": "atomic",
          "additionalProperties": false
        },
        "provisioningState": {
          "description": "ProvisioningState is the provisioning state of the Azure virtual machine instance.",
          "type": "string"
        },
        "ready": {
          "description": "Ready is true when the provider resource is ready.",
          "type": "boolean"
        },
        "version": {
          "description": "Version defines the Kubernetes version for the VM Instance",
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
