apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.15.0
    service.beta.openshift.io/inject-cabundle: "true"
  creationTimestamp: null
  labels:
    cluster.x-k8s.io/provider: cluster-api
    clusterctl.cluster.x-k8s.io: ""
  name: clusterclasses.cluster.x-k8s.io
spec:
  group: cluster.x-k8s.io
  names:
    categories:
    - cluster-api
    kind: ClusterClass
    listKind: ClusterClassList
    plural: clusterclasses
    shortNames:
    - cc
    singular: clusterclass
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: Time duration since creation of ClusterClass
      jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    deprecated: true
    name: v1alpha4
    schema:
      openAPIV3Schema:
        description: |-
          ClusterClass is a template which can be used to create managed topologies.


          Deprecated: This type will be removed in one of the next releases.
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More 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.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: ClusterClassSpec describes the desired state of the ClusterClass.
            properties:
              controlPlane:
                description: |-
                  ControlPlane is a reference to a local struct that holds the details
                  for provisioning the Control Plane for the Cluster.
                properties:
                  machineInfrastructure:
                    description: |-
                      MachineTemplate defines the metadata and infrastructure information
                      for control plane machines.


                      This field is supported if and only if the control plane provider template
                      referenced above is Machine based and supports setting replicas.
                    properties:
                      ref:
                        description: |-
                          Ref is a required reference to a custom resource
                          offered by a provider.
                        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
                              should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                              For example, if the object reference is to a container within a pod, this would take on a value like:
                              "spec.containers{name}" (where "name" refers to the name of the container that triggered
                              the event) or if no container name is specified "spec.containers[2]" (container with
                              index 2 in this pod). This syntax is chosen only to have some well-defined way of
                              referencing a part of an object.
                              TODO: this design is not final and this field is subject to change in the future.
                            type: string
                          kind:
                            description: |-
                              Kind of the referent.
                              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                            type: string
                          name:
                            description: |-
                              Name of the referent.
                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                            type: string
                          namespace:
                            description: |-
                              Namespace of the referent.
                              More 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.
                              More 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.
                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                            type: string
                        type: object
                        x-kubernetes-map-type: atomic
                    required:
                    - ref
                    type: object
                  metadata:
                    description: |-
                      Metadata is the metadata applied to the machines of the ControlPlane.
                      At runtime this metadata is merged with the corresponding metadata from the topology.


                      This field is supported if and only if the control plane provider template
                      referenced is Machine based.
                    properties:
                      annotations:
                        additionalProperties:
                          type: string
                        description: |-
                          Annotations is an unstructured key value map stored with a resource that may be
                          set by external tools to store and retrieve arbitrary metadata. They are not
                          queryable and should be preserved when modifying objects.
                          More info: http://kubernetes.io/docs/user-guide/annotations
                        type: object
                      labels:
                        additionalProperties:
                          type: string
                        description: |-
                          Map of string keys and values that can be used to organize and categorize
                          (scope and select) objects. May match selectors of replication controllers
                          and services.
                          More info: http://kubernetes.io/docs/user-guide/labels
                        type: object
                    type: object
                  ref:
                    description: |-
                      Ref is a required reference to a custom resource
                      offered by a provider.
                    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
                          should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                          For example, if the object reference is to a container within a pod, this would take on a value like:
                          "spec.containers{name}" (where "name" refers to the name of the container that triggered
                          the event) or if no container name is specified "spec.containers[2]" (container with
                          index 2 in this pod). This syntax is chosen only to have some well-defined way of
                          referencing a part of an object.
                          TODO: this design is not final and this field is subject to change in the future.
                        type: string
                      kind:
                        description: |-
                          Kind of the referent.
                          More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                        type: string
                      name:
                        description: |-
                          Name of the referent.
                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                        type: string
                      namespace:
                        description: |-
                          Namespace of the referent.
                          More 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.
                          More 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.
                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                        type: string
                    type: object
                    x-kubernetes-map-type: atomic
                required:
                - ref
                type: object
              infrastructure:
                description: |-
                  Infrastructure is a reference to a provider-specific template that holds
                  the details for provisioning infrastructure specific cluster
                  for the underlying provider.
                  The underlying provider is responsible for the implementation
                  of the template to an infrastructure cluster.
                properties:
                  ref:
                    description: |-
                      Ref is a required reference to a custom resource
                      offered by a provider.
                    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
                          should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                          For example, if the object reference is to a container within a pod, this would take on a value like:
                          "spec.containers{name}" (where "name" refers to the name of the container that triggered
                          the event) or if no container name is specified "spec.containers[2]" (container with
                          index 2 in this pod). This syntax is chosen only to have some well-defined way of
                          referencing a part of an object.
                          TODO: this design is not final and this field is subject to change in the future.
                        type: string
                      kind:
                        description: |-
                          Kind of the referent.
                          More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                        type: string
                      name:
                        description: |-
                          Name of the referent.
                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                        type: string
                      namespace:
                        description: |-
                          Namespace of the referent.
                          More 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.
                          More 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.
                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                        type: string
                    type: object
                    x-kubernetes-map-type: atomic
                required:
                - ref
                type: object
              workers:
                description: |-
                  Workers describes the worker nodes for the cluster.
                  It is a collection of node types which can be used to create
                  the worker nodes of the cluster.
                properties:
                  machineDeployments:
                    description: |-
                      MachineDeployments is a list of machine deployment classes that can be used to create
                      a set of worker nodes.
                    items:
                      description: |-
                        MachineDeploymentClass serves as a template to define a set of worker nodes of the cluster
                        provisioned using the `ClusterClass`.
                      properties:
                        class:
                          description: |-
                            Class denotes a type of worker node present in the cluster,
                            this name MUST be unique within a ClusterClass and can be referenced
                            in the Cluster to create a managed MachineDeployment.
                          type: string
                        template:
                          description: |-
                            Template is a local struct containing a collection of templates for creation of
                            MachineDeployment objects representing a set of worker nodes.
                          properties:
                            bootstrap:
                              description: |-
                                Bootstrap contains the bootstrap template reference to be used
                                for the creation of worker Machines.
                              properties:
                                ref:
                                  description: |-
                                    Ref is a required reference to a custom resource
                                    offered by a provider.
                                  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
                                        should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                                        For example, if the object reference is to a container within a pod, this would take on a value like:
                                        "spec.containers{name}" (where "name" refers to the name of the container that triggered
                                        the event) or if no container name is specified "spec.containers[2]" (container with
                                        index 2 in this pod). This syntax is chosen only to have some well-defined way of
                                        referencing a part of an object.
                                        TODO: this design is not final and this field is subject to change in the future.
                                      type: string
                                    kind:
                                      description: |-
                                        Kind of the referent.
                                        More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                                      type: string
                                    name:
                                      description: |-
                                        Name of the referent.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                    namespace:
                                      description: |-
                                        Namespace of the referent.
                                        More 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.
                                        More 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.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                                      type: string
                                  type: object
                                  x-kubernetes-map-type: atomic
                              required:
                              - ref
                              type: object
                            infrastructure:
                              description: |-
                                Infrastructure contains the infrastructure template reference to be used
                                for the creation of worker Machines.
                              properties:
                                ref:
                                  description: |-
                                    Ref is a required reference to a custom resource
                                    offered by a provider.
                                  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
                                        should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                                        For example, if the object reference is to a container within a pod, this would take on a value like:
                                        "spec.containers{name}" (where "name" refers to the name of the container that triggered
                                        the event) or if no container name is specified "spec.containers[2]" (container with
                                        index 2 in this pod). This syntax is chosen only to have some well-defined way of
                                        referencing a part of an object.
                                        TODO: this design is not final and this field is subject to change in the future.
                                      type: string
                                    kind:
                                      description: |-
                                        Kind of the referent.
                                        More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                                      type: string
                                    name:
                                      description: |-
                                        Name of the referent.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                    namespace:
                                      description: |-
                                        Namespace of the referent.
                                        More 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.
                                        More 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.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                                      type: string
                                  type: object
                                  x-kubernetes-map-type: atomic
                              required:
                              - ref
                              type: object
                            metadata:
                              description: |-
                                Metadata is the metadata applied to the machines of the MachineDeployment.
                                At runtime this metadata is merged with the corresponding metadata from the topology.
                              properties:
                                annotations:
                                  additionalProperties:
                                    type: string
                                  description: |-
                                    Annotations is an unstructured key value map stored with a resource that may be
                                    set by external tools to store and retrieve arbitrary metadata. They are not
                                    queryable and should be preserved when modifying objects.
                                    More info: http://kubernetes.io/docs/user-guide/annotations
                                  type: object
                                labels:
                                  additionalProperties:
                                    type: string
                                  description: |-
                                    Map of string keys and values that can be used to organize and categorize
                                    (scope and select) objects. May match selectors of replication controllers
                                    and services.
                                    More info: http://kubernetes.io/docs/user-guide/labels
                                  type: object
                              type: object
                          required:
                          - bootstrap
                          - infrastructure
                          type: object
                      required:
                      - class
                      - template
                      type: object
                    type: array
                type: object
            type: object
        type: object
    served: false
    storage: false
    subresources: {}
  - additionalPrinterColumns:
    - description: Time duration since creation of ClusterClass
      jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1beta1
    schema:
      openAPIV3Schema:
        description: ClusterClass is a template which can be used to create managed
          topologies.
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More 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.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: ClusterClassSpec describes the desired state of the ClusterClass.
            properties:
              controlPlane:
                description: |-
                  ControlPlane is a reference to a local struct that holds the details
                  for provisioning the Control Plane for the Cluster.
                properties:
                  machineHealthCheck:
                    description: |-
                      MachineHealthCheck defines a MachineHealthCheck for this ControlPlaneClass.
                      This field is supported if and only if the ControlPlane provider template
                      referenced above is Machine based and supports setting replicas.
                    properties:
                      maxUnhealthy:
                        anyOf:
                        - type: integer
                        - type: string
                        description: |-
                          Any further remediation is only allowed if at most "MaxUnhealthy" machines selected by
                          "selector" are not healthy.
                        x-kubernetes-int-or-string: true
                      nodeStartupTimeout:
                        description: |-
                          NodeStartupTimeout allows to set the maximum time for MachineHealthCheck
                          to consider a Machine unhealthy if a corresponding Node isn't associated
                          through a `Spec.ProviderID` field.


                          The duration set in this field is compared to the greatest of:
                          - Cluster's infrastructure ready condition timestamp (if and when available)
                          - Control Plane's initialized condition timestamp (if and when available)
                          - Machine's infrastructure ready condition timestamp (if and when available)
                          - Machine's metadata creation timestamp


                          Defaults to 10 minutes.
                          If you wish to disable this feature, set the value explicitly to 0.
                        type: string
                      remediationTemplate:
                        description: |-
                          RemediationTemplate is a reference to a remediation template
                          provided by an infrastructure provider.


                          This field is completely optional, when filled, the MachineHealthCheck controller
                          creates a new object from the template referenced and hands off remediation of the machine to
                          a controller that lives outside of Cluster API.
                        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
                              should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                              For example, if the object reference is to a container within a pod, this would take on a value like:
                              "spec.containers{name}" (where "name" refers to the name of the container that triggered
                              the event) or if no container name is specified "spec.containers[2]" (container with
                              index 2 in this pod). This syntax is chosen only to have some well-defined way of
                              referencing a part of an object.
                              TODO: this design is not final and this field is subject to change in the future.
                            type: string
                          kind:
                            description: |-
                              Kind of the referent.
                              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                            type: string
                          name:
                            description: |-
                              Name of the referent.
                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                            type: string
                          namespace:
                            description: |-
                              Namespace of the referent.
                              More 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.
                              More 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.
                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                            type: string
                        type: object
                        x-kubernetes-map-type: atomic
                      unhealthyConditions:
                        description: |-
                          UnhealthyConditions contains a list of the conditions that determine
                          whether a node is considered unhealthy. The conditions are combined in a
                          logical OR, i.e. if any of the conditions is met, the node is unhealthy.
                        items:
                          description: |-
                            UnhealthyCondition represents a Node condition type and value with a timeout
                            specified as a duration.  When the named condition has been in the given
                            status for at least the timeout value, a node is considered unhealthy.
                          properties:
                            status:
                              minLength: 1
                              type: string
                            timeout:
                              type: string
                            type:
                              minLength: 1
                              type: string
                          required:
                          - status
                          - timeout
                          - type
                          type: object
                        type: array
                      unhealthyRange:
                        description: |-
                          Any further remediation is only allowed if the number of machines selected by "selector" as not healthy
                          is within the range of "UnhealthyRange". Takes precedence over MaxUnhealthy.
                          Eg. "[3-5]" - This means that remediation will be allowed only when:
                          (a) there are at least 3 unhealthy machines (and)
                          (b) there are at most 5 unhealthy machines
                        pattern: ^\[[0-9]+-[0-9]+\]$
                        type: string
                    type: object
                  machineInfrastructure:
                    description: |-
                      MachineInfrastructure defines the metadata and infrastructure information
                      for control plane machines.


                      This field is supported if and only if the control plane provider template
                      referenced above is Machine based and supports setting replicas.
                    properties:
                      ref:
                        description: |-
                          Ref is a required reference to a custom resource
                          offered by a provider.
                        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
                              should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                              For example, if the object reference is to a container within a pod, this would take on a value like:
                              "spec.containers{name}" (where "name" refers to the name of the container that triggered
                              the event) or if no container name is specified "spec.containers[2]" (container with
                              index 2 in this pod). This syntax is chosen only to have some well-defined way of
                              referencing a part of an object.
                              TODO: this design is not final and this field is subject to change in the future.
                            type: string
                          kind:
                            description: |-
                              Kind of the referent.
                              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                            type: string
                          name:
                            description: |-
                              Name of the referent.
                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                            type: string
                          namespace:
                            description: |-
                              Namespace of the referent.
                              More 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.
                              More 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.
                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                            type: string
                        type: object
                        x-kubernetes-map-type: atomic
                    required:
                    - ref
                    type: object
                  metadata:
                    description: |-
                      Metadata is the metadata applied to the ControlPlane and the Machines of the ControlPlane
                      if the ControlPlaneTemplate referenced is machine based. If not, it is applied only to the
                      ControlPlane.
                      At runtime this metadata is merged with the corresponding metadata from the topology.


                      This field is supported if and only if the control plane provider template
                      referenced is Machine based.
                    properties:
                      annotations:
                        additionalProperties:
                          type: string
                        description: |-
                          Annotations is an unstructured key value map stored with a resource that may be
                          set by external tools to store and retrieve arbitrary metadata. They are not
                          queryable and should be preserved when modifying objects.
                          More info: http://kubernetes.io/docs/user-guide/annotations
                        type: object
                      labels:
                        additionalProperties:
                          type: string
                        description: |-
                          Map of string keys and values that can be used to organize and categorize
                          (scope and select) objects. May match selectors of replication controllers
                          and services.
                          More info: http://kubernetes.io/docs/user-guide/labels
                        type: object
                    type: object
                  namingStrategy:
                    description: NamingStrategy allows changing the naming pattern
                      used when creating the control plane provider object.
                    properties:
                      template:
                        description: |-
                          Template defines the template to use for generating the name of the ControlPlane object.
                          If not defined, it will fallback to `{{ .cluster.name }}-{{ .random }}`.
                          If the templated string exceeds 63 characters, it will be trimmed to 58 characters and will
                          get concatenated with a random suffix of length 5.
                          The templating mechanism provides the following arguments:
                          * `.cluster.name`: The name of the cluster object.
                          * `.random`: A random alphanumeric string, without vowels, of length 5.
                        type: string
                    type: object
                  nodeDeletionTimeout:
                    description: |-
                      NodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine
                      hosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely.
                      Defaults to 10 seconds.
                      NOTE: This value can be overridden while defining a Cluster.Topology.
                    type: string
                  nodeDrainTimeout:
                    description: |-
                      NodeDrainTimeout is the total amount of time that the controller will spend on draining a node.
                      The default value is 0, meaning that the node can be drained without any time limitations.
                      NOTE: NodeDrainTimeout is different from `kubectl drain --timeout`
                      NOTE: This value can be overridden while defining a Cluster.Topology.
                    type: string
                  nodeVolumeDetachTimeout:
                    description: |-
                      NodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes
                      to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations.
                      NOTE: This value can be overridden while defining a Cluster.Topology.
                    type: string
                  ref:
                    description: |-
                      Ref is a required reference to a custom resource
                      offered by a provider.
                    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
                          should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                          For example, if the object reference is to a container within a pod, this would take on a value like:
                          "spec.containers{name}" (where "name" refers to the name of the container that triggered
                          the event) or if no container name is specified "spec.containers[2]" (container with
                          index 2 in this pod). This syntax is chosen only to have some well-defined way of
                          referencing a part of an object.
                          TODO: this design is not final and this field is subject to change in the future.
                        type: string
                      kind:
                        description: |-
                          Kind of the referent.
                          More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                        type: string
                      name:
                        description: |-
                          Name of the referent.
                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                        type: string
                      namespace:
                        description: |-
                          Namespace of the referent.
                          More 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.
                          More 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.
                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                        type: string
                    type: object
                    x-kubernetes-map-type: atomic
                required:
                - ref
                type: object
              infrastructure:
                description: |-
                  Infrastructure is a reference to a provider-specific template that holds
                  the details for provisioning infrastructure specific cluster
                  for the underlying provider.
                  The underlying provider is responsible for the implementation
                  of the template to an infrastructure cluster.
                properties:
                  ref:
                    description: |-
                      Ref is a required reference to a custom resource
                      offered by a provider.
                    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
                          should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                          For example, if the object reference is to a container within a pod, this would take on a value like:
                          "spec.containers{name}" (where "name" refers to the name of the container that triggered
                          the event) or if no container name is specified "spec.containers[2]" (container with
                          index 2 in this pod). This syntax is chosen only to have some well-defined way of
                          referencing a part of an object.
                          TODO: this design is not final and this field is subject to change in the future.
                        type: string
                      kind:
                        description: |-
                          Kind of the referent.
                          More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                        type: string
                      name:
                        description: |-
                          Name of the referent.
                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                        type: string
                      namespace:
                        description: |-
                          Namespace of the referent.
                          More 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.
                          More 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.
                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                        type: string
                    type: object
                    x-kubernetes-map-type: atomic
                required:
                - ref
                type: object
              patches:
                description: |-
                  Patches defines the patches which are applied to customize
                  referenced templates of a ClusterClass.
                  Note: Patches will be applied in the order of the array.
                items:
                  description: ClusterClassPatch defines a patch which is applied
                    to customize the referenced templates.
                  properties:
                    definitions:
                      description: |-
                        Definitions define inline patches.
                        Note: Patches will be applied in the order of the array.
                        Note: Exactly one of Definitions or External must be set.
                      items:
                        description: PatchDefinition defines a patch which is applied
                          to customize the referenced templates.
                        properties:
                          jsonPatches:
                            description: |-
                              JSONPatches defines the patches which should be applied on the templates
                              matching the selector.
                              Note: Patches will be applied in the order of the array.
                            items:
                              description: JSONPatch defines a JSON patch.
                              properties:
                                op:
                                  description: |-
                                    Op defines the operation of the patch.
                                    Note: Only `add`, `replace` and `remove` are supported.
                                  type: string
                                path:
                                  description: |-
                                    Path defines the path of the patch.
                                    Note: Only the spec of a template can be patched, thus the path has to start with /spec/.
                                    Note: For now the only allowed array modifications are `append` and `prepend`, i.e.:
                                    * for op: `add`: only index 0 (prepend) and - (append) are allowed
                                    * for op: `replace` or `remove`: no indexes are allowed
                                  type: string
                                value:
                                  description: |-
                                    Value defines the value of the patch.
                                    Note: Either Value or ValueFrom is required for add and replace
                                    operations. Only one of them is allowed to be set at the same time.
                                    Note: We have to use apiextensionsv1.JSON instead of our JSON type,
                                    because controller-tools has a hard-coded schema for apiextensionsv1.JSON
                                    which cannot be produced by another type (unset type field).
                                    Ref: https://github.com/kubernetes-sigs/controller-tools/blob/d0e03a142d0ecdd5491593e941ee1d6b5d91dba6/pkg/crd/known_types.go#L106-L111
                                  x-kubernetes-preserve-unknown-fields: true
                                valueFrom:
                                  description: |-
                                    ValueFrom defines the value of the patch.
                                    Note: Either Value or ValueFrom is required for add and replace
                                    operations. Only one of them is allowed to be set at the same time.
                                  properties:
                                    template:
                                      description: |-
                                        Template is the Go template to be used to calculate the value.
                                        A template can reference variables defined in .spec.variables and builtin variables.
                                        Note: The template must evaluate to a valid YAML or JSON value.
                                      type: string
                                    variable:
                                      description: |-
                                        Variable is the variable to be used as value.
                                        Variable can be one of the variables defined in .spec.variables or a builtin variable.
                                      type: string
                                  type: object
                              required:
                              - op
                              - path
                              type: object
                            type: array
                          selector:
                            description: Selector defines on which templates the patch
                              should be applied.
                            properties:
                              apiVersion:
                                description: APIVersion filters templates by apiVersion.
                                type: string
                              kind:
                                description: Kind filters templates by kind.
                                type: string
                              matchResources:
                                description: MatchResources selects templates based
                                  on where they are referenced.
                                properties:
                                  controlPlane:
                                    description: |-
                                      ControlPlane selects templates referenced in .spec.ControlPlane.
                                      Note: this will match the controlPlane and also the controlPlane
                                      machineInfrastructure (depending on the kind and apiVersion).
                                    type: boolean
                                  infrastructureCluster:
                                    description: InfrastructureCluster selects templates
                                      referenced in .spec.infrastructure.
                                    type: boolean
                                  machineDeploymentClass:
                                    description: |-
                                      MachineDeploymentClass selects templates referenced in specific MachineDeploymentClasses in
                                      .spec.workers.machineDeployments.
                                    properties:
                                      names:
                                        description: Names selects templates by class
                                          names.
                                        items:
                                          type: string
                                        type: array
                                    type: object
                                  machinePoolClass:
                                    description: |-
                                      MachinePoolClass selects templates referenced in specific MachinePoolClasses in
                                      .spec.workers.machinePools.
                                    properties:
                                      names:
                                        description: Names selects templates by class
                                          names.
                                        items:
                                          type: string
                                        type: array
                                    type: object
                                type: object
                            required:
                            - apiVersion
                            - kind
                            - matchResources
                            type: object
                        required:
                        - jsonPatches
                        - selector
                        type: object
                      type: array
                    description:
                      description: Description is a human-readable description of
                        this patch.
                      type: string
                    enabledIf:
                      description: |-
                        EnabledIf is a Go template to be used to calculate if a patch should be enabled.
                        It can reference variables defined in .spec.variables and builtin variables.
                        The patch will be enabled if the template evaluates to `true`, otherwise it will
                        be disabled.
                        If EnabledIf is not set, the patch will be enabled per default.
                      type: string
                    external:
                      description: |-
                        External defines an external patch.
                        Note: Exactly one of Definitions or External must be set.
                      properties:
                        discoverVariablesExtension:
                          description: DiscoverVariablesExtension references an extension
                            which is called to discover variables.
                          type: string
                        generateExtension:
                          description: GenerateExtension references an extension which
                            is called to generate patches.
                          type: string
                        settings:
                          additionalProperties:
                            type: string
                          description: |-
                            Settings defines key value pairs to be passed to the extensions.
                            Values defined here take precedence over the values defined in the
                            corresponding ExtensionConfig.
                          type: object
                        validateExtension:
                          description: ValidateExtension references an extension which
                            is called to validate the topology.
                          type: string
                      type: object
                    name:
                      description: Name of the patch.
                      type: string
                  required:
                  - name
                  type: object
                type: array
              variables:
                description: |-
                  Variables defines the variables which can be configured
                  in the Cluster topology and are then used in patches.
                items:
                  description: |-
                    ClusterClassVariable defines a variable which can
                    be configured in the Cluster topology and used in patches.
                  properties:
                    metadata:
                      description: |-
                        Metadata is the metadata of a variable.
                        It can be used to add additional data for higher level tools to
                        a ClusterClassVariable.


                        Deprecated: This field is deprecated and is going to be removed in the next apiVersion. Please use XMetadata in JSONSchemaProps instead.
                      properties:
                        annotations:
                          additionalProperties:
                            type: string
                          description: |-
                            Annotations is an unstructured key value map that can be used to store and
                            retrieve arbitrary metadata.
                            They are not queryable.
                          type: object
                        labels:
                          additionalProperties:
                            type: string
                          description: |-
                            Map of string keys and values that can be used to organize and categorize
                            (scope and select) variables.
                          type: object
                      type: object
                    name:
                      description: Name of the variable.
                      type: string
                    required:
                      description: |-
                        Required specifies if the variable is required.
                        Note: this applies to the variable as a whole and thus the
                        top-level object defined in the schema. If nested fields are
                        required, this will be specified inside the schema.
                      type: boolean
                    schema:
                      description: Schema defines the schema of the variable.
                      properties:
                        openAPIV3Schema:
                          description: |-
                            OpenAPIV3Schema defines the schema of a variable via OpenAPI v3
                            schema. The schema is a subset of the schema used in
                            Kubernetes CRDs.
                          properties:
                            additionalProperties:
                              description: |-
                                AdditionalProperties specifies the schema of values in a map (keys are always strings).
                                NOTE: Can only be set if type is object.
                                NOTE: AdditionalProperties is mutually exclusive with Properties.
                                NOTE: This field uses PreserveUnknownFields and Schemaless,
                                because recursive validation is not possible.
                              x-kubernetes-preserve-unknown-fields: true
                            default:
                              description: |-
                                Default is the default value of the variable.
                                NOTE: Can be set for all types.
                              x-kubernetes-preserve-unknown-fields: true
                            description:
                              description: Description is a human-readable description
                                of this variable.
                              type: string
                            enum:
                              description: |-
                                Enum is the list of valid values of the variable.
                                NOTE: Can be set for all types.
                              items:
                                x-kubernetes-preserve-unknown-fields: true
                              type: array
                            example:
                              description: Example is an example for this variable.
                              x-kubernetes-preserve-unknown-fields: true
                            exclusiveMaximum:
                              description: |-
                                ExclusiveMaximum specifies if the Maximum is exclusive.
                                NOTE: Can only be set if type is integer or number.
                              type: boolean
                            exclusiveMinimum:
                              description: |-
                                ExclusiveMinimum specifies if the Minimum is exclusive.
                                NOTE: Can only be set if type is integer or number.
                              type: boolean
                            format:
                              description: |-
                                Format is an OpenAPI v3 format string. Unknown formats are ignored.
                                For a list of supported formats please see: (of the k8s.io/apiextensions-apiserver version we're currently using)
                                https://github.com/kubernetes/apiextensions-apiserver/blob/master/pkg/apiserver/validation/formats.go
                                NOTE: Can only be set if type is string.
                              type: string
                            items:
                              description: |-
                                Items specifies fields of an array.
                                NOTE: Can only be set if type is array.
                                NOTE: This field uses PreserveUnknownFields and Schemaless,
                                because recursive validation is not possible.
                              x-kubernetes-preserve-unknown-fields: true
                            maxItems:
                              description: |-
                                MaxItems is the max length of an array variable.
                                NOTE: Can only be set if type is array.
                              format: int64
                              type: integer
                            maxLength:
                              description: |-
                                MaxLength is the max length of a string variable.
                                NOTE: Can only be set if type is string.
                              format: int64
                              type: integer
                            maxProperties:
                              description: |-
                                MaxProperties is the maximum amount of entries in a map or properties in an object.
                                NOTE: Can only be set if type is object.
                              format: int64
                              type: integer
                            maximum:
                              description: |-
                                Maximum is the maximum of an integer or number variable.
                                If ExclusiveMaximum is false, the variable is valid if it is lower than, or equal to, the value of Maximum.
                                If ExclusiveMaximum is true, the variable is valid if it is strictly lower than the value of Maximum.
                                NOTE: Can only be set if type is integer or number.
                              format: int64
                              type: integer
                            minItems:
                              description: |-
                                MinItems is the min length of an array variable.
                                NOTE: Can only be set if type is array.
                              format: int64
                              type: integer
                            minLength:
                              description: |-
                                MinLength is the min length of a string variable.
                                NOTE: Can only be set if type is string.
                              format: int64
                              type: integer
                            minProperties:
                              description: |-
                                MinProperties is the minimum amount of entries in a map or properties in an object.
                                NOTE: Can only be set if type is object.
                              format: int64
                              type: integer
                            minimum:
                              description: |-
                                Minimum is the minimum of an integer or number variable.
                                If ExclusiveMinimum is false, the variable is valid if it is greater than, or equal to, the value of Minimum.
                                If ExclusiveMinimum is true, the variable is valid if it is strictly greater than the value of Minimum.
                                NOTE: Can only be set if type is integer or number.
                              format: int64
                              type: integer
                            pattern:
                              description: |-
                                Pattern is the regex which a string variable must match.
                                NOTE: Can only be set if type is string.
                              type: string
                            properties:
                              description: |-
                                Properties specifies fields of an object.
                                NOTE: Can only be set if type is object.
                                NOTE: Properties is mutually exclusive with AdditionalProperties.
                                NOTE: This field uses PreserveUnknownFields and Schemaless,
                                because recursive validation is not possible.
                              x-kubernetes-preserve-unknown-fields: true
                            required:
                              description: |-
                                Required specifies which fields of an object are required.
                                NOTE: Can only be set if type is object.
                              items:
                                type: string
                              type: array
                            type:
                              description: |-
                                Type is the type of the variable.
                                Valid values are: object, array, string, integer, number or boolean.
                              type: string
                            uniqueItems:
                              description: |-
                                UniqueItems specifies if items in an array must be unique.
                                NOTE: Can only be set if type is array.
                              type: boolean
                            x-kubernetes-preserve-unknown-fields:
                              description: |-
                                XPreserveUnknownFields allows setting fields in a variable object
                                which are not defined in the variable schema. This affects fields recursively,
                                except if nested properties or additionalProperties are specified in the schema.
                              type: boolean
                            x-kubernetes-validations:
                              description: XValidations describes a list of validation
                                rules written in the CEL expression language.
                              items:
                                description: ValidationRule describes a validation
                                  rule written in the CEL expression language.
                                properties:
                                  fieldPath:
                                    description: |-
                                      FieldPath represents the field path returned when the validation fails.
                                      It must be a relative JSON path (i.e. with array notation) scoped to the location of this x-kubernetes-validations extension in the schema and refer to an existing field.
                                      e.g. when validation checks if a specific attribute `foo` under a map `testMap`, the fieldPath could be set to `.testMap.foo`
                                      If the validation checks two lists must have unique attributes, the fieldPath could be set to either of the list: e.g. `.testList`
                                      It does not support list numeric index.
                                      It supports child operation to refer to an existing field currently. Refer to [JSONPath support in Kubernetes](https://kubernetes.io/docs/reference/kubectl/jsonpath/) for more info.
                                      Numeric index of array is not supported.
                                      For field name which contains special characters, use `['specialName']` to refer the field name.
                                      e.g. for attribute `foo.34$` appears in a list `testList`, the fieldPath could be set to `.testList['foo.34$']`
                                    type: string
                                  message:
                                    description: |-
                                      Message represents the message displayed when validation fails. The message is required if the Rule contains
                                      line breaks. The message must not contain line breaks.
                                      If unset, the message is "failed rule: {Rule}".
                                      e.g. "must be a URL with the host matching spec.host"
                                    type: string
                                  messageExpression:
                                    description: |-
                                      MessageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails.
                                      Since messageExpression is used as a failure message, it must evaluate to a string.
                                      If both message and messageExpression are present on a rule, then messageExpression will be used if validation
                                      fails. If messageExpression results in a runtime error, the validation failure message is produced
                                      as if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string
                                      that contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset.
                                      messageExpression has access to all the same variables as the rule; the only difference is the return type.
                                      Example:
                                      "x must be less than max ("+string(self.max)+")"
                                    type: string
                                  reason:
                                    default: FieldValueInvalid
                                    description: |-
                                      Reason provides a machine-readable validation failure reason that is returned to the caller when a request fails this validation rule.
                                      The currently supported reasons are: "FieldValueInvalid", "FieldValueForbidden", "FieldValueRequired", "FieldValueDuplicate".
                                      If not set, default to use "FieldValueInvalid".
                                      All future added reasons must be accepted by clients when reading this value and unknown reasons should be treated as FieldValueInvalid.
                                    enum:
                                    - FieldValueInvalid
                                    - FieldValueForbidden
                                    - FieldValueRequired
                                    - FieldValueDuplicate
                                    type: string
                                  rule:
                                    description: "Rule represents the expression which
                                      will be evaluated by CEL.\nref: https://github.com/google/cel-spec\nThe
                                      Rule is scoped to the location of the x-kubernetes-validations
                                      extension in the schema.\nThe `self` variable
                                      in the CEL expression is bound to the scoped
                                      value.\nIf the Rule is scoped to an object with
                                      properties, the accessible properties of the
                                      object are field selectable\nvia `self.field`
                                      and field presence can be checked via `has(self.field)`.\nIf
                                      the Rule is scoped to an object with additionalProperties
                                      (i.e. a map) the value of the map\nare accessible
                                      via `self[mapKey]`, map containment can be checked
                                      via `mapKey in self` and all entries of the
                                      map\nare accessible via CEL macros and functions
                                      such as `self.all(...)`.\nIf the Rule is scoped
                                      to an array, the elements of the array are accessible
                                      via `self[i]` and also by macros and\nfunctions.\nIf
                                      the Rule is scoped to a scalar, `self` is bound
                                      to the scalar value.\nExamples:\n- Rule scoped
                                      to a map of objects: {\"rule\": \"self.components['Widget'].priority
                                      < 10\"}\n- Rule scoped to a list of integers:
                                      {\"rule\": \"self.values.all(value, value >=
                                      0 && value < 100)\"}\n- Rule scoped to a string
                                      value: {\"rule\": \"self.startsWith('kube')\"}\n\n\nUnknown
                                      data preserved in custom resources via x-kubernetes-preserve-unknown-fields
                                      is not accessible in CEL\nexpressions. This
                                      includes:\n- Unknown field values that are preserved
                                      by object schemas with x-kubernetes-preserve-unknown-fields.\n-
                                      Object properties where the property schema
                                      is of an \"unknown type\". An \"unknown type\"
                                      is recursively defined as:\n  - A schema with
                                      no type and x-kubernetes-preserve-unknown-fields
                                      set to true\n  - An array where the items schema
                                      is of an \"unknown type\"\n  - An object where
                                      the additionalProperties schema is of an \"unknown
                                      type\"\n\n\nOnly property names of the form
                                      `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible.\nAccessible
                                      property names are escaped according to the
                                      following rules when accessed in the expression:\n-
                                      '__' escapes to '__underscores__'\n- '.' escapes
                                      to '__dot__'\n- '-' escapes to '__dash__'\n-
                                      '/' escapes to '__slash__'\n- Property names
                                      that exactly match a CEL RESERVED keyword escape
                                      to '__{keyword}__'. The keywords are:\n\t  \"true\",
                                      \"false\", \"null\", \"in\", \"as\", \"break\",
                                      \"const\", \"continue\", \"else\", \"for\",
                                      \"function\", \"if\",\n\t  \"import\", \"let\",
                                      \"loop\", \"package\", \"namespace\", \"return\".\nExamples:\n
                                      \ - Rule accessing a property named \"namespace\":
                                      {\"rule\": \"self.__namespace__ > 0\"}\n  -
                                      Rule accessing a property named \"x-prop\":
                                      {\"rule\": \"self.x__dash__prop > 0\"}\n  -
                                      Rule accessing a property named \"redact__d\":
                                      {\"rule\": \"self.redact__underscores__d > 0\"}\n\n\nIf
                                      `rule` makes use of the `oldSelf` variable it
                                      is implicitly a\n`transition rule`.\n\n\nBy
                                      default, the `oldSelf` variable is the same
                                      type as `self`.\n\n\nTransition rules by default
                                      are applied only on UPDATE requests and are\nskipped
                                      if an old value could not be found."
                                    type: string
                                required:
                                - rule
                                type: object
                              type: array
                              x-kubernetes-list-map-keys:
                              - rule
                              x-kubernetes-list-type: map
                            x-metadata:
                              description: |-
                                XMetadata is the metadata of a variable or a nested field within a variable.
                                It can be used to add additional data for higher level tools.
                              properties:
                                annotations:
                                  additionalProperties:
                                    type: string
                                  description: |-
                                    Annotations is an unstructured key value map that can be used to store and
                                    retrieve arbitrary metadata.
                                    They are not queryable.
                                  type: object
                                labels:
                                  additionalProperties:
                                    type: string
                                  description: |-
                                    Map of string keys and values that can be used to organize and categorize
                                    (scope and select) variables.
                                  type: object
                              type: object
                          required:
                          - type
                          type: object
                      required:
                      - openAPIV3Schema
                      type: object
                  required:
                  - name
                  - required
                  - schema
                  type: object
                type: array
              workers:
                description: |-
                  Workers describes the worker nodes for the cluster.
                  It is a collection of node types which can be used to create
                  the worker nodes of the cluster.
                properties:
                  machineDeployments:
                    description: |-
                      MachineDeployments is a list of machine deployment classes that can be used to create
                      a set of worker nodes.
                    items:
                      description: |-
                        MachineDeploymentClass serves as a template to define a set of worker nodes of the cluster
                        provisioned using the `ClusterClass`.
                      properties:
                        class:
                          description: |-
                            Class denotes a type of worker node present in the cluster,
                            this name MUST be unique within a ClusterClass and can be referenced
                            in the Cluster to create a managed MachineDeployment.
                          type: string
                        failureDomain:
                          description: |-
                            FailureDomain is the failure domain the machines will be created in.
                            Must match a key in the FailureDomains map stored on the cluster object.
                            NOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass.
                          type: string
                        machineHealthCheck:
                          description: MachineHealthCheck defines a MachineHealthCheck
                            for this MachineDeploymentClass.
                          properties:
                            maxUnhealthy:
                              anyOf:
                              - type: integer
                              - type: string
                              description: |-
                                Any further remediation is only allowed if at most "MaxUnhealthy" machines selected by
                                "selector" are not healthy.
                              x-kubernetes-int-or-string: true
                            nodeStartupTimeout:
                              description: |-
                                NodeStartupTimeout allows to set the maximum time for MachineHealthCheck
                                to consider a Machine unhealthy if a corresponding Node isn't associated
                                through a `Spec.ProviderID` field.


                                The duration set in this field is compared to the greatest of:
                                - Cluster's infrastructure ready condition timestamp (if and when available)
                                - Control Plane's initialized condition timestamp (if and when available)
                                - Machine's infrastructure ready condition timestamp (if and when available)
                                - Machine's metadata creation timestamp


                                Defaults to 10 minutes.
                                If you wish to disable this feature, set the value explicitly to 0.
                              type: string
                            remediationTemplate:
                              description: |-
                                RemediationTemplate is a reference to a remediation template
                                provided by an infrastructure provider.


                                This field is completely optional, when filled, the MachineHealthCheck controller
                                creates a new object from the template referenced and hands off remediation of the machine to
                                a controller that lives outside of Cluster API.
                              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
                                    should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                                    For example, if the object reference is to a container within a pod, this would take on a value like:
                                    "spec.containers{name}" (where "name" refers to the name of the container that triggered
                                    the event) or if no container name is specified "spec.containers[2]" (container with
                                    index 2 in this pod). This syntax is chosen only to have some well-defined way of
                                    referencing a part of an object.
                                    TODO: this design is not final and this field is subject to change in the future.
                                  type: string
                                kind:
                                  description: |-
                                    Kind of the referent.
                                    More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                                  type: string
                                name:
                                  description: |-
                                    Name of the referent.
                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  type: string
                                namespace:
                                  description: |-
                                    Namespace of the referent.
                                    More 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.
                                    More 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.
                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                                  type: string
                              type: object
                              x-kubernetes-map-type: atomic
                            unhealthyConditions:
                              description: |-
                                UnhealthyConditions contains a list of the conditions that determine
                                whether a node is considered unhealthy. The conditions are combined in a
                                logical OR, i.e. if any of the conditions is met, the node is unhealthy.
                              items:
                                description: |-
                                  UnhealthyCondition represents a Node condition type and value with a timeout
                                  specified as a duration.  When the named condition has been in the given
                                  status for at least the timeout value, a node is considered unhealthy.
                                properties:
                                  status:
                                    minLength: 1
                                    type: string
                                  timeout:
                                    type: string
                                  type:
                                    minLength: 1
                                    type: string
                                required:
                                - status
                                - timeout
                                - type
                                type: object
                              type: array
                            unhealthyRange:
                              description: |-
                                Any further remediation is only allowed if the number of machines selected by "selector" as not healthy
                                is within the range of "UnhealthyRange". Takes precedence over MaxUnhealthy.
                                Eg. "[3-5]" - This means that remediation will be allowed only when:
                                (a) there are at least 3 unhealthy machines (and)
                                (b) there are at most 5 unhealthy machines
                              pattern: ^\[[0-9]+-[0-9]+\]$
                              type: string
                          type: object
                        minReadySeconds:
                          description: |-
                            Minimum number of seconds for which a newly created machine should
                            be ready.
                            Defaults to 0 (machine will be considered available as soon as it
                            is ready)
                            NOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass.
                          format: int32
                          type: integer
                        namingStrategy:
                          description: NamingStrategy allows changing the naming pattern
                            used when creating the MachineDeployment.
                          properties:
                            template:
                              description: |-
                                Template defines the template to use for generating the name of the MachineDeployment object.
                                If not defined, it will fallback to `{{ .cluster.name }}-{{ .machineDeployment.topologyName }}-{{ .random }}`.
                                If the templated string exceeds 63 characters, it will be trimmed to 58 characters and will
                                get concatenated with a random suffix of length 5.
                                The templating mechanism provides the following arguments:
                                * `.cluster.name`: The name of the cluster object.
                                * `.random`: A random alphanumeric string, without vowels, of length 5.
                                * `.machineDeployment.topologyName`: The name of the MachineDeployment topology (Cluster.spec.topology.workers.machineDeployments[].name).
                              type: string
                          type: object
                        nodeDeletionTimeout:
                          description: |-
                            NodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine
                            hosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely.
                            Defaults to 10 seconds.
                            NOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass.
                          type: string
                        nodeDrainTimeout:
                          description: |-
                            NodeDrainTimeout is the total amount of time that the controller will spend on draining a node.
                            The default value is 0, meaning that the node can be drained without any time limitations.
                            NOTE: NodeDrainTimeout is different from `kubectl drain --timeout`
                            NOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass.
                          type: string
                        nodeVolumeDetachTimeout:
                          description: |-
                            NodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes
                            to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations.
                            NOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass.
                          type: string
                        strategy:
                          description: |-
                            The deployment strategy to use to replace existing machines with
                            new ones.
                            NOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass.
                          properties:
                            remediation:
                              description: |-
                                Remediation controls the strategy of remediating unhealthy machines
                                and how remediating operations should occur during the lifecycle of the dependant MachineSets.
                              properties:
                                maxInFlight:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  description: |-
                                    MaxInFlight determines how many in flight remediations should happen at the same time.


                                    Remediation only happens on the MachineSet with the most current revision, while
                                    older MachineSets (usually present during rollout operations) aren't allowed to remediate.


                                    Note: In general (independent of remediations), unhealthy machines are always
                                    prioritized during scale down operations over healthy ones.


                                    MaxInFlight can be set to a fixed number or a percentage.
                                    Example: when this is set to 20%, the MachineSet controller deletes at most 20% of
                                    the desired replicas.


                                    If not set, remediation is limited to all machines (bounded by replicas)
                                    under the active MachineSet's management.
                                  x-kubernetes-int-or-string: true
                              type: object
                            rollingUpdate:
                              description: |-
                                Rolling update config params. Present only if
                                MachineDeploymentStrategyType = RollingUpdate.
                              properties:
                                deletePolicy:
                                  description: |-
                                    DeletePolicy defines the policy used by the MachineDeployment to identify nodes to delete when downscaling.
                                    Valid values are "Random, "Newest", "Oldest"
                                    When no value is supplied, the default DeletePolicy of MachineSet is used
                                  enum:
                                  - Random
                                  - Newest
                                  - Oldest
                                  type: string
                                maxSurge:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  description: |-
                                    The maximum number of machines that can be scheduled above the
                                    desired number of machines.
                                    Value can be an absolute number (ex: 5) or a percentage of
                                    desired machines (ex: 10%).
                                    This can not be 0 if MaxUnavailable is 0.
                                    Absolute number is calculated from percentage by rounding up.
                                    Defaults to 1.
                                    Example: when this is set to 30%, the new MachineSet can be scaled
                                    up immediately when the rolling update starts, such that the total
                                    number of old and new machines do not exceed 130% of desired
                                    machines. Once old machines have been killed, new MachineSet can
                                    be scaled up further, ensuring that total number of machines running
                                    at any time during the update is at most 130% of desired machines.
                                  x-kubernetes-int-or-string: true
                                maxUnavailable:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  description: |-
                                    The maximum number of machines that can be unavailable during the update.
                                    Value can be an absolute number (ex: 5) or a percentage of desired
                                    machines (ex: 10%).
                                    Absolute number is calculated from percentage by rounding down.
                                    This can not be 0 if MaxSurge is 0.
                                    Defaults to 0.
                                    Example: when this is set to 30%, the old MachineSet can be scaled
                                    down to 70% of desired machines immediately when the rolling update
                                    starts. Once new machines are ready, old MachineSet can be scaled
                                    down further, followed by scaling up the new MachineSet, ensuring
                                    that the total number of machines available at all times
                                    during the update is at least 70% of desired machines.
                                  x-kubernetes-int-or-string: true
                              type: object
                            type:
                              description: |-
                                Type of deployment. Allowed values are RollingUpdate and OnDelete.
                                The default is RollingUpdate.
                              enum:
                              - RollingUpdate
                              - OnDelete
                              type: string
                          type: object
                        template:
                          description: |-
                            Template is a local struct containing a collection of templates for creation of
                            MachineDeployment objects representing a set of worker nodes.
                          properties:
                            bootstrap:
                              description: |-
                                Bootstrap contains the bootstrap template reference to be used
                                for the creation of worker Machines.
                              properties:
                                ref:
                                  description: |-
                                    Ref is a required reference to a custom resource
                                    offered by a provider.
                                  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
                                        should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                                        For example, if the object reference is to a container within a pod, this would take on a value like:
                                        "spec.containers{name}" (where "name" refers to the name of the container that triggered
                                        the event) or if no container name is specified "spec.containers[2]" (container with
                                        index 2 in this pod). This syntax is chosen only to have some well-defined way of
                                        referencing a part of an object.
                                        TODO: this design is not final and this field is subject to change in the future.
                                      type: string
                                    kind:
                                      description: |-
                                        Kind of the referent.
                                        More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                                      type: string
                                    name:
                                      description: |-
                                        Name of the referent.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                    namespace:
                                      description: |-
                                        Namespace of the referent.
                                        More 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.
                                        More 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.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                                      type: string
                                  type: object
                                  x-kubernetes-map-type: atomic
                              required:
                              - ref
                              type: object
                            infrastructure:
                              description: |-
                                Infrastructure contains the infrastructure template reference to be used
                                for the creation of worker Machines.
                              properties:
                                ref:
                                  description: |-
                                    Ref is a required reference to a custom resource
                                    offered by a provider.
                                  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
                                        should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                                        For example, if the object reference is to a container within a pod, this would take on a value like:
                                        "spec.containers{name}" (where "name" refers to the name of the container that triggered
                                        the event) or if no container name is specified "spec.containers[2]" (container with
                                        index 2 in this pod). This syntax is chosen only to have some well-defined way of
                                        referencing a part of an object.
                                        TODO: this design is not final and this field is subject to change in the future.
                                      type: string
                                    kind:
                                      description: |-
                                        Kind of the referent.
                                        More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                                      type: string
                                    name:
                                      description: |-
                                        Name of the referent.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                    namespace:
                                      description: |-
                                        Namespace of the referent.
                                        More 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.
                                        More 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.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                                      type: string
                                  type: object
                                  x-kubernetes-map-type: atomic
                              required:
                              - ref
                              type: object
                            metadata:
                              description: |-
                                Metadata is the metadata applied to the MachineDeployment and the machines of the MachineDeployment.
                                At runtime this metadata is merged with the corresponding metadata from the topology.
                              properties:
                                annotations:
                                  additionalProperties:
                                    type: string
                                  description: |-
                                    Annotations is an unstructured key value map stored with a resource that may be
                                    set by external tools to store and retrieve arbitrary metadata. They are not
                                    queryable and should be preserved when modifying objects.
                                    More info: http://kubernetes.io/docs/user-guide/annotations
                                  type: object
                                labels:
                                  additionalProperties:
                                    type: string
                                  description: |-
                                    Map of string keys and values that can be used to organize and categorize
                                    (scope and select) objects. May match selectors of replication controllers
                                    and services.
                                    More info: http://kubernetes.io/docs/user-guide/labels
                                  type: object
                              type: object
                          required:
                          - bootstrap
                          - infrastructure
                          type: object
                      required:
                      - class
                      - template
                      type: object
                    type: array
                    x-kubernetes-list-map-keys:
                    - class
                    x-kubernetes-list-type: map
                  machinePools:
                    description: |-
                      MachinePools is a list of machine pool classes that can be used to create
                      a set of worker nodes.
                    items:
                      description: |-
                        MachinePoolClass serves as a template to define a pool of worker nodes of the cluster
                        provisioned using `ClusterClass`.
                      properties:
                        class:
                          description: |-
                            Class denotes a type of machine pool present in the cluster,
                            this name MUST be unique within a ClusterClass and can be referenced
                            in the Cluster to create a managed MachinePool.
                          type: string
                        failureDomains:
                          description: |-
                            FailureDomains is the list of failure domains the MachinePool should be attached to.
                            Must match a key in the FailureDomains map stored on the cluster object.
                            NOTE: This value can be overridden while defining a Cluster.Topology using this MachinePoolClass.
                          items:
                            type: string
                          type: array
                        minReadySeconds:
                          description: |-
                            Minimum number of seconds for which a newly created machine pool should
                            be ready.
                            Defaults to 0 (machine will be considered available as soon as it
                            is ready)
                            NOTE: This value can be overridden while defining a Cluster.Topology using this MachinePoolClass.
                          format: int32
                          type: integer
                        namingStrategy:
                          description: NamingStrategy allows changing the naming pattern
                            used when creating the MachinePool.
                          properties:
                            template:
                              description: |-
                                Template defines the template to use for generating the name of the MachinePool object.
                                If not defined, it will fallback to `{{ .cluster.name }}-{{ .machinePool.topologyName }}-{{ .random }}`.
                                If the templated string exceeds 63 characters, it will be trimmed to 58 characters and will
                                get concatenated with a random suffix of length 5.
                                The templating mechanism provides the following arguments:
                                * `.cluster.name`: The name of the cluster object.
                                * `.random`: A random alphanumeric string, without vowels, of length 5.
                                * `.machinePool.topologyName`: The name of the MachinePool topology (Cluster.spec.topology.workers.machinePools[].name).
                              type: string
                          type: object
                        nodeDeletionTimeout:
                          description: |-
                            NodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine
                            hosts after the Machine Pool is marked for deletion. A duration of 0 will retry deletion indefinitely.
                            Defaults to 10 seconds.
                            NOTE: This value can be overridden while defining a Cluster.Topology using this MachinePoolClass.
                          type: string
                        nodeDrainTimeout:
                          description: |-
                            NodeDrainTimeout is the total amount of time that the controller will spend on draining a node.
                            The default value is 0, meaning that the node can be drained without any time limitations.
                            NOTE: NodeDrainTimeout is different from `kubectl drain --timeout`
                            NOTE: This value can be overridden while defining a Cluster.Topology using this MachinePoolClass.
                          type: string
                        nodeVolumeDetachTimeout:
                          description: |-
                            NodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes
                            to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations.
                            NOTE: This value can be overridden while defining a Cluster.Topology using this MachinePoolClass.
                          type: string
                        template:
                          description: |-
                            Template is a local struct containing a collection of templates for creation of
                            MachinePools objects representing a pool of worker nodes.
                          properties:
                            bootstrap:
                              description: |-
                                Bootstrap contains the bootstrap template reference to be used
                                for the creation of the Machines in the MachinePool.
                              properties:
                                ref:
                                  description: |-
                                    Ref is a required reference to a custom resource
                                    offered by a provider.
                                  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
                                        should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                                        For example, if the object reference is to a container within a pod, this would take on a value like:
                                        "spec.containers{name}" (where "name" refers to the name of the container that triggered
                                        the event) or if no container name is specified "spec.containers[2]" (container with
                                        index 2 in this pod). This syntax is chosen only to have some well-defined way of
                                        referencing a part of an object.
                                        TODO: this design is not final and this field is subject to change in the future.
                                      type: string
                                    kind:
                                      description: |-
                                        Kind of the referent.
                                        More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                                      type: string
                                    name:
                                      description: |-
                                        Name of the referent.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                    namespace:
                                      description: |-
                                        Namespace of the referent.
                                        More 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.
                                        More 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.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                                      type: string
                                  type: object
                                  x-kubernetes-map-type: atomic
                              required:
                              - ref
                              type: object
                            infrastructure:
                              description: |-
                                Infrastructure contains the infrastructure template reference to be used
                                for the creation of the MachinePool.
                              properties:
                                ref:
                                  description: |-
                                    Ref is a required reference to a custom resource
                                    offered by a provider.
                                  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
                                        should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                                        For example, if the object reference is to a container within a pod, this would take on a value like:
                                        "spec.containers{name}" (where "name" refers to the name of the container that triggered
                                        the event) or if no container name is specified "spec.containers[2]" (container with
                                        index 2 in this pod). This syntax is chosen only to have some well-defined way of
                                        referencing a part of an object.
                                        TODO: this design is not final and this field is subject to change in the future.
                                      type: string
                                    kind:
                                      description: |-
                                        Kind of the referent.
                                        More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                                      type: string
                                    name:
                                      description: |-
                                        Name of the referent.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                    namespace:
                                      description: |-
                                        Namespace of the referent.
                                        More 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.
                                        More 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.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                                      type: string
                                  type: object
                                  x-kubernetes-map-type: atomic
                              required:
                              - ref
                              type: object
                            metadata:
                              description: |-
                                Metadata is the metadata applied to the MachinePool.
                                At runtime this metadata is merged with the corresponding metadata from the topology.
                              properties:
                                annotations:
                                  additionalProperties:
                                    type: string
                                  description: |-
                                    Annotations is an unstructured key value map stored with a resource that may be
                                    set by external tools to store and retrieve arbitrary metadata. They are not
                                    queryable and should be preserved when modifying objects.
                                    More info: http://kubernetes.io/docs/user-guide/annotations
                                  type: object
                                labels:
                                  additionalProperties:
                                    type: string
                                  description: |-
                                    Map of string keys and values that can be used to organize and categorize
                                    (scope and select) objects. May match selectors of replication controllers
                                    and services.
                                    More info: http://kubernetes.io/docs/user-guide/labels
                                  type: object
                              type: object
                          required:
                          - bootstrap
                          - infrastructure
                          type: object
                      required:
                      - class
                      - template
                      type: object
                    type: array
                    x-kubernetes-list-map-keys:
                    - class
                    x-kubernetes-list-type: map
                type: object
            type: object
          status:
            description: ClusterClassStatus defines the observed state of the ClusterClass.
            properties:
              conditions:
                description: Conditions defines current observed state of the ClusterClass.
                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.
                        This should be when the underlying condition changed. If that is not known, then using the time when
                        the API field changed is acceptable.
                      format: date-time
                      type: string
                    message:
                      description: |-
                        A human readable message indicating details about the transition.
                        This field may be empty.
                      type: string
                    reason:
                      description: |-
                        The reason for the condition's last transition in CamelCase.
                        The specific API may choose whether or not this field is considered a guaranteed API.
                        This field may not be empty.
                      type: string
                    severity:
                      description: |-
                        Severity provides an explicit classification of Reason code, so the users or machines can immediately
                        understand the current situation and act accordingly.
                        The 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.
                        Many .condition.type values are consistent across resources like Available, but because arbitrary conditions
                        can be useful (see .node.status.conditions), the ability to deconflict is important.
                      type: string
                  required:
                  - lastTransitionTime
                  - status
                  - type
                  type: object
                type: array
              observedGeneration:
                description: ObservedGeneration is the latest generation observed
                  by the controller.
                format: int64
                type: integer
              variables:
                description: Variables is a list of ClusterClassStatusVariable that
                  are defined for the ClusterClass.
                items:
                  description: ClusterClassStatusVariable defines a variable which
                    appears in the status of a ClusterClass.
                  properties:
                    definitions:
                      description: Definitions is a list of definitions for a variable.
                      items:
                        description: ClusterClassStatusVariableDefinition defines
                          a variable which appears in the status of a ClusterClass.
                        properties:
                          from:
                            description: |-
                              From specifies the origin of the variable definition.
                              This will be `inline` for variables defined in the ClusterClass or the name of a patch defined in the ClusterClass
                              for variables discovered from a DiscoverVariables runtime extensions.
                            type: string
                          metadata:
                            description: |-
                              Metadata is the metadata of a variable.
                              It can be used to add additional data for higher level tools to
                              a ClusterClassVariable.


                              Deprecated: This field is deprecated and is going to be removed in the next apiVersion.
                            properties:
                              annotations:
                                additionalProperties:
                                  type: string
                                description: |-
                                  Annotations is an unstructured key value map that can be used to store and
                                  retrieve arbitrary metadata.
                                  They are not queryable.
                                type: object
                              labels:
                                additionalProperties:
                                  type: string
                                description: |-
                                  Map of string keys and values that can be used to organize and categorize
                                  (scope and select) variables.
                                type: object
                            type: object
                          required:
                            description: |-
                              Required specifies if the variable is required.
                              Note: this applies to the variable as a whole and thus the
                              top-level object defined in the schema. If nested fields are
                              required, this will be specified inside the schema.
                            type: boolean
                          schema:
                            description: Schema defines the schema of the variable.
                            properties:
                              openAPIV3Schema:
                                description: |-
                                  OpenAPIV3Schema defines the schema of a variable via OpenAPI v3
                                  schema. The schema is a subset of the schema used in
                                  Kubernetes CRDs.
                                properties:
                                  additionalProperties:
                                    description: |-
                                      AdditionalProperties specifies the schema of values in a map (keys are always strings).
                                      NOTE: Can only be set if type is object.
                                      NOTE: AdditionalProperties is mutually exclusive with Properties.
                                      NOTE: This field uses PreserveUnknownFields and Schemaless,
                                      because recursive validation is not possible.
                                    x-kubernetes-preserve-unknown-fields: true
                                  default:
                                    description: |-
                                      Default is the default value of the variable.
                                      NOTE: Can be set for all types.
                                    x-kubernetes-preserve-unknown-fields: true
                                  description:
                                    description: Description is a human-readable description
                                      of this variable.
                                    type: string
                                  enum:
                                    description: |-
                                      Enum is the list of valid values of the variable.
                                      NOTE: Can be set for all types.
                                    items:
                                      x-kubernetes-preserve-unknown-fields: true
                                    type: array
                                  example:
                                    description: Example is an example for this variable.
                                    x-kubernetes-preserve-unknown-fields: true
                                  exclusiveMaximum:
                                    description: |-
                                      ExclusiveMaximum specifies if the Maximum is exclusive.
                                      NOTE: Can only be set if type is integer or number.
                                    type: boolean
                                  exclusiveMinimum:
                                    description: |-
                                      ExclusiveMinimum specifies if the Minimum is exclusive.
                                      NOTE: Can only be set if type is integer or number.
                                    type: boolean
                                  format:
                                    description: |-
                                      Format is an OpenAPI v3 format string. Unknown formats are ignored.
                                      For a list of supported formats please see: (of the k8s.io/apiextensions-apiserver version we're currently using)
                                      https://github.com/kubernetes/apiextensions-apiserver/blob/master/pkg/apiserver/validation/formats.go
                                      NOTE: Can only be set if type is string.
                                    type: string
                                  items:
                                    description: |-
                                      Items specifies fields of an array.
                                      NOTE: Can only be set if type is array.
                                      NOTE: This field uses PreserveUnknownFields and Schemaless,
                                      because recursive validation is not possible.
                                    x-kubernetes-preserve-unknown-fields: true
                                  maxItems:
                                    description: |-
                                      MaxItems is the max length of an array variable.
                                      NOTE: Can only be set if type is array.
                                    format: int64
                                    type: integer
                                  maxLength:
                                    description: |-
                                      MaxLength is the max length of a string variable.
                                      NOTE: Can only be set if type is string.
                                    format: int64
                                    type: integer
                                  maxProperties:
                                    description: |-
                                      MaxProperties is the maximum amount of entries in a map or properties in an object.
                                      NOTE: Can only be set if type is object.
                                    format: int64
                                    type: integer
                                  maximum:
                                    description: |-
                                      Maximum is the maximum of an integer or number variable.
                                      If ExclusiveMaximum is false, the variable is valid if it is lower than, or equal to, the value of Maximum.
                                      If ExclusiveMaximum is true, the variable is valid if it is strictly lower than the value of Maximum.
                                      NOTE: Can only be set if type is integer or number.
                                    format: int64
                                    type: integer
                                  minItems:
                                    description: |-
                                      MinItems is the min length of an array variable.
                                      NOTE: Can only be set if type is array.
                                    format: int64
                                    type: integer
                                  minLength:
                                    description: |-
                                      MinLength is the min length of a string variable.
                                      NOTE: Can only be set if type is string.
                                    format: int64
                                    type: integer
                                  minProperties:
                                    description: |-
                                      MinProperties is the minimum amount of entries in a map or properties in an object.
                                      NOTE: Can only be set if type is object.
                                    format: int64
                                    type: integer
                                  minimum:
                                    description: |-
                                      Minimum is the minimum of an integer or number variable.
                                      If ExclusiveMinimum is false, the variable is valid if it is greater than, or equal to, the value of Minimum.
                                      If ExclusiveMinimum is true, the variable is valid if it is strictly greater than the value of Minimum.
                                      NOTE: Can only be set if type is integer or number.
                                    format: int64
                                    type: integer
                                  pattern:
                                    description: |-
                                      Pattern is the regex which a string variable must match.
                                      NOTE: Can only be set if type is string.
                                    type: string
                                  properties:
                                    description: |-
                                      Properties specifies fields of an object.
                                      NOTE: Can only be set if type is object.
                                      NOTE: Properties is mutually exclusive with AdditionalProperties.
                                      NOTE: This field uses PreserveUnknownFields and Schemaless,
                                      because recursive validation is not possible.
                                    x-kubernetes-preserve-unknown-fields: true
                                  required:
                                    description: |-
                                      Required specifies which fields of an object are required.
                                      NOTE: Can only be set if type is object.
                                    items:
                                      type: string
                                    type: array
                                  type:
                                    description: |-
                                      Type is the type of the variable.
                                      Valid values are: object, array, string, integer, number or boolean.
                                    type: string
                                  uniqueItems:
                                    description: |-
                                      UniqueItems specifies if items in an array must be unique.
                                      NOTE: Can only be set if type is array.
                                    type: boolean
                                  x-kubernetes-preserve-unknown-fields:
                                    description: |-
                                      XPreserveUnknownFields allows setting fields in a variable object
                                      which are not defined in the variable schema. This affects fields recursively,
                                      except if nested properties or additionalProperties are specified in the schema.
                                    type: boolean
                                  x-kubernetes-validations:
                                    description: XValidations describes a list of
                                      validation rules written in the CEL expression
                                      language.
                                    items:
                                      description: ValidationRule describes a validation
                                        rule written in the CEL expression language.
                                      properties:
                                        fieldPath:
                                          description: |-
                                            FieldPath represents the field path returned when the validation fails.
                                            It must be a relative JSON path (i.e. with array notation) scoped to the location of this x-kubernetes-validations extension in the schema and refer to an existing field.
                                            e.g. when validation checks if a specific attribute `foo` under a map `testMap`, the fieldPath could be set to `.testMap.foo`
                                            If the validation checks two lists must have unique attributes, the fieldPath could be set to either of the list: e.g. `.testList`
                                            It does not support list numeric index.
                                            It supports child operation to refer to an existing field currently. Refer to [JSONPath support in Kubernetes](https://kubernetes.io/docs/reference/kubectl/jsonpath/) for more info.
                                            Numeric index of array is not supported.
                                            For field name which contains special characters, use `['specialName']` to refer the field name.
                                            e.g. for attribute `foo.34$` appears in a list `testList`, the fieldPath could be set to `.testList['foo.34$']`
                                          type: string
                                        message:
                                          description: |-
                                            Message represents the message displayed when validation fails. The message is required if the Rule contains
                                            line breaks. The message must not contain line breaks.
                                            If unset, the message is "failed rule: {Rule}".
                                            e.g. "must be a URL with the host matching spec.host"
                                          type: string
                                        messageExpression:
                                          description: |-
                                            MessageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails.
                                            Since messageExpression is used as a failure message, it must evaluate to a string.
                                            If both message and messageExpression are present on a rule, then messageExpression will be used if validation
                                            fails. If messageExpression results in a runtime error, the validation failure message is produced
                                            as if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string
                                            that contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset.
                                            messageExpression has access to all the same variables as the rule; the only difference is the return type.
                                            Example:
                                            "x must be less than max ("+string(self.max)+")"
                                          type: string
                                        reason:
                                          default: FieldValueInvalid
                                          description: |-
                                            Reason provides a machine-readable validation failure reason that is returned to the caller when a request fails this validation rule.
                                            The currently supported reasons are: "FieldValueInvalid", "FieldValueForbidden", "FieldValueRequired", "FieldValueDuplicate".
                                            If not set, default to use "FieldValueInvalid".
                                            All future added reasons must be accepted by clients when reading this value and unknown reasons should be treated as FieldValueInvalid.
                                          enum:
                                          - FieldValueInvalid
                                          - FieldValueForbidden
                                          - FieldValueRequired
                                          - FieldValueDuplicate
                                          type: string
                                        rule:
                                          description: "Rule represents the expression
                                            which will be evaluated by CEL.\nref:
                                            https://github.com/google/cel-spec\nThe
                                            Rule is scoped to the location of the
                                            x-kubernetes-validations extension in
                                            the schema.\nThe `self` variable in the
                                            CEL expression is bound to the scoped
                                            value.\nIf the Rule is scoped to an object
                                            with properties, the accessible properties
                                            of the object are field selectable\nvia
                                            `self.field` and field presence can be
                                            checked via `has(self.field)`.\nIf the
                                            Rule is scoped to an object with additionalProperties
                                            (i.e. a map) the value of the map\nare
                                            accessible via `self[mapKey]`, map containment
                                            can be checked via `mapKey in self` and
                                            all entries of the map\nare accessible
                                            via CEL macros and functions such as `self.all(...)`.\nIf
                                            the Rule is scoped to an array, the elements
                                            of the array are accessible via `self[i]`
                                            and also by macros and\nfunctions.\nIf
                                            the Rule is scoped to a scalar, `self`
                                            is bound to the scalar value.\nExamples:\n-
                                            Rule scoped to a map of objects: {\"rule\":
                                            \"self.components['Widget'].priority <
                                            10\"}\n- Rule scoped to a list of integers:
                                            {\"rule\": \"self.values.all(value, value
                                            >= 0 && value < 100)\"}\n- Rule scoped
                                            to a string value: {\"rule\": \"self.startsWith('kube')\"}\n\n\nUnknown
                                            data preserved in custom resources via
                                            x-kubernetes-preserve-unknown-fields is
                                            not accessible in CEL\nexpressions. This
                                            includes:\n- Unknown field values that
                                            are preserved by object schemas with x-kubernetes-preserve-unknown-fields.\n-
                                            Object properties where the property schema
                                            is of an \"unknown type\". An \"unknown
                                            type\" is recursively defined as:\n  -
                                            A schema with no type and x-kubernetes-preserve-unknown-fields
                                            set to true\n  - An array where the items
                                            schema is of an \"unknown type\"\n  -
                                            An object where the additionalProperties
                                            schema is of an \"unknown type\"\n\n\nOnly
                                            property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*`
                                            are accessible.\nAccessible property names
                                            are escaped according to the following
                                            rules when accessed in the expression:\n-
                                            '__' escapes to '__underscores__'\n- '.'
                                            escapes to '__dot__'\n- '-' escapes to
                                            '__dash__'\n- '/' escapes to '__slash__'\n-
                                            Property names that exactly match a CEL
                                            RESERVED keyword escape to '__{keyword}__'.
                                            The keywords are:\n\t  \"true\", \"false\",
                                            \"null\", \"in\", \"as\", \"break\", \"const\",
                                            \"continue\", \"else\", \"for\", \"function\",
                                            \"if\",\n\t  \"import\", \"let\", \"loop\",
                                            \"package\", \"namespace\", \"return\".\nExamples:\n
                                            \ - Rule accessing a property named \"namespace\":
                                            {\"rule\": \"self.__namespace__ > 0\"}\n
                                            \ - Rule accessing a property named \"x-prop\":
                                            {\"rule\": \"self.x__dash__prop > 0\"}\n
                                            \ - Rule accessing a property named \"redact__d\":
                                            {\"rule\": \"self.redact__underscores__d
                                            > 0\"}\n\n\nIf `rule` makes use of the
                                            `oldSelf` variable it is implicitly a\n`transition
                                            rule`.\n\n\nBy default, the `oldSelf`
                                            variable is the same type as `self`.\n\n\nTransition
                                            rules by default are applied only on UPDATE
                                            requests and are\nskipped if an old value
                                            could not be found."
                                          type: string
                                      required:
                                      - rule
                                      type: object
                                    type: array
                                    x-kubernetes-list-map-keys:
                                    - rule
                                    x-kubernetes-list-type: map
                                  x-metadata:
                                    description: |-
                                      XMetadata is the metadata of a variable or a nested field within a variable.
                                      It can be used to add additional data for higher level tools.
                                    properties:
                                      annotations:
                                        additionalProperties:
                                          type: string
                                        description: |-
                                          Annotations is an unstructured key value map that can be used to store and
                                          retrieve arbitrary metadata.
                                          They are not queryable.
                                        type: object
                                      labels:
                                        additionalProperties:
                                          type: string
                                        description: |-
                                          Map of string keys and values that can be used to organize and categorize
                                          (scope and select) variables.
                                        type: object
                                    type: object
                                required:
                                - type
                                type: object
                            required:
                            - openAPIV3Schema
                            type: object
                        required:
                        - from
                        - required
                        - schema
                        type: object
                      type: array
                    definitionsConflict:
                      description: DefinitionsConflict specifies whether or not there
                        are conflicting definitions for a single variable name.
                      type: boolean
                    name:
                      description: Name is the name of the variable.
                      type: string
                  required:
                  - definitions
                  - name
                  type: object
                type: array
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: null
  storedVersions: null
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.15.0
    service.beta.openshift.io/inject-cabundle: "true"
  creationTimestamp: null
  labels:
    cluster.x-k8s.io/provider: cluster-api
    clusterctl.cluster.x-k8s.io: ""
  name: clusters.cluster.x-k8s.io
spec:
  group: cluster.x-k8s.io
  names:
    categories:
    - cluster-api
    kind: Cluster
    listKind: ClusterList
    plural: clusters
    shortNames:
    - cl
    singular: cluster
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: Cluster status such as Pending/Provisioning/Provisioned/Deleting/Failed
      jsonPath: .status.phase
      name: Phase
      type: string
    deprecated: true
    name: v1alpha3
    schema:
      openAPIV3Schema:
        description: Cluster is the Schema for the clusters API.
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More 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.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: ClusterSpec defines the desired state of Cluster.
            properties:
              clusterNetwork:
                description: Cluster network configuration.
                properties:
                  apiServerPort:
                    description: |-
                      APIServerPort specifies the port the API Server should bind to.
                      Defaults to 6443.
                    format: int32
                    type: integer
                  pods:
                    description: The network ranges from which Pod networks are allocated.
                    properties:
                      cidrBlocks:
                        items:
                          type: string
                        type: array
                    required:
                    - cidrBlocks
                    type: object
                  serviceDomain:
                    description: Domain name for services.
                    type: string
                  services:
                    description: The network ranges from which service VIPs are allocated.
                    properties:
                      cidrBlocks:
                        items:
                          type: string
                        type: array
                    required:
                    - cidrBlocks
                    type: object
                type: object
              controlPlaneEndpoint:
                description: ControlPlaneEndpoint represents the endpoint used to
                  communicate with the control plane.
                properties:
                  host:
                    description: The hostname on which the API server is serving.
                    type: string
                  port:
                    description: The port on which the API server is serving.
                    format: int32
                    type: integer
                required:
                - host
                - port
                type: object
              controlPlaneRef:
                description: |-
                  ControlPlaneRef is an optional reference to a provider-specific resource that holds
                  the details for provisioning the Control Plane for a Cluster.
                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
                      should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                      For example, if the object reference is to a container within a pod, this would take on a value like:
                      "spec.containers{name}" (where "name" refers to the name of the container that triggered
                      the event) or if no container name is specified "spec.containers[2]" (container with
                      index 2 in this pod). This syntax is chosen only to have some well-defined way of
                      referencing a part of an object.
                      TODO: this design is not final and this field is subject to change in the future.
                    type: string
                  kind:
                    description: |-
                      Kind of the referent.
                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                    type: string
                  name:
                    description: |-
                      Name of the referent.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                    type: string
                  namespace:
                    description: |-
                      Namespace of the referent.
                      More 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.
                      More 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.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                    type: string
                type: object
                x-kubernetes-map-type: atomic
              infrastructureRef:
                description: |-
                  InfrastructureRef is a reference to a provider-specific resource that holds the details
                  for provisioning infrastructure for a cluster in said provider.
                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
                      should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                      For example, if the object reference is to a container within a pod, this would take on a value like:
                      "spec.containers{name}" (where "name" refers to the name of the container that triggered
                      the event) or if no container name is specified "spec.containers[2]" (container with
                      index 2 in this pod). This syntax is chosen only to have some well-defined way of
                      referencing a part of an object.
                      TODO: this design is not final and this field is subject to change in the future.
                    type: string
                  kind:
                    description: |-
                      Kind of the referent.
                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                    type: string
                  name:
                    description: |-
                      Name of the referent.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                    type: string
                  namespace:
                    description: |-
                      Namespace of the referent.
                      More 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.
                      More 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.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                    type: string
                type: object
                x-kubernetes-map-type: atomic
              paused:
                description: Paused can be used to prevent controllers from processing
                  the Cluster and all its associated objects.
                type: boolean
            type: object
          status:
            description: ClusterStatus defines the observed state of Cluster.
            properties:
              conditions:
                description: Conditions defines current service state of the cluster.
                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.
                        This should be when the underlying condition changed. If that is not known, then using the time when
                        the API field changed is acceptable.
                      format: date-time
                      type: string
                    message:
                      description: |-
                        A human readable message indicating details about the transition.
                        This field may be empty.
                      type: string
                    reason:
                      description: |-
                        The reason for the condition's last transition in CamelCase.
                        The specific API may choose whether or not this field is considered a guaranteed API.
                        This field may not be empty.
                      type: string
                    severity:
                      description: |-
                        Severity provides an explicit classification of Reason code, so the users or machines can immediately
                        understand the current situation and act accordingly.
                        The 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.
                        Many .condition.type values are consistent across resources like Available, but because arbitrary conditions
                        can be useful (see .node.status.conditions), the ability to deconflict is important.
                      type: string
                  required:
                  - status
                  - type
                  type: object
                type: array
              controlPlaneInitialized:
                description: ControlPlaneInitialized defines if the control plane
                  has been initialized.
                type: boolean
              controlPlaneReady:
                description: ControlPlaneReady defines if the control plane is ready.
                type: boolean
              failureDomains:
                additionalProperties:
                  description: |-
                    FailureDomainSpec is the Schema for Cluster API failure domains.
                    It allows controllers to understand how many failure domains a cluster can optionally span across.
                  properties:
                    attributes:
                      additionalProperties:
                        type: string
                      description: Attributes is a free form map of attributes an
                        infrastructure provider might use or require.
                      type: object
                    controlPlane:
                      description: ControlPlane determines if this failure domain
                        is suitable for use by control plane machines.
                      type: boolean
                  type: object
                description: FailureDomains is a slice of failure domain objects synced
                  from the infrastructure provider.
                type: object
              failureMessage:
                description: |-
                  FailureMessage indicates that there is a fatal problem reconciling the
                  state, and will be set to a descriptive error message.
                type: string
              failureReason:
                description: |-
                  FailureReason indicates that there is a fatal problem reconciling the
                  state, and will be set to a token value suitable for
                  programmatic interpretation.
                type: string
              infrastructureReady:
                description: InfrastructureReady is the state of the infrastructure
                  provider.
                type: boolean
              observedGeneration:
                description: ObservedGeneration is the latest generation observed
                  by the controller.
                format: int64
                type: integer
              phase:
                description: |-
                  Phase represents the current phase of cluster actuation.
                  E.g. Pending, Running, Terminating, Failed etc.
                type: string
            type: object
        type: object
    served: false
    storage: false
    subresources:
      status: {}
  - additionalPrinterColumns:
    - description: Time duration since creation of Cluster
      jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    - description: Cluster status such as Pending/Provisioning/Provisioned/Deleting/Failed
      jsonPath: .status.phase
      name: Phase
      type: string
    deprecated: true
    name: v1alpha4
    schema:
      openAPIV3Schema:
        description: |-
          Cluster is the Schema for the clusters API.


          Deprecated: This type will be removed in one of the next releases.
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More 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.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: ClusterSpec defines the desired state of Cluster.
            properties:
              clusterNetwork:
                description: Cluster network configuration.
                properties:
                  apiServerPort:
                    description: |-
                      APIServerPort specifies the port the API Server should bind to.
                      Defaults to 6443.
                    format: int32
                    type: integer
                  pods:
                    description: The network ranges from which Pod networks are allocated.
                    properties:
                      cidrBlocks:
                        items:
                          type: string
                        type: array
                    required:
                    - cidrBlocks
                    type: object
                  serviceDomain:
                    description: Domain name for services.
                    type: string
                  services:
                    description: The network ranges from which service VIPs are allocated.
                    properties:
                      cidrBlocks:
                        items:
                          type: string
                        type: array
                    required:
                    - cidrBlocks
                    type: object
                type: object
              controlPlaneEndpoint:
                description: ControlPlaneEndpoint represents the endpoint used to
                  communicate with the control plane.
                properties:
                  host:
                    description: The hostname on which the API server is serving.
                    type: string
                  port:
                    description: The port on which the API server is serving.
                    format: int32
                    type: integer
                required:
                - host
                - port
                type: object
              controlPlaneRef:
                description: |-
                  ControlPlaneRef is an optional reference to a provider-specific resource that holds
                  the details for provisioning the Control Plane for a Cluster.
                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
                      should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                      For example, if the object reference is to a container within a pod, this would take on a value like:
                      "spec.containers{name}" (where "name" refers to the name of the container that triggered
                      the event) or if no container name is specified "spec.containers[2]" (container with
                      index 2 in this pod). This syntax is chosen only to have some well-defined way of
                      referencing a part of an object.
                      TODO: this design is not final and this field is subject to change in the future.
                    type: string
                  kind:
                    description: |-
                      Kind of the referent.
                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                    type: string
                  name:
                    description: |-
                      Name of the referent.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                    type: string
                  namespace:
                    description: |-
                      Namespace of the referent.
                      More 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.
                      More 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.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                    type: string
                type: object
                x-kubernetes-map-type: atomic
              infrastructureRef:
                description: |-
                  InfrastructureRef is a reference to a provider-specific resource that holds the details
                  for provisioning infrastructure for a cluster in said provider.
                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
                      should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                      For example, if the object reference is to a container within a pod, this would take on a value like:
                      "spec.containers{name}" (where "name" refers to the name of the container that triggered
                      the event) or if no container name is specified "spec.containers[2]" (container with
                      index 2 in this pod). This syntax is chosen only to have some well-defined way of
                      referencing a part of an object.
                      TODO: this design is not final and this field is subject to change in the future.
                    type: string
                  kind:
                    description: |-
                      Kind of the referent.
                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                    type: string
                  name:
                    description: |-
                      Name of the referent.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                    type: string
                  namespace:
                    description: |-
                      Namespace of the referent.
                      More 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.
                      More 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.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                    type: string
                type: object
                x-kubernetes-map-type: atomic
              paused:
                description: Paused can be used to prevent controllers from processing
                  the Cluster and all its associated objects.
                type: boolean
              topology:
                description: |-
                  This encapsulates the topology for the cluster.
                  NOTE: It is required to enable the ClusterTopology
                  feature gate flag to activate managed topologies support;
                  this feature is highly experimental, and parts of it might still be not implemented.
                properties:
                  class:
                    description: The name of the ClusterClass object to create the
                      topology.
                    type: string
                  controlPlane:
                    description: ControlPlane describes the cluster control plane.
                    properties:
                      metadata:
                        description: |-
                          Metadata is the metadata applied to the machines of the ControlPlane.
                          At runtime this metadata is merged with the corresponding metadata from the ClusterClass.


                          This field is supported if and only if the control plane provider template
                          referenced in the ClusterClass is Machine based.
                        properties:
                          annotations:
                            additionalProperties:
                              type: string
                            description: |-
                              Annotations is an unstructured key value map stored with a resource that may be
                              set by external tools to store and retrieve arbitrary metadata. They are not
                              queryable and should be preserved when modifying objects.
                              More info: http://kubernetes.io/docs/user-guide/annotations
                            type: object
                          labels:
                            additionalProperties:
                              type: string
                            description: |-
                              Map of string keys and values that can be used to organize and categorize
                              (scope and select) objects. May match selectors of replication controllers
                              and services.
                              More info: http://kubernetes.io/docs/user-guide/labels
                            type: object
                        type: object
                      replicas:
                        description: |-
                          Replicas is the number of control plane nodes.
                          If the value is nil, the ControlPlane object is created without the number of Replicas
                          and it's assumed that the control plane controller does not implement support for this field.
                          When specified against a control plane provider that lacks support for this field, this value will be ignored.
                        format: int32
                        type: integer
                    type: object
                  rolloutAfter:
                    description: |-
                      RolloutAfter performs a rollout of the entire cluster one component at a time,
                      control plane first and then machine deployments.
                    format: date-time
                    type: string
                  version:
                    description: The Kubernetes version of the cluster.
                    type: string
                  workers:
                    description: |-
                      Workers encapsulates the different constructs that form the worker nodes
                      for the cluster.
                    properties:
                      machineDeployments:
                        description: MachineDeployments is a list of machine deployments
                          in the cluster.
                        items:
                          description: |-
                            MachineDeploymentTopology specifies the different parameters for a set of worker nodes in the topology.
                            This set of nodes is managed by a MachineDeployment object whose lifecycle is managed by the Cluster controller.
                          properties:
                            class:
                              description: |-
                                Class is the name of the MachineDeploymentClass used to create the set of worker nodes.
                                This should match one of the deployment classes defined in the ClusterClass object
                                mentioned in the `Cluster.Spec.Class` field.
                              type: string
                            metadata:
                              description: |-
                                Metadata is the metadata applied to the machines of the MachineDeployment.
                                At runtime this metadata is merged with the corresponding metadata from the ClusterClass.
                              properties:
                                annotations:
                                  additionalProperties:
                                    type: string
                                  description: |-
                                    Annotations is an unstructured key value map stored with a resource that may be
                                    set by external tools to store and retrieve arbitrary metadata. They are not
                                    queryable and should be preserved when modifying objects.
                                    More info: http://kubernetes.io/docs/user-guide/annotations
                                  type: object
                                labels:
                                  additionalProperties:
                                    type: string
                                  description: |-
                                    Map of string keys and values that can be used to organize and categorize
                                    (scope and select) objects. May match selectors of replication controllers
                                    and services.
                                    More info: http://kubernetes.io/docs/user-guide/labels
                                  type: object
                              type: object
                            name:
                              description: |-
                                Name is the unique identifier for this MachineDeploymentTopology.
                                The value is used with other unique identifiers to create a MachineDeployment's Name
                                (e.g. cluster's name, etc). In case the name is greater than the allowed maximum length,
                                the values are hashed together.
                              type: string
                            replicas:
                              description: |-
                                Replicas is the number of worker nodes belonging to this set.
                                If the value is nil, the MachineDeployment is created without the number of Replicas (defaulting to zero)
                                and it's assumed that an external entity (like cluster autoscaler) is responsible for the management
                                of this value.
                              format: int32
                              type: integer
                          required:
                          - class
                          - name
                          type: object
                        type: array
                    type: object
                required:
                - class
                - version
                type: object
            type: object
          status:
            description: ClusterStatus defines the observed state of Cluster.
            properties:
              conditions:
                description: Conditions defines current service state of the cluster.
                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.
                        This should be when the underlying condition changed. If that is not known, then using the time when
                        the API field changed is acceptable.
                      format: date-time
                      type: string
                    message:
                      description: |-
                        A human readable message indicating details about the transition.
                        This field may be empty.
                      type: string
                    reason:
                      description: |-
                        The reason for the condition's last transition in CamelCase.
                        The specific API may choose whether or not this field is considered a guaranteed API.
                        This field may not be empty.
                      type: string
                    severity:
                      description: |-
                        Severity provides an explicit classification of Reason code, so the users or machines can immediately
                        understand the current situation and act accordingly.
                        The 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.
                        Many .condition.type values are consistent across resources like Available, but because arbitrary conditions
                        can be useful (see .node.status.conditions), the ability to deconflict is important.
                      type: string
                  required:
                  - status
                  - type
                  type: object
                type: array
              controlPlaneReady:
                description: ControlPlaneReady defines if the control plane is ready.
                type: boolean
              failureDomains:
                additionalProperties:
                  description: |-
                    FailureDomainSpec is the Schema for Cluster API failure domains.
                    It allows controllers to understand how many failure domains a cluster can optionally span across.
                  properties:
                    attributes:
                      additionalProperties:
                        type: string
                      description: Attributes is a free form map of attributes an
                        infrastructure provider might use or require.
                      type: object
                    controlPlane:
                      description: ControlPlane determines if this failure domain
                        is suitable for use by control plane machines.
                      type: boolean
                  type: object
                description: FailureDomains is a slice of failure domain objects synced
                  from the infrastructure provider.
                type: object
              failureMessage:
                description: |-
                  FailureMessage indicates that there is a fatal problem reconciling the
                  state, and will be set to a descriptive error message.
                type: string
              failureReason:
                description: |-
                  FailureReason indicates that there is a fatal problem reconciling the
                  state, and will be set to a token value suitable for
                  programmatic interpretation.
                type: string
              infrastructureReady:
                description: InfrastructureReady is the state of the infrastructure
                  provider.
                type: boolean
              observedGeneration:
                description: ObservedGeneration is the latest generation observed
                  by the controller.
                format: int64
                type: integer
              phase:
                description: |-
                  Phase represents the current phase of cluster actuation.
                  E.g. Pending, Running, Terminating, Failed etc.
                type: string
            type: object
        type: object
    served: false
    storage: false
    subresources:
      status: {}
  - additionalPrinterColumns:
    - description: ClusterClass of this Cluster, empty if the Cluster is not using
        a ClusterClass
      jsonPath: .spec.topology.class
      name: ClusterClass
      type: string
    - description: Cluster status such as Pending/Provisioning/Provisioned/Deleting/Failed
      jsonPath: .status.phase
      name: Phase
      type: string
    - description: Time duration since creation of Cluster
      jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    - description: Kubernetes version associated with this Cluster
      jsonPath: .spec.topology.version
      name: Version
      type: string
    name: v1beta1
    schema:
      openAPIV3Schema:
        description: Cluster is the Schema for the clusters API.
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More 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.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: ClusterSpec defines the desired state of Cluster.
            properties:
              clusterNetwork:
                description: Cluster network configuration.
                properties:
                  apiServerPort:
                    description: |-
                      APIServerPort specifies the port the API Server should bind to.
                      Defaults to 6443.
                    format: int32
                    type: integer
                  pods:
                    description: The network ranges from which Pod networks are allocated.
                    properties:
                      cidrBlocks:
                        items:
                          type: string
                        type: array
                    required:
                    - cidrBlocks
                    type: object
                  serviceDomain:
                    description: Domain name for services.
                    type: string
                  services:
                    description: The network ranges from which service VIPs are allocated.
                    properties:
                      cidrBlocks:
                        items:
                          type: string
                        type: array
                    required:
                    - cidrBlocks
                    type: object
                type: object
              controlPlaneEndpoint:
                description: ControlPlaneEndpoint represents the endpoint used to
                  communicate with the control plane.
                properties:
                  host:
                    description: The hostname on which the API server is serving.
                    type: string
                  port:
                    description: The port on which the API server is serving.
                    format: int32
                    type: integer
                required:
                - host
                - port
                type: object
              controlPlaneRef:
                description: |-
                  ControlPlaneRef is an optional reference to a provider-specific resource that holds
                  the details for provisioning the Control Plane for a Cluster.
                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
                      should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                      For example, if the object reference is to a container within a pod, this would take on a value like:
                      "spec.containers{name}" (where "name" refers to the name of the container that triggered
                      the event) or if no container name is specified "spec.containers[2]" (container with
                      index 2 in this pod). This syntax is chosen only to have some well-defined way of
                      referencing a part of an object.
                      TODO: this design is not final and this field is subject to change in the future.
                    type: string
                  kind:
                    description: |-
                      Kind of the referent.
                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                    type: string
                  name:
                    description: |-
                      Name of the referent.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                    type: string
                  namespace:
                    description: |-
                      Namespace of the referent.
                      More 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.
                      More 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.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                    type: string
                type: object
                x-kubernetes-map-type: atomic
              infrastructureRef:
                description: |-
                  InfrastructureRef is a reference to a provider-specific resource that holds the details
                  for provisioning infrastructure for a cluster in said provider.
                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
                      should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                      For example, if the object reference is to a container within a pod, this would take on a value like:
                      "spec.containers{name}" (where "name" refers to the name of the container that triggered
                      the event) or if no container name is specified "spec.containers[2]" (container with
                      index 2 in this pod). This syntax is chosen only to have some well-defined way of
                      referencing a part of an object.
                      TODO: this design is not final and this field is subject to change in the future.
                    type: string
                  kind:
                    description: |-
                      Kind of the referent.
                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                    type: string
                  name:
                    description: |-
                      Name of the referent.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                    type: string
                  namespace:
                    description: |-
                      Namespace of the referent.
                      More 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.
                      More 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.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                    type: string
                type: object
                x-kubernetes-map-type: atomic
              paused:
                description: Paused can be used to prevent controllers from processing
                  the Cluster and all its associated objects.
                type: boolean
              topology:
                description: |-
                  This encapsulates the topology for the cluster.
                  NOTE: It is required to enable the ClusterTopology
                  feature gate flag to activate managed topologies support;
                  this feature is highly experimental, and parts of it might still be not implemented.
                properties:
                  class:
                    description: The name of the ClusterClass object to create the
                      topology.
                    type: string
                  controlPlane:
                    description: ControlPlane describes the cluster control plane.
                    properties:
                      machineHealthCheck:
                        description: |-
                          MachineHealthCheck allows to enable, disable and override
                          the MachineHealthCheck configuration in the ClusterClass for this control plane.
                        properties:
                          enable:
                            description: |-
                              Enable controls if a MachineHealthCheck should be created for the target machines.


                              If false: No MachineHealthCheck will be created.


                              If not set(default): A MachineHealthCheck will be created if it is defined here or
                               in the associated ClusterClass. If no MachineHealthCheck is defined then none will be created.


                              If true: A MachineHealthCheck is guaranteed to be created. Cluster validation will
                              block if `enable` is true and no MachineHealthCheck definition is available.
                            type: boolean
                          maxUnhealthy:
                            anyOf:
                            - type: integer
                            - type: string
                            description: |-
                              Any further remediation is only allowed if at most "MaxUnhealthy" machines selected by
                              "selector" are not healthy.
                            x-kubernetes-int-or-string: true
                          nodeStartupTimeout:
                            description: |-
                              NodeStartupTimeout allows to set the maximum time for MachineHealthCheck
                              to consider a Machine unhealthy if a corresponding Node isn't associated
                              through a `Spec.ProviderID` field.


                              The duration set in this field is compared to the greatest of:
                              - Cluster's infrastructure ready condition timestamp (if and when available)
                              - Control Plane's initialized condition timestamp (if and when available)
                              - Machine's infrastructure ready condition timestamp (if and when available)
                              - Machine's metadata creation timestamp


                              Defaults to 10 minutes.
                              If you wish to disable this feature, set the value explicitly to 0.
                            type: string
                          remediationTemplate:
                            description: |-
                              RemediationTemplate is a reference to a remediation template
                              provided by an infrastructure provider.


                              This field is completely optional, when filled, the MachineHealthCheck controller
                              creates a new object from the template referenced and hands off remediation of the machine to
                              a controller that lives outside of Cluster API.
                            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
                                  should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                                  For example, if the object reference is to a container within a pod, this would take on a value like:
                                  "spec.containers{name}" (where "name" refers to the name of the container that triggered
                                  the event) or if no container name is specified "spec.containers[2]" (container with
                                  index 2 in this pod). This syntax is chosen only to have some well-defined way of
                                  referencing a part of an object.
                                  TODO: this design is not final and this field is subject to change in the future.
                                type: string
                              kind:
                                description: |-
                                  Kind of the referent.
                                  More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                                type: string
                              name:
                                description: |-
                                  Name of the referent.
                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                type: string
                              namespace:
                                description: |-
                                  Namespace of the referent.
                                  More 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.
                                  More 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.
                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                                type: string
                            type: object
                            x-kubernetes-map-type: atomic
                          unhealthyConditions:
                            description: |-
                              UnhealthyConditions contains a list of the conditions that determine
                              whether a node is considered unhealthy. The conditions are combined in a
                              logical OR, i.e. if any of the conditions is met, the node is unhealthy.
                            items:
                              description: |-
                                UnhealthyCondition represents a Node condition type and value with a timeout
                                specified as a duration.  When the named condition has been in the given
                                status for at least the timeout value, a node is considered unhealthy.
                              properties:
                                status:
                                  minLength: 1
                                  type: string
                                timeout:
                                  type: string
                                type:
                                  minLength: 1
                                  type: string
                              required:
                              - status
                              - timeout
                              - type
                              type: object
                            type: array
                          unhealthyRange:
                            description: |-
                              Any further remediation is only allowed if the number of machines selected by "selector" as not healthy
                              is within the range of "UnhealthyRange". Takes precedence over MaxUnhealthy.
                              Eg. "[3-5]" - This means that remediation will be allowed only when:
                              (a) there are at least 3 unhealthy machines (and)
                              (b) there are at most 5 unhealthy machines
                            pattern: ^\[[0-9]+-[0-9]+\]$
                            type: string
                        type: object
                      metadata:
                        description: |-
                          Metadata is the metadata applied to the ControlPlane and the Machines of the ControlPlane
                          if the ControlPlaneTemplate referenced by the ClusterClass is machine based. If not, it
                          is applied only to the ControlPlane.
                          At runtime this metadata is merged with the corresponding metadata from the ClusterClass.
                        properties:
                          annotations:
                            additionalProperties:
                              type: string
                            description: |-
                              Annotations is an unstructured key value map stored with a resource that may be
                              set by external tools to store and retrieve arbitrary metadata. They are not
                              queryable and should be preserved when modifying objects.
                              More info: http://kubernetes.io/docs/user-guide/annotations
                            type: object
                          labels:
                            additionalProperties:
                              type: string
                            description: |-
                              Map of string keys and values that can be used to organize and categorize
                              (scope and select) objects. May match selectors of replication controllers
                              and services.
                              More info: http://kubernetes.io/docs/user-guide/labels
                            type: object
                        type: object
                      nodeDeletionTimeout:
                        description: |-
                          NodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine
                          hosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely.
                          Defaults to 10 seconds.
                        type: string
                      nodeDrainTimeout:
                        description: |-
                          NodeDrainTimeout is the total amount of time that the controller will spend on draining a node.
                          The default value is 0, meaning that the node can be drained without any time limitations.
                          NOTE: NodeDrainTimeout is different from `kubectl drain --timeout`
                        type: string
                      nodeVolumeDetachTimeout:
                        description: |-
                          NodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes
                          to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations.
                        type: string
                      replicas:
                        description: |-
                          Replicas is the number of control plane nodes.
                          If the value is nil, the ControlPlane object is created without the number of Replicas
                          and it's assumed that the control plane controller does not implement support for this field.
                          When specified against a control plane provider that lacks support for this field, this value will be ignored.
                        format: int32
                        type: integer
                      variables:
                        description: Variables can be used to customize the ControlPlane
                          through patches.
                        properties:
                          overrides:
                            description: Overrides can be used to override Cluster
                              level variables.
                            items:
                              description: |-
                                ClusterVariable can be used to customize the Cluster through patches. Each ClusterVariable is associated with a
                                Variable definition in the ClusterClass `status` variables.
                              properties:
                                definitionFrom:
                                  description: |-
                                    DefinitionFrom specifies where the definition of this Variable is from.


                                    Deprecated: This field is deprecated, must not be set anymore and is going to be removed in the next apiVersion.
                                  type: string
                                name:
                                  description: Name of the variable.
                                  type: string
                                value:
                                  description: |-
                                    Value of the variable.
                                    Note: the value will be validated against the schema of the corresponding ClusterClassVariable
                                    from the ClusterClass.
                                    Note: We have to use apiextensionsv1.JSON instead of a custom JSON type, because controller-tools has a
                                    hard-coded schema for apiextensionsv1.JSON which cannot be produced by another type via controller-tools,
                                    i.e. it is not possible to have no type field.
                                    Ref: https://github.com/kubernetes-sigs/controller-tools/blob/d0e03a142d0ecdd5491593e941ee1d6b5d91dba6/pkg/crd/known_types.go#L106-L111
                                  x-kubernetes-preserve-unknown-fields: true
                              required:
                              - name
                              - value
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - name
                            x-kubernetes-list-type: map
                        type: object
                    type: object
                  rolloutAfter:
                    description: |-
                      RolloutAfter performs a rollout of the entire cluster one component at a time,
                      control plane first and then machine deployments.


                      Deprecated: This field has no function and is going to be removed in the next apiVersion.
                    format: date-time
                    type: string
                  variables:
                    description: |-
                      Variables can be used to customize the Cluster through
                      patches. They must comply to the corresponding
                      VariableClasses defined in the ClusterClass.
                    items:
                      description: |-
                        ClusterVariable can be used to customize the Cluster through patches. Each ClusterVariable is associated with a
                        Variable definition in the ClusterClass `status` variables.
                      properties:
                        definitionFrom:
                          description: |-
                            DefinitionFrom specifies where the definition of this Variable is from.


                            Deprecated: This field is deprecated, must not be set anymore and is going to be removed in the next apiVersion.
                          type: string
                        name:
                          description: Name of the variable.
                          type: string
                        value:
                          description: |-
                            Value of the variable.
                            Note: the value will be validated against the schema of the corresponding ClusterClassVariable
                            from the ClusterClass.
                            Note: We have to use apiextensionsv1.JSON instead of a custom JSON type, because controller-tools has a
                            hard-coded schema for apiextensionsv1.JSON which cannot be produced by another type via controller-tools,
                            i.e. it is not possible to have no type field.
                            Ref: https://github.com/kubernetes-sigs/controller-tools/blob/d0e03a142d0ecdd5491593e941ee1d6b5d91dba6/pkg/crd/known_types.go#L106-L111
                          x-kubernetes-preserve-unknown-fields: true
                      required:
                      - name
                      - value
                      type: object
                    type: array
                    x-kubernetes-list-map-keys:
                    - name
                    x-kubernetes-list-type: map
                  version:
                    description: The Kubernetes version of the cluster.
                    type: string
                  workers:
                    description: |-
                      Workers encapsulates the different constructs that form the worker nodes
                      for the cluster.
                    properties:
                      machineDeployments:
                        description: MachineDeployments is a list of machine deployments
                          in the cluster.
                        items:
                          description: |-
                            MachineDeploymentTopology specifies the different parameters for a set of worker nodes in the topology.
                            This set of nodes is managed by a MachineDeployment object whose lifecycle is managed by the Cluster controller.
                          properties:
                            class:
                              description: |-
                                Class is the name of the MachineDeploymentClass used to create the set of worker nodes.
                                This should match one of the deployment classes defined in the ClusterClass object
                                mentioned in the `Cluster.Spec.Class` field.
                              type: string
                            failureDomain:
                              description: |-
                                FailureDomain is the failure domain the machines will be created in.
                                Must match a key in the FailureDomains map stored on the cluster object.
                              type: string
                            machineHealthCheck:
                              description: |-
                                MachineHealthCheck allows to enable, disable and override
                                the MachineHealthCheck configuration in the ClusterClass for this MachineDeployment.
                              properties:
                                enable:
                                  description: |-
                                    Enable controls if a MachineHealthCheck should be created for the target machines.


                                    If false: No MachineHealthCheck will be created.


                                    If not set(default): A MachineHealthCheck will be created if it is defined here or
                                     in the associated ClusterClass. If no MachineHealthCheck is defined then none will be created.


                                    If true: A MachineHealthCheck is guaranteed to be created. Cluster validation will
                                    block if `enable` is true and no MachineHealthCheck definition is available.
                                  type: boolean
                                maxUnhealthy:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  description: |-
                                    Any further remediation is only allowed if at most "MaxUnhealthy" machines selected by
                                    "selector" are not healthy.
                                  x-kubernetes-int-or-string: true
                                nodeStartupTimeout:
                                  description: |-
                                    NodeStartupTimeout allows to set the maximum time for MachineHealthCheck
                                    to consider a Machine unhealthy if a corresponding Node isn't associated
                                    through a `Spec.ProviderID` field.


                                    The duration set in this field is compared to the greatest of:
                                    - Cluster's infrastructure ready condition timestamp (if and when available)
                                    - Control Plane's initialized condition timestamp (if and when available)
                                    - Machine's infrastructure ready condition timestamp (if and when available)
                                    - Machine's metadata creation timestamp


                                    Defaults to 10 minutes.
                                    If you wish to disable this feature, set the value explicitly to 0.
                                  type: string
                                remediationTemplate:
                                  description: |-
                                    RemediationTemplate is a reference to a remediation template
                                    provided by an infrastructure provider.


                                    This field is completely optional, when filled, the MachineHealthCheck controller
                                    creates a new object from the template referenced and hands off remediation of the machine to
                                    a controller that lives outside of Cluster API.
                                  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
                                        should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                                        For example, if the object reference is to a container within a pod, this would take on a value like:
                                        "spec.containers{name}" (where "name" refers to the name of the container that triggered
                                        the event) or if no container name is specified "spec.containers[2]" (container with
                                        index 2 in this pod). This syntax is chosen only to have some well-defined way of
                                        referencing a part of an object.
                                        TODO: this design is not final and this field is subject to change in the future.
                                      type: string
                                    kind:
                                      description: |-
                                        Kind of the referent.
                                        More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                                      type: string
                                    name:
                                      description: |-
                                        Name of the referent.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                    namespace:
                                      description: |-
                                        Namespace of the referent.
                                        More 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.
                                        More 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.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                                      type: string
                                  type: object
                                  x-kubernetes-map-type: atomic
                                unhealthyConditions:
                                  description: |-
                                    UnhealthyConditions contains a list of the conditions that determine
                                    whether a node is considered unhealthy. The conditions are combined in a
                                    logical OR, i.e. if any of the conditions is met, the node is unhealthy.
                                  items:
                                    description: |-
                                      UnhealthyCondition represents a Node condition type and value with a timeout
                                      specified as a duration.  When the named condition has been in the given
                                      status for at least the timeout value, a node is considered unhealthy.
                                    properties:
                                      status:
                                        minLength: 1
                                        type: string
                                      timeout:
                                        type: string
                                      type:
                                        minLength: 1
                                        type: string
                                    required:
                                    - status
                                    - timeout
                                    - type
                                    type: object
                                  type: array
                                unhealthyRange:
                                  description: |-
                                    Any further remediation is only allowed if the number of machines selected by "selector" as not healthy
                                    is within the range of "UnhealthyRange". Takes precedence over MaxUnhealthy.
                                    Eg. "[3-5]" - This means that remediation will be allowed only when:
                                    (a) there are at least 3 unhealthy machines (and)
                                    (b) there are at most 5 unhealthy machines
                                  pattern: ^\[[0-9]+-[0-9]+\]$
                                  type: string
                              type: object
                            metadata:
                              description: |-
                                Metadata is the metadata applied to the MachineDeployment and the machines of the MachineDeployment.
                                At runtime this metadata is merged with the corresponding metadata from the ClusterClass.
                              properties:
                                annotations:
                                  additionalProperties:
                                    type: string
                                  description: |-
                                    Annotations is an unstructured key value map stored with a resource that may be
                                    set by external tools to store and retrieve arbitrary metadata. They are not
                                    queryable and should be preserved when modifying objects.
                                    More info: http://kubernetes.io/docs/user-guide/annotations
                                  type: object
                                labels:
                                  additionalProperties:
                                    type: string
                                  description: |-
                                    Map of string keys and values that can be used to organize and categorize
                                    (scope and select) objects. May match selectors of replication controllers
                                    and services.
                                    More info: http://kubernetes.io/docs/user-guide/labels
                                  type: object
                              type: object
                            minReadySeconds:
                              description: |-
                                Minimum number of seconds for which a newly created machine should
                                be ready.
                                Defaults to 0 (machine will be considered available as soon as it
                                is ready)
                              format: int32
                              type: integer
                            name:
                              description: |-
                                Name is the unique identifier for this MachineDeploymentTopology.
                                The value is used with other unique identifiers to create a MachineDeployment's Name
                                (e.g. cluster's name, etc). In case the name is greater than the allowed maximum length,
                                the values are hashed together.
                              type: string
                            nodeDeletionTimeout:
                              description: |-
                                NodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine
                                hosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely.
                                Defaults to 10 seconds.
                              type: string
                            nodeDrainTimeout:
                              description: |-
                                NodeDrainTimeout is the total amount of time that the controller will spend on draining a node.
                                The default value is 0, meaning that the node can be drained without any time limitations.
                                NOTE: NodeDrainTimeout is different from `kubectl drain --timeout`
                              type: string
                            nodeVolumeDetachTimeout:
                              description: |-
                                NodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes
                                to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations.
                              type: string
                            replicas:
                              description: |-
                                Replicas is the number of worker nodes belonging to this set.
                                If the value is nil, the MachineDeployment is created without the number of Replicas (defaulting to 1)
                                and it's assumed that an external entity (like cluster autoscaler) is responsible for the management
                                of this value.
                              format: int32
                              type: integer
                            strategy:
                              description: |-
                                The deployment strategy to use to replace existing machines with
                                new ones.
                              properties:
                                remediation:
                                  description: |-
                                    Remediation controls the strategy of remediating unhealthy machines
                                    and how remediating operations should occur during the lifecycle of the dependant MachineSets.
                                  properties:
                                    maxInFlight:
                                      anyOf:
                                      - type: integer
                                      - type: string
                                      description: |-
                                        MaxInFlight determines how many in flight remediations should happen at the same time.


                                        Remediation only happens on the MachineSet with the most current revision, while
                                        older MachineSets (usually present during rollout operations) aren't allowed to remediate.


                                        Note: In general (independent of remediations), unhealthy machines are always
                                        prioritized during scale down operations over healthy ones.


                                        MaxInFlight can be set to a fixed number or a percentage.
                                        Example: when this is set to 20%, the MachineSet controller deletes at most 20% of
                                        the desired replicas.


                                        If not set, remediation is limited to all machines (bounded by replicas)
                                        under the active MachineSet's management.
                                      x-kubernetes-int-or-string: true
                                  type: object
                                rollingUpdate:
                                  description: |-
                                    Rolling update config params. Present only if
                                    MachineDeploymentStrategyType = RollingUpdate.
                                  properties:
                                    deletePolicy:
                                      description: |-
                                        DeletePolicy defines the policy used by the MachineDeployment to identify nodes to delete when downscaling.
                                        Valid values are "Random, "Newest", "Oldest"
                                        When no value is supplied, the default DeletePolicy of MachineSet is used
                                      enum:
                                      - Random
                                      - Newest
                                      - Oldest
                                      type: string
                                    maxSurge:
                                      anyOf:
                                      - type: integer
                                      - type: string
                                      description: |-
                                        The maximum number of machines that can be scheduled above the
                                        desired number of machines.
                                        Value can be an absolute number (ex: 5) or a percentage of
                                        desired machines (ex: 10%).
                                        This can not be 0 if MaxUnavailable is 0.
                                        Absolute number is calculated from percentage by rounding up.
                                        Defaults to 1.
                                        Example: when this is set to 30%, the new MachineSet can be scaled
                                        up immediately when the rolling update starts, such that the total
                                        number of old and new machines do not exceed 130% of desired
                                        machines. Once old machines have been killed, new MachineSet can
                                        be scaled up further, ensuring that total number of machines running
                                        at any time during the update is at most 130% of desired machines.
                                      x-kubernetes-int-or-string: true
                                    maxUnavailable:
                                      anyOf:
                                      - type: integer
                                      - type: string
                                      description: |-
                                        The maximum number of machines that can be unavailable during the update.
                                        Value can be an absolute number (ex: 5) or a percentage of desired
                                        machines (ex: 10%).
                                        Absolute number is calculated from percentage by rounding down.
                                        This can not be 0 if MaxSurge is 0.
                                        Defaults to 0.
                                        Example: when this is set to 30%, the old MachineSet can be scaled
                                        down to 70% of desired machines immediately when the rolling update
                                        starts. Once new machines are ready, old MachineSet can be scaled
                                        down further, followed by scaling up the new MachineSet, ensuring
                                        that the total number of machines available at all times
                                        during the update is at least 70% of desired machines.
                                      x-kubernetes-int-or-string: true
                                  type: object
                                type:
                                  description: |-
                                    Type of deployment. Allowed values are RollingUpdate and OnDelete.
                                    The default is RollingUpdate.
                                  enum:
                                  - RollingUpdate
                                  - OnDelete
                                  type: string
                              type: object
                            variables:
                              description: Variables can be used to customize the
                                MachineDeployment through patches.
                              properties:
                                overrides:
                                  description: Overrides can be used to override Cluster
                                    level variables.
                                  items:
                                    description: |-
                                      ClusterVariable can be used to customize the Cluster through patches. Each ClusterVariable is associated with a
                                      Variable definition in the ClusterClass `status` variables.
                                    properties:
                                      definitionFrom:
                                        description: |-
                                          DefinitionFrom specifies where the definition of this Variable is from.


                                          Deprecated: This field is deprecated, must not be set anymore and is going to be removed in the next apiVersion.
                                        type: string
                                      name:
                                        description: Name of the variable.
                                        type: string
                                      value:
                                        description: |-
                                          Value of the variable.
                                          Note: the value will be validated against the schema of the corresponding ClusterClassVariable
                                          from the ClusterClass.
                                          Note: We have to use apiextensionsv1.JSON instead of a custom JSON type, because controller-tools has a
                                          hard-coded schema for apiextensionsv1.JSON which cannot be produced by another type via controller-tools,
                                          i.e. it is not possible to have no type field.
                                          Ref: https://github.com/kubernetes-sigs/controller-tools/blob/d0e03a142d0ecdd5491593e941ee1d6b5d91dba6/pkg/crd/known_types.go#L106-L111
                                        x-kubernetes-preserve-unknown-fields: true
                                    required:
                                    - name
                                    - value
                                    type: object
                                  type: array
                                  x-kubernetes-list-map-keys:
                                  - name
                                  x-kubernetes-list-type: map
                              type: object
                          required:
                          - class
                          - name
                          type: object
                        type: array
                        x-kubernetes-list-map-keys:
                        - name
                        x-kubernetes-list-type: map
                      machinePools:
                        description: MachinePools is a list of machine pools in the
                          cluster.
                        items:
                          description: |-
                            MachinePoolTopology specifies the different parameters for a pool of worker nodes in the topology.
                            This pool of nodes is managed by a MachinePool object whose lifecycle is managed by the Cluster controller.
                          properties:
                            class:
                              description: |-
                                Class is the name of the MachinePoolClass used to create the pool of worker nodes.
                                This should match one of the deployment classes defined in the ClusterClass object
                                mentioned in the `Cluster.Spec.Class` field.
                              type: string
                            failureDomains:
                              description: |-
                                FailureDomains is the list of failure domains the machine pool will be created in.
                                Must match a key in the FailureDomains map stored on the cluster object.
                              items:
                                type: string
                              type: array
                            metadata:
                              description: |-
                                Metadata is the metadata applied to the MachinePool.
                                At runtime this metadata is merged with the corresponding metadata from the ClusterClass.
                              properties:
                                annotations:
                                  additionalProperties:
                                    type: string
                                  description: |-
                                    Annotations is an unstructured key value map stored with a resource that may be
                                    set by external tools to store and retrieve arbitrary metadata. They are not
                                    queryable and should be preserved when modifying objects.
                                    More info: http://kubernetes.io/docs/user-guide/annotations
                                  type: object
                                labels:
                                  additionalProperties:
                                    type: string
                                  description: |-
                                    Map of string keys and values that can be used to organize and categorize
                                    (scope and select) objects. May match selectors of replication controllers
                                    and services.
                                    More info: http://kubernetes.io/docs/user-guide/labels
                                  type: object
                              type: object
                            minReadySeconds:
                              description: |-
                                Minimum number of seconds for which a newly created machine pool should
                                be ready.
                                Defaults to 0 (machine will be considered available as soon as it
                                is ready)
                              format: int32
                              type: integer
                            name:
                              description: |-
                                Name is the unique identifier for this MachinePoolTopology.
                                The value is used with other unique identifiers to create a MachinePool's Name
                                (e.g. cluster's name, etc). In case the name is greater than the allowed maximum length,
                                the values are hashed together.
                              type: string
                            nodeDeletionTimeout:
                              description: |-
                                NodeDeletionTimeout defines how long the controller will attempt to delete the Node that the MachinePool
                                hosts after the MachinePool is marked for deletion. A duration of 0 will retry deletion indefinitely.
                                Defaults to 10 seconds.
                              type: string
                            nodeDrainTimeout:
                              description: |-
                                NodeDrainTimeout is the total amount of time that the controller will spend on draining a node.
                                The default value is 0, meaning that the node can be drained without any time limitations.
                                NOTE: NodeDrainTimeout is different from `kubectl drain --timeout`
                              type: string
                            nodeVolumeDetachTimeout:
                              description: |-
                                NodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes
                                to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations.
                              type: string
                            replicas:
                              description: |-
                                Replicas is the number of nodes belonging to this pool.
                                If the value is nil, the MachinePool is created without the number of Replicas (defaulting to 1)
                                and it's assumed that an external entity (like cluster autoscaler) is responsible for the management
                                of this value.
                              format: int32
                              type: integer
                            variables:
                              description: Variables can be used to customize the
                                MachinePool through patches.
                              properties:
                                overrides:
                                  description: Overrides can be used to override Cluster
                                    level variables.
                                  items:
                                    description: |-
                                      ClusterVariable can be used to customize the Cluster through patches. Each ClusterVariable is associated with a
                                      Variable definition in the ClusterClass `status` variables.
                                    properties:
                                      definitionFrom:
                                        description: |-
                                          DefinitionFrom specifies where the definition of this Variable is from.


                                          Deprecated: This field is deprecated, must not be set anymore and is going to be removed in the next apiVersion.
                                        type: string
                                      name:
                                        description: Name of the variable.
                                        type: string
                                      value:
                                        description: |-
                                          Value of the variable.
                                          Note: the value will be validated against the schema of the corresponding ClusterClassVariable
                                          from the ClusterClass.
                                          Note: We have to use apiextensionsv1.JSON instead of a custom JSON type, because controller-tools has a
                                          hard-coded schema for apiextensionsv1.JSON which cannot be produced by another type via controller-tools,
                                          i.e. it is not possible to have no type field.
                                          Ref: https://github.com/kubernetes-sigs/controller-tools/blob/d0e03a142d0ecdd5491593e941ee1d6b5d91dba6/pkg/crd/known_types.go#L106-L111
                                        x-kubernetes-preserve-unknown-fields: true
                                    required:
                                    - name
                                    - value
                                    type: object
                                  type: array
                                  x-kubernetes-list-map-keys:
                                  - name
                                  x-kubernetes-list-type: map
                              type: object
                          required:
                          - class
                          - name
                          type: object
                        type: array
                        x-kubernetes-list-map-keys:
                        - name
                        x-kubernetes-list-type: map
                    type: object
                required:
                - class
                - version
                type: object
            type: object
          status:
            description: ClusterStatus defines the observed state of Cluster.
            properties:
              conditions:
                description: Conditions defines current service state of the cluster.
                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.
                        This should be when the underlying condition changed. If that is not known, then using the time when
                        the API field changed is acceptable.
                      format: date-time
                      type: string
                    message:
                      description: |-
                        A human readable message indicating details about the transition.
                        This field may be empty.
                      type: string
                    reason:
                      description: |-
                        The reason for the condition's last transition in CamelCase.
                        The specific API may choose whether or not this field is considered a guaranteed API.
                        This field may not be empty.
                      type: string
                    severity:
                      description: |-
                        Severity provides an explicit classification of Reason code, so the users or machines can immediately
                        understand the current situation and act accordingly.
                        The 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.
                        Many .condition.type values are consistent across resources like Available, but because arbitrary conditions
                        can be useful (see .node.status.conditions), the ability to deconflict is important.
                      type: string
                  required:
                  - lastTransitionTime
                  - status
                  - type
                  type: object
                type: array
              controlPlaneReady:
                description: |-
                  ControlPlaneReady denotes if the control plane became ready during initial provisioning
                  to receive requests.
                  NOTE: this field is part of the Cluster API contract and it is used to orchestrate provisioning.
                  The value of this field is never updated after provisioning is completed. Please use conditions
                  to check the operational state of the control plane.
                type: boolean
              failureDomains:
                additionalProperties:
                  description: |-
                    FailureDomainSpec is the Schema for Cluster API failure domains.
                    It allows controllers to understand how many failure domains a cluster can optionally span across.
                  properties:
                    attributes:
                      additionalProperties:
                        type: string
                      description: Attributes is a free form map of attributes an
                        infrastructure provider might use or require.
                      type: object
                    controlPlane:
                      description: ControlPlane determines if this failure domain
                        is suitable for use by control plane machines.
                      type: boolean
                  type: object
                description: FailureDomains is a slice of failure domain objects synced
                  from the infrastructure provider.
                type: object
              failureMessage:
                description: |-
                  FailureMessage indicates that there is a fatal problem reconciling the
                  state, and will be set to a descriptive error message.
                type: string
              failureReason:
                description: |-
                  FailureReason indicates that there is a fatal problem reconciling the
                  state, and will be set to a token value suitable for
                  programmatic interpretation.
                type: string
              infrastructureReady:
                description: InfrastructureReady is the state of the infrastructure
                  provider.
                type: boolean
              observedGeneration:
                description: ObservedGeneration is the latest generation observed
                  by the controller.
                format: int64
                type: integer
              phase:
                description: |-
                  Phase represents the current phase of cluster actuation.
                  E.g. Pending, Running, Terminating, Failed etc.
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: null
  storedVersions: null
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.15.0
    service.beta.openshift.io/inject-cabundle: "true"
  creationTimestamp: null
  labels:
    cluster.x-k8s.io/provider: cluster-api
    clusterctl.cluster.x-k8s.io: ""
  name: machines.cluster.x-k8s.io
spec:
  group: cluster.x-k8s.io
  names:
    categories:
    - cluster-api
    kind: Machine
    listKind: MachineList
    plural: machines
    shortNames:
    - ma
    singular: machine
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: Provider ID
      jsonPath: .spec.providerID
      name: ProviderID
      type: string
    - description: Machine status such as Terminating/Pending/Running/Failed etc
      jsonPath: .status.phase
      name: Phase
      type: string
    - description: Kubernetes version associated with this Machine
      jsonPath: .spec.version
      name: Version
      type: string
    - description: Node name associated with this machine
      jsonPath: .status.nodeRef.name
      name: NodeName
      priority: 1
      type: string
    deprecated: true
    name: v1alpha3
    schema:
      openAPIV3Schema:
        description: |-
          Machine is the Schema for the machines API.


          Deprecated: This type will be removed in one of the next releases.
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More 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.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: MachineSpec defines the desired state of Machine.
            properties:
              bootstrap:
                description: |-
                  Bootstrap is a reference to a local struct which encapsulates
                  fields to configure the Machine’s bootstrapping mechanism.
                properties:
                  configRef:
                    description: |-
                      ConfigRef is a reference to a bootstrap provider-specific resource
                      that holds configuration details. The reference is optional to
                      allow users/operators to specify Bootstrap.Data without
                      the need of a controller.
                    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
                          should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                          For example, if the object reference is to a container within a pod, this would take on a value like:
                          "spec.containers{name}" (where "name" refers to the name of the container that triggered
                          the event) or if no container name is specified "spec.containers[2]" (container with
                          index 2 in this pod). This syntax is chosen only to have some well-defined way of
                          referencing a part of an object.
                          TODO: this design is not final and this field is subject to change in the future.
                        type: string
                      kind:
                        description: |-
                          Kind of the referent.
                          More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                        type: string
                      name:
                        description: |-
                          Name of the referent.
                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                        type: string
                      namespace:
                        description: |-
                          Namespace of the referent.
                          More 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.
                          More 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.
                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                        type: string
                    type: object
                    x-kubernetes-map-type: atomic
                  data:
                    description: |-
                      Data contains the bootstrap data, such as cloud-init details scripts.
                      If nil, the Machine should remain in the Pending state.


                      Deprecated: Switch to DataSecretName.
                    type: string
                  dataSecretName:
                    description: |-
                      DataSecretName is the name of the secret that stores the bootstrap data script.
                      If nil, the Machine should remain in the Pending state.
                    type: string
                type: object
              clusterName:
                description: ClusterName is the name of the Cluster this object belongs
                  to.
                minLength: 1
                type: string
              failureDomain:
                description: |-
                  FailureDomain is the failure domain the machine will be created in.
                  Must match a key in the FailureDomains map stored on the cluster object.
                type: string
              infrastructureRef:
                description: |-
                  InfrastructureRef is a required reference to a custom resource
                  offered by an infrastructure provider.
                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
                      should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                      For example, if the object reference is to a container within a pod, this would take on a value like:
                      "spec.containers{name}" (where "name" refers to the name of the container that triggered
                      the event) or if no container name is specified "spec.containers[2]" (container with
                      index 2 in this pod). This syntax is chosen only to have some well-defined way of
                      referencing a part of an object.
                      TODO: this design is not final and this field is subject to change in the future.
                    type: string
                  kind:
                    description: |-
                      Kind of the referent.
                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                    type: string
                  name:
                    description: |-
                      Name of the referent.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                    type: string
                  namespace:
                    description: |-
                      Namespace of the referent.
                      More 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.
                      More 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.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                    type: string
                type: object
                x-kubernetes-map-type: atomic
              nodeDrainTimeout:
                description: |-
                  NodeDrainTimeout is the total amount of time that the controller will spend on draining a node.
                  The default value is 0, meaning that the node can be drained without any time limitations.
                  NOTE: NodeDrainTimeout is different from `kubectl drain --timeout`
                type: string
              providerID:
                description: |-
                  ProviderID is the identification ID of the machine provided by the provider.
                  This field must match the provider ID as seen on the node object corresponding to this machine.
                  This field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler
                  with cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out
                  machines at provider which could not get registered as Kubernetes nodes. With cluster-api as a
                  generic out-of-tree provider for autoscaler, this field is required by autoscaler to be
                  able to have a provider view of the list of machines. Another list of nodes is queried from the k8s apiserver
                  and then a comparison is done to find out unregistered machines and are marked for delete.
                  This field will be set by the actuators and consumed by higher level entities like autoscaler that will
                  be interfacing with cluster-api as generic provider.
                type: string
              version:
                description: |-
                  Version defines the desired Kubernetes version.
                  This field is meant to be optionally used by bootstrap providers.
                type: string
            required:
            - bootstrap
            - clusterName
            - infrastructureRef
            type: object
          status:
            description: MachineStatus defines the observed state of Machine.
            properties:
              addresses:
                description: |-
                  Addresses is a list of addresses assigned to the machine.
                  This field is copied from the infrastructure provider reference.
                items:
                  description: MachineAddress contains information for the node's
                    address.
                  properties:
                    address:
                      description: The machine address.
                      type: string
                    type:
                      description: Machine address type, one of Hostname, ExternalIP
                        or InternalIP.
                      type: string
                  required:
                  - address
                  - type
                  type: object
                type: array
              bootstrapReady:
                description: BootstrapReady is the state of the bootstrap provider.
                type: boolean
              conditions:
                description: Conditions defines current service state of the Machine.
                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.
                        This should be when the underlying condition changed. If that is not known, then using the time when
                        the API field changed is acceptable.
                      format: date-time
                      type: string
                    message:
                      description: |-
                        A human readable message indicating details about the transition.
                        This field may be empty.
                      type: string
                    reason:
                      description: |-
                        The reason for the condition's last transition in CamelCase.
                        The specific API may choose whether or not this field is considered a guaranteed API.
                        This field may not be empty.
                      type: string
                    severity:
                      description: |-
                        Severity provides an explicit classification of Reason code, so the users or machines can immediately
                        understand the current situation and act accordingly.
                        The 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.
                        Many .condition.type values are consistent across resources like Available, but because arbitrary conditions
                        can be useful (see .node.status.conditions), the ability to deconflict is important.
                      type: string
                  required:
                  - status
                  - type
                  type: object
                type: array
              failureMessage:
                description: |-
                  FailureMessage will be set in the event that there is a terminal problem
                  reconciling the Machine and will contain a more verbose string suitable
                  for logging and human consumption.


                  This field should not be set for transitive errors that a controller
                  faces that are expected to be fixed automatically over
                  time (like service outages), but instead indicate that something is
                  fundamentally wrong with the Machine's spec or the configuration of
                  the controller, and that manual intervention is required. Examples
                  of terminal errors would be invalid combinations of settings in the
                  spec, values that are unsupported by the controller, or the
                  responsible controller itself being critically misconfigured.


                  Any transient errors that occur during the reconciliation of Machines
                  can be added as events to the Machine object and/or logged in the
                  controller's output.
                type: string
              failureReason:
                description: |-
                  FailureReason will be set in the event that there is a terminal problem
                  reconciling the Machine and will contain a succinct value suitable
                  for machine interpretation.


                  This field should not be set for transitive errors that a controller
                  faces that are expected to be fixed automatically over
                  time (like service outages), but instead indicate that something is
                  fundamentally wrong with the Machine's spec or the configuration of
                  the controller, and that manual intervention is required. Examples
                  of terminal errors would be invalid combinations of settings in the
                  spec, values that are unsupported by the controller, or the
                  responsible controller itself being critically misconfigured.


                  Any transient errors that occur during the reconciliation of Machines
                  can be added as events to the Machine object and/or logged in the
                  controller's output.
                type: string
              infrastructureReady:
                description: InfrastructureReady is the state of the infrastructure
                  provider.
                type: boolean
              lastUpdated:
                description: LastUpdated identifies when the phase of the Machine
                  last transitioned.
                format: date-time
                type: string
              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
                      should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                      For example, if the object reference is to a container within a pod, this would take on a value like:
                      "spec.containers{name}" (where "name" refers to the name of the container that triggered
                      the event) or if no container name is specified "spec.containers[2]" (container with
                      index 2 in this pod). This syntax is chosen only to have some well-defined way of
                      referencing a part of an object.
                      TODO: this design is not final and this field is subject to change in the future.
                    type: string
                  kind:
                    description: |-
                      Kind of the referent.
                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                    type: string
                  name:
                    description: |-
                      Name of the referent.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                    type: string
                  namespace:
                    description: |-
                      Namespace of the referent.
                      More 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.
                      More 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.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                    type: string
                type: object
                x-kubernetes-map-type: atomic
              observedGeneration:
                description: ObservedGeneration is the latest generation observed
                  by the controller.
                format: int64
                type: integer
              phase:
                description: |-
                  Phase represents the current phase of machine actuation.
                  E.g. Pending, Running, Terminating, Failed etc.
                type: string
              version:
                description: |-
                  Version specifies the current version of Kubernetes running
                  on the corresponding Node. This is meant to be a means of bubbling
                  up status from the Node to the Machine.
                  It is entirely optional, but useful for end-user UX if it’s present.
                type: string
            type: object
        type: object
    served: false
    storage: false
    subresources:
      status: {}
  - additionalPrinterColumns:
    - description: Cluster
      jsonPath: .spec.clusterName
      name: Cluster
      type: string
    - description: Time duration since creation of Machine
      jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    - description: Provider ID
      jsonPath: .spec.providerID
      name: ProviderID
      type: string
    - description: Machine status such as Terminating/Pending/Running/Failed etc
      jsonPath: .status.phase
      name: Phase
      type: string
    - description: Kubernetes version associated with this Machine
      jsonPath: .spec.version
      name: Version
      type: string
    - description: Node name associated with this machine
      jsonPath: .status.nodeRef.name
      name: NodeName
      priority: 1
      type: string
    deprecated: true
    name: v1alpha4
    schema:
      openAPIV3Schema:
        description: |-
          Machine is the Schema for the machines API.


          Deprecated: This type will be removed in one of the next releases.
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More 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.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: MachineSpec defines the desired state of Machine.
            properties:
              bootstrap:
                description: |-
                  Bootstrap is a reference to a local struct which encapsulates
                  fields to configure the Machine’s bootstrapping mechanism.
                properties:
                  configRef:
                    description: |-
                      ConfigRef is a reference to a bootstrap provider-specific resource
                      that holds configuration details. The reference is optional to
                      allow users/operators to specify Bootstrap.DataSecretName without
                      the need of a controller.
                    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
                          should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                          For example, if the object reference is to a container within a pod, this would take on a value like:
                          "spec.containers{name}" (where "name" refers to the name of the container that triggered
                          the event) or if no container name is specified "spec.containers[2]" (container with
                          index 2 in this pod). This syntax is chosen only to have some well-defined way of
                          referencing a part of an object.
                          TODO: this design is not final and this field is subject to change in the future.
                        type: string
                      kind:
                        description: |-
                          Kind of the referent.
                          More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                        type: string
                      name:
                        description: |-
                          Name of the referent.
                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                        type: string
                      namespace:
                        description: |-
                          Namespace of the referent.
                          More 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.
                          More 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.
                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                        type: string
                    type: object
                    x-kubernetes-map-type: atomic
                  dataSecretName:
                    description: |-
                      DataSecretName is the name of the secret that stores the bootstrap data script.
                      If nil, the Machine should remain in the Pending state.
                    type: string
                type: object
              clusterName:
                description: ClusterName is the name of the Cluster this object belongs
                  to.
                minLength: 1
                type: string
              failureDomain:
                description: |-
                  FailureDomain is the failure domain the machine will be created in.
                  Must match a key in the FailureDomains map stored on the cluster object.
                type: string
              infrastructureRef:
                description: |-
                  InfrastructureRef is a required reference to a custom resource
                  offered by an infrastructure provider.
                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
                      should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                      For example, if the object reference is to a container within a pod, this would take on a value like:
                      "spec.containers{name}" (where "name" refers to the name of the container that triggered
                      the event) or if no container name is specified "spec.containers[2]" (container with
                      index 2 in this pod). This syntax is chosen only to have some well-defined way of
                      referencing a part of an object.
                      TODO: this design is not final and this field is subject to change in the future.
                    type: string
                  kind:
                    description: |-
                      Kind of the referent.
                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                    type: string
                  name:
                    description: |-
                      Name of the referent.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                    type: string
                  namespace:
                    description: |-
                      Namespace of the referent.
                      More 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.
                      More 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.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                    type: string
                type: object
                x-kubernetes-map-type: atomic
              nodeDrainTimeout:
                description: |-
                  NodeDrainTimeout is the total amount of time that the controller will spend on draining a node.
                  The default value is 0, meaning that the node can be drained without any time limitations.
                  NOTE: NodeDrainTimeout is different from `kubectl drain --timeout`
                type: string
              providerID:
                description: |-
                  ProviderID is the identification ID of the machine provided by the provider.
                  This field must match the provider ID as seen on the node object corresponding to this machine.
                  This field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler
                  with cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out
                  machines at provider which could not get registered as Kubernetes nodes. With cluster-api as a
                  generic out-of-tree provider for autoscaler, this field is required by autoscaler to be
                  able to have a provider view of the list of machines. Another list of nodes is queried from the k8s apiserver
                  and then a comparison is done to find out unregistered machines and are marked for delete.
                  This field will be set by the actuators and consumed by higher level entities like autoscaler that will
                  be interfacing with cluster-api as generic provider.
                type: string
              version:
                description: |-
                  Version defines the desired Kubernetes version.
                  This field is meant to be optionally used by bootstrap providers.
                type: string
            required:
            - bootstrap
            - clusterName
            - infrastructureRef
            type: object
          status:
            description: MachineStatus defines the observed state of Machine.
            properties:
              addresses:
                description: |-
                  Addresses is a list of addresses assigned to the machine.
                  This field is copied from the infrastructure provider reference.
                items:
                  description: MachineAddress contains information for the node's
                    address.
                  properties:
                    address:
                      description: The machine address.
                      type: string
                    type:
                      description: Machine address type, one of Hostname, ExternalIP
                        or InternalIP.
                      type: string
                  required:
                  - address
                  - type
                  type: object
                type: array
              bootstrapReady:
                description: BootstrapReady is the state of the bootstrap provider.
                type: boolean
              conditions:
                description: Conditions defines current service state of the Machine.
                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.
                        This should be when the underlying condition changed. If that is not known, then using the time when
                        the API field changed is acceptable.
                      format: date-time
                      type: string
                    message:
                      description: |-
                        A human readable message indicating details about the transition.
                        This field may be empty.
                      type: string
                    reason:
                      description: |-
                        The reason for the condition's last transition in CamelCase.
                        The specific API may choose whether or not this field is considered a guaranteed API.
                        This field may not be empty.
                      type: string
                    severity:
                      description: |-
                        Severity provides an explicit classification of Reason code, so the users or machines can immediately
                        understand the current situation and act accordingly.
                        The 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.
                        Many .condition.type values are consistent across resources like Available, but because arbitrary conditions
                        can be useful (see .node.status.conditions), the ability to deconflict is important.
                      type: string
                  required:
                  - status
                  - type
                  type: object
                type: array
              failureMessage:
                description: |-
                  FailureMessage will be set in the event that there is a terminal problem
                  reconciling the Machine and will contain a more verbose string suitable
                  for logging and human consumption.


                  This field should not be set for transitive errors that a controller
                  faces that are expected to be fixed automatically over
                  time (like service outages), but instead indicate that something is
                  fundamentally wrong with the Machine's spec or the configuration of
                  the controller, and that manual intervention is required. Examples
                  of terminal errors would be invalid combinations of settings in the
                  spec, values that are unsupported by the controller, or the
                  responsible controller itself being critically misconfigured.


                  Any transient errors that occur during the reconciliation of Machines
                  can be added as events to the Machine object and/or logged in the
                  controller's output.
                type: string
              failureReason:
                description: |-
                  FailureReason will be set in the event that there is a terminal problem
                  reconciling the Machine and will contain a succinct value suitable
                  for machine interpretation.


                  This field should not be set for transitive errors that a controller
                  faces that are expected to be fixed automatically over
                  time (like service outages), but instead indicate that something is
                  fundamentally wrong with the Machine's spec or the configuration of
                  the controller, and that manual intervention is required. Examples
                  of terminal errors would be invalid combinations of settings in the
                  spec, values that are unsupported by the controller, or the
                  responsible controller itself being critically misconfigured.


                  Any transient errors that occur during the reconciliation of Machines
                  can be added as events to the Machine object and/or logged in the
                  controller's output.
                type: string
              infrastructureReady:
                description: InfrastructureReady is the state of the infrastructure
                  provider.
                type: boolean
              lastUpdated:
                description: LastUpdated identifies when the phase of the Machine
                  last transitioned.
                format: date-time
                type: string
              nodeInfo:
                description: |-
                  NodeInfo is a set of ids/uuids to uniquely identify the node.
                  More info: https://kubernetes.io/docs/concepts/nodes/node/#info
                properties:
                  architecture:
                    description: The Architecture reported by the node
                    type: string
                  bootID:
                    description: Boot ID reported by the node.
                    type: string
                  containerRuntimeVersion:
                    description: ContainerRuntime Version reported by the node through
                      runtime remote API (e.g. containerd://1.4.2).
                    type: string
                  kernelVersion:
                    description: Kernel Version reported by the node from 'uname -r'
                      (e.g. 3.16.0-0.bpo.4-amd64).
                    type: string
                  kubeProxyVersion:
                    description: KubeProxy Version reported by the node.
                    type: string
                  kubeletVersion:
                    description: Kubelet Version reported by the node.
                    type: string
                  machineID:
                    description: |-
                      MachineID reported by the node. For unique machine identification
                      in the cluster this field is preferred. Learn more from man(5)
                      machine-id: http://man7.org/linux/man-pages/man5/machine-id.5.html
                    type: string
                  operatingSystem:
                    description: The Operating System reported by the node
                    type: string
                  osImage:
                    description: OS Image reported by the node from /etc/os-release
                      (e.g. Debian GNU/Linux 7 (wheezy)).
                    type: string
                  systemUUID:
                    description: |-
                      SystemUUID reported by the node. For unique machine identification
                      MachineID is preferred. This field is specific to Red Hat hosts
                      https://access.redhat.com/documentation/en-us/red_hat_subscription_management/1/html/rhsm/uuid
                    type: string
                required:
                - architecture
                - bootID
                - containerRuntimeVersion
                - kernelVersion
                - kubeProxyVersion
                - kubeletVersion
                - machineID
                - operatingSystem
                - osImage
                - systemUUID
                type: object
              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
                      should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                      For example, if the object reference is to a container within a pod, this would take on a value like:
                      "spec.containers{name}" (where "name" refers to the name of the container that triggered
                      the event) or if no container name is specified "spec.containers[2]" (container with
                      index 2 in this pod). This syntax is chosen only to have some well-defined way of
                      referencing a part of an object.
                      TODO: this design is not final and this field is subject to change in the future.
                    type: string
                  kind:
                    description: |-
                      Kind of the referent.
                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                    type: string
                  name:
                    description: |-
                      Name of the referent.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                    type: string
                  namespace:
                    description: |-
                      Namespace of the referent.
                      More 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.
                      More 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.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                    type: string
                type: object
                x-kubernetes-map-type: atomic
              observedGeneration:
                description: ObservedGeneration is the latest generation observed
                  by the controller.
                format: int64
                type: integer
              phase:
                description: |-
                  Phase represents the current phase of machine actuation.
                  E.g. Pending, Running, Terminating, Failed etc.
                type: string
              version:
                description: |-
                  Version specifies the current version of Kubernetes running
                  on the corresponding Node. This is meant to be a means of bubbling
                  up status from the Node to the Machine.
                  It is entirely optional, but useful for end-user UX if it’s present.
                type: string
            type: object
        type: object
    served: false
    storage: false
    subresources:
      status: {}
  - additionalPrinterColumns:
    - description: Cluster
      jsonPath: .spec.clusterName
      name: Cluster
      type: string
    - description: Node name associated with this machine
      jsonPath: .status.nodeRef.name
      name: NodeName
      type: string
    - description: Provider ID
      jsonPath: .spec.providerID
      name: ProviderID
      type: string
    - description: Machine status such as Terminating/Pending/Running/Failed etc
      jsonPath: .status.phase
      name: Phase
      type: string
    - description: Time duration since creation of Machine
      jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    - description: Kubernetes version associated with this Machine
      jsonPath: .spec.version
      name: Version
      type: string
    name: v1beta1
    schema:
      openAPIV3Schema:
        description: Machine is the Schema for the machines API.
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More 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.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: MachineSpec defines the desired state of Machine.
            properties:
              bootstrap:
                description: |-
                  Bootstrap is a reference to a local struct which encapsulates
                  fields to configure the Machine’s bootstrapping mechanism.
                properties:
                  configRef:
                    description: |-
                      ConfigRef is a reference to a bootstrap provider-specific resource
                      that holds configuration details. The reference is optional to
                      allow users/operators to specify Bootstrap.DataSecretName without
                      the need of a controller.
                    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
                          should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                          For example, if the object reference is to a container within a pod, this would take on a value like:
                          "spec.containers{name}" (where "name" refers to the name of the container that triggered
                          the event) or if no container name is specified "spec.containers[2]" (container with
                          index 2 in this pod). This syntax is chosen only to have some well-defined way of
                          referencing a part of an object.
                          TODO: this design is not final and this field is subject to change in the future.
                        type: string
                      kind:
                        description: |-
                          Kind of the referent.
                          More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                        type: string
                      name:
                        description: |-
                          Name of the referent.
                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                        type: string
                      namespace:
                        description: |-
                          Namespace of the referent.
                          More 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.
                          More 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.
                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                        type: string
                    type: object
                    x-kubernetes-map-type: atomic
                  dataSecretName:
                    description: |-
                      DataSecretName is the name of the secret that stores the bootstrap data script.
                      If nil, the Machine should remain in the Pending state.
                    type: string
                type: object
              clusterName:
                description: ClusterName is the name of the Cluster this object belongs
                  to.
                minLength: 1
                type: string
              failureDomain:
                description: |-
                  FailureDomain is the failure domain the machine will be created in.
                  Must match a key in the FailureDomains map stored on the cluster object.
                type: string
              infrastructureRef:
                description: |-
                  InfrastructureRef is a required reference to a custom resource
                  offered by an infrastructure provider.
                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
                      should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                      For example, if the object reference is to a container within a pod, this would take on a value like:
                      "spec.containers{name}" (where "name" refers to the name of the container that triggered
                      the event) or if no container name is specified "spec.containers[2]" (container with
                      index 2 in this pod). This syntax is chosen only to have some well-defined way of
                      referencing a part of an object.
                      TODO: this design is not final and this field is subject to change in the future.
                    type: string
                  kind:
                    description: |-
                      Kind of the referent.
                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                    type: string
                  name:
                    description: |-
                      Name of the referent.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                    type: string
                  namespace:
                    description: |-
                      Namespace of the referent.
                      More 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.
                      More 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.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                    type: string
                type: object
                x-kubernetes-map-type: atomic
              nodeDeletionTimeout:
                description: |-
                  NodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine
                  hosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely.
                  Defaults to 10 seconds.
                type: string
              nodeDrainTimeout:
                description: |-
                  NodeDrainTimeout is the total amount of time that the controller will spend on draining a node.
                  The default value is 0, meaning that the node can be drained without any time limitations.
                  NOTE: NodeDrainTimeout is different from `kubectl drain --timeout`
                type: string
              nodeVolumeDetachTimeout:
                description: |-
                  NodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes
                  to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations.
                type: string
              providerID:
                description: |-
                  ProviderID is the identification ID of the machine provided by the provider.
                  This field must match the provider ID as seen on the node object corresponding to this machine.
                  This field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler
                  with cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out
                  machines at provider which could not get registered as Kubernetes nodes. With cluster-api as a
                  generic out-of-tree provider for autoscaler, this field is required by autoscaler to be
                  able to have a provider view of the list of machines. Another list of nodes is queried from the k8s apiserver
                  and then a comparison is done to find out unregistered machines and are marked for delete.
                  This field will be set by the actuators and consumed by higher level entities like autoscaler that will
                  be interfacing with cluster-api as generic provider.
                type: string
              version:
                description: |-
                  Version defines the desired Kubernetes version.
                  This field is meant to be optionally used by bootstrap providers.
                type: string
            required:
            - bootstrap
            - clusterName
            - infrastructureRef
            type: object
          status:
            description: MachineStatus defines the observed state of Machine.
            properties:
              addresses:
                description: |-
                  Addresses is a list of addresses assigned to the machine.
                  This field is copied from the infrastructure provider reference.
                items:
                  description: MachineAddress contains information for the node's
                    address.
                  properties:
                    address:
                      description: The machine address.
                      type: string
                    type:
                      description: Machine address type, one of Hostname, ExternalIP,
                        InternalIP, ExternalDNS or InternalDNS.
                      type: string
                  required:
                  - address
                  - type
                  type: object
                type: array
              bootstrapReady:
                description: BootstrapReady is the state of the bootstrap provider.
                type: boolean
              certificatesExpiryDate:
                description: |-
                  CertificatesExpiryDate is the expiry date of the machine certificates.
                  This value is only set for control plane machines.
                format: date-time
                type: string
              conditions:
                description: Conditions defines current service state of the Machine.
                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.
                        This should be when the underlying condition changed. If that is not known, then using the time when
                        the API field changed is acceptable.
                      format: date-time
                      type: string
                    message:
                      description: |-
                        A human readable message indicating details about the transition.
                        This field may be empty.
                      type: string
                    reason:
                      description: |-
                        The reason for the condition's last transition in CamelCase.
                        The specific API may choose whether or not this field is considered a guaranteed API.
                        This field may not be empty.
                      type: string
                    severity:
                      description: |-
                        Severity provides an explicit classification of Reason code, so the users or machines can immediately
                        understand the current situation and act accordingly.
                        The 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.
                        Many .condition.type values are consistent across resources like Available, but because arbitrary conditions
                        can be useful (see .node.status.conditions), the ability to deconflict is important.
                      type: string
                  required:
                  - lastTransitionTime
                  - status
                  - type
                  type: object
                type: array
              failureMessage:
                description: |-
                  FailureMessage will be set in the event that there is a terminal problem
                  reconciling the Machine and will contain a more verbose string suitable
                  for logging and human consumption.


                  This field should not be set for transitive errors that a controller
                  faces that are expected to be fixed automatically over
                  time (like service outages), but instead indicate that something is
                  fundamentally wrong with the Machine's spec or the configuration of
                  the controller, and that manual intervention is required. Examples
                  of terminal errors would be invalid combinations of settings in the
                  spec, values that are unsupported by the controller, or the
                  responsible controller itself being critically misconfigured.


                  Any transient errors that occur during the reconciliation of Machines
                  can be added as events to the Machine object and/or logged in the
                  controller's output.
                type: string
              failureReason:
                description: |-
                  FailureReason will be set in the event that there is a terminal problem
                  reconciling the Machine and will contain a succinct value suitable
                  for machine interpretation.


                  This field should not be set for transitive errors that a controller
                  faces that are expected to be fixed automatically over
                  time (like service outages), but instead indicate that something is
                  fundamentally wrong with the Machine's spec or the configuration of
                  the controller, and that manual intervention is required. Examples
                  of terminal errors would be invalid combinations of settings in the
                  spec, values that are unsupported by the controller, or the
                  responsible controller itself being critically misconfigured.


                  Any transient errors that occur during the reconciliation of Machines
                  can be added as events to the Machine object and/or logged in the
                  controller's output.
                type: string
              infrastructureReady:
                description: InfrastructureReady is the state of the infrastructure
                  provider.
                type: boolean
              lastUpdated:
                description: LastUpdated identifies when the phase of the Machine
                  last transitioned.
                format: date-time
                type: string
              nodeInfo:
                description: |-
                  NodeInfo is a set of ids/uuids to uniquely identify the node.
                  More info: https://kubernetes.io/docs/concepts/nodes/node/#info
                properties:
                  architecture:
                    description: The Architecture reported by the node
                    type: string
                  bootID:
                    description: Boot ID reported by the node.
                    type: string
                  containerRuntimeVersion:
                    description: ContainerRuntime Version reported by the node through
                      runtime remote API (e.g. containerd://1.4.2).
                    type: string
                  kernelVersion:
                    description: Kernel Version reported by the node from 'uname -r'
                      (e.g. 3.16.0-0.bpo.4-amd64).
                    type: string
                  kubeProxyVersion:
                    description: KubeProxy Version reported by the node.
                    type: string
                  kubeletVersion:
                    description: Kubelet Version reported by the node.
                    type: string
                  machineID:
                    description: |-
                      MachineID reported by the node. For unique machine identification
                      in the cluster this field is preferred. Learn more from man(5)
                      machine-id: http://man7.org/linux/man-pages/man5/machine-id.5.html
                    type: string
                  operatingSystem:
                    description: The Operating System reported by the node
                    type: string
                  osImage:
                    description: OS Image reported by the node from /etc/os-release
                      (e.g. Debian GNU/Linux 7 (wheezy)).
                    type: string
                  systemUUID:
                    description: |-
                      SystemUUID reported by the node. For unique machine identification
                      MachineID is preferred. This field is specific to Red Hat hosts
                      https://access.redhat.com/documentation/en-us/red_hat_subscription_management/1/html/rhsm/uuid
                    type: string
                required:
                - architecture
                - bootID
                - containerRuntimeVersion
                - kernelVersion
                - kubeProxyVersion
                - kubeletVersion
                - machineID
                - operatingSystem
                - osImage
                - systemUUID
                type: object
              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
                      should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                      For example, if the object reference is to a container within a pod, this would take on a value like:
                      "spec.containers{name}" (where "name" refers to the name of the container that triggered
                      the event) or if no container name is specified "spec.containers[2]" (container with
                      index 2 in this pod). This syntax is chosen only to have some well-defined way of
                      referencing a part of an object.
                      TODO: this design is not final and this field is subject to change in the future.
                    type: string
                  kind:
                    description: |-
                      Kind of the referent.
                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                    type: string
                  name:
                    description: |-
                      Name of the referent.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                    type: string
                  namespace:
                    description: |-
                      Namespace of the referent.
                      More 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.
                      More 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.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                    type: string
                type: object
                x-kubernetes-map-type: atomic
              observedGeneration:
                description: ObservedGeneration is the latest generation observed
                  by the controller.
                format: int64
                type: integer
              phase:
                description: |-
                  Phase represents the current phase of machine actuation.
                  E.g. Pending, Running, Terminating, Failed etc.
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: null
  storedVersions: null
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.15.0
    service.beta.openshift.io/inject-cabundle: "true"
  creationTimestamp: null
  labels:
    cluster.x-k8s.io/provider: cluster-api
    clusterctl.cluster.x-k8s.io: ""
  name: machinesets.cluster.x-k8s.io
spec:
  group: cluster.x-k8s.io
  names:
    categories:
    - cluster-api
    kind: MachineSet
    listKind: MachineSetList
    plural: machinesets
    shortNames:
    - ms
    singular: machineset
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: Total number of non-terminated machines targeted by this machineset
      jsonPath: .status.replicas
      name: Replicas
      type: integer
    - description: Total number of available machines (ready for at least minReadySeconds)
      jsonPath: .status.availableReplicas
      name: Available
      type: integer
    - description: Total number of ready machines targeted by this machineset.
      jsonPath: .status.readyReplicas
      name: Ready
      type: integer
    deprecated: true
    name: v1alpha3
    schema:
      openAPIV3Schema:
        description: |-
          MachineSet is the Schema for the machinesets API.


          Deprecated: This type will be removed in one of the next releases.
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More 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.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: MachineSetSpec defines the desired state of MachineSet.
            properties:
              clusterName:
                description: ClusterName is the name of the Cluster this object belongs
                  to.
                minLength: 1
                type: string
              deletePolicy:
                description: |-
                  DeletePolicy defines the policy used to identify nodes to delete when downscaling.
                  Defaults to "Random".  Valid values are "Random, "Newest", "Oldest"
                enum:
                - Random
                - Newest
                - Oldest
                type: string
              minReadySeconds:
                description: |-
                  MinReadySeconds is the minimum number of seconds for which a newly created machine should be ready.
                  Defaults to 0 (machine will be considered available as soon as it is ready)
                format: int32
                type: integer
              replicas:
                description: |-
                  Replicas is the number of desired replicas.
                  This is a pointer to distinguish between explicit zero and unspecified.
                  Defaults to 1.
                format: int32
                type: integer
              selector:
                description: |-
                  Selector is a label query over machines that should match the replica count.
                  Label keys and values that must match in order to be controlled by this MachineSet.
                  It must match the machine template's labels.
                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
                properties:
                  matchExpressions:
                    description: matchExpressions is a list of label selector requirements.
                      The requirements are ANDed.
                    items:
                      description: |-
                        A label selector requirement is a selector that contains values, a key, and an operator that
                        relates the key and values.
                      properties:
                        key:
                          description: key is the label key that the selector applies
                            to.
                          type: string
                        operator:
                          description: |-
                            operator represents a key's relationship to a set of values.
                            Valid operators are In, NotIn, Exists and DoesNotExist.
                          type: string
                        values:
                          description: |-
                            values is an array of string values. If the operator is In or NotIn,
                            the values array must be non-empty. If the operator is Exists or DoesNotExist,
                            the values array must be empty. This array is replaced during a strategic
                            merge patch.
                          items:
                            type: string
                          type: array
                          x-kubernetes-list-type: atomic
                      required:
                      - key
                      - operator
                      type: object
                    type: array
                    x-kubernetes-list-type: atomic
                  matchLabels:
                    additionalProperties:
                      type: string
                    description: |-
                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                      map is equivalent to an element of matchExpressions, whose key field is "key", the
                      operator is "In", and the values array contains only "value". The requirements are ANDed.
                    type: object
                type: object
                x-kubernetes-map-type: atomic
              template:
                description: |-
                  Template is the object that describes the machine that will be created if
                  insufficient replicas are detected.
                  Object references to custom resources are treated as templates.
                properties:
                  metadata:
                    description: |-
                      Standard object's metadata.
                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
                    properties:
                      annotations:
                        additionalProperties:
                          type: string
                        description: |-
                          Annotations is an unstructured key value map stored with a resource that may be
                          set by external tools to store and retrieve arbitrary metadata. They are not
                          queryable and should be preserved when modifying objects.
                          More info: http://kubernetes.io/docs/user-guide/annotations
                        type: object
                      generateName:
                        description: |-
                          GenerateName is an optional prefix, used by the server, to generate a unique
                          name ONLY IF the Name field has not been provided.
                          If this field is used, the name returned to the client will be different
                          than the name passed. This value will also be combined with a unique suffix.
                          The provided value has the same validation rules as the Name field,
                          and may be truncated by the length of the suffix required to make the value
                          unique on the server.


                          If this field is specified and the generated name exists, the server will
                          NOT return a 409 - instead, it will either return 201 Created or 500 with Reason
                          ServerTimeout indicating a unique name could not be found in the time allotted, and the client
                          should retry (optionally after the time indicated in the Retry-After header).


                          Applied only if Name is not specified.
                          More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency


                          Deprecated: This field has no function and is going to be removed in a next release.
                        type: string
                      labels:
                        additionalProperties:
                          type: string
                        description: |-
                          Map of string keys and values that can be used to organize and categorize
                          (scope and select) objects. May match selectors of replication controllers
                          and services.
                          More info: http://kubernetes.io/docs/user-guide/labels
                        type: object
                      name:
                        description: |-
                          Name must be unique within a namespace. Is required when creating resources, although
                          some resources may allow a client to request the generation of an appropriate name
                          automatically. Name is primarily intended for creation idempotence and configuration
                          definition.
                          Cannot be updated.
                          More info: http://kubernetes.io/docs/user-guide/identifiers#names


                          Deprecated: This field has no function and is going to be removed in a next release.
                        type: string
                      namespace:
                        description: |-
                          Namespace defines the space within each name must be unique. An empty namespace is
                          equivalent to the "default" namespace, but "default" is the canonical representation.
                          Not all objects are required to be scoped to a namespace - the value of this field for
                          those objects will be empty.


                          Must be a DNS_LABEL.
                          Cannot be updated.
                          More info: http://kubernetes.io/docs/user-guide/namespaces


                          Deprecated: This field has no function and is going to be removed in a next release.
                        type: string
                      ownerReferences:
                        description: |-
                          List of objects depended by this object. If ALL objects in the list have
                          been deleted, this object will be garbage collected. If this object is managed by a controller,
                          then an entry in this list will point to this controller, with the controller field set to true.
                          There cannot be more than one managing controller.


                          Deprecated: This field has no function and is going to be removed in a next release.
                        items:
                          description: |-
                            OwnerReference contains enough information to let you identify an owning
                            object. An owning object must be in the same namespace as the dependent, or
                            be cluster-scoped, so there is no namespace field.
                          properties:
                            apiVersion:
                              description: API version of the referent.
                              type: string
                            blockOwnerDeletion:
                              description: |-
                                If true, AND if the owner has the "foregroundDeletion" finalizer, then
                                the owner cannot be deleted from the key-value store until this
                                reference is removed.
                                See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion
                                for how the garbage collector interacts with this field and enforces the foreground deletion.
                                Defaults to false.
                                To set this field, a user needs "delete" permission of the owner,
                                otherwise 422 (Unprocessable Entity) will be returned.
                              type: boolean
                            controller:
                              description: If true, this reference points to the managing
                                controller.
                              type: boolean
                            kind:
                              description: |-
                                Kind of the referent.
                                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                              type: string
                            name:
                              description: |-
                                Name of the referent.
                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names
                              type: string
                            uid:
                              description: |-
                                UID of the referent.
                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids
                              type: string
                          required:
                          - apiVersion
                          - kind
                          - name
                          - uid
                          type: object
                          x-kubernetes-map-type: atomic
                        type: array
                    type: object
                  spec:
                    description: |-
                      Specification of the desired behavior of the machine.
                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
                    properties:
                      bootstrap:
                        description: |-
                          Bootstrap is a reference to a local struct which encapsulates
                          fields to configure the Machine’s bootstrapping mechanism.
                        properties:
                          configRef:
                            description: |-
                              ConfigRef is a reference to a bootstrap provider-specific resource
                              that holds configuration details. The reference is optional to
                              allow users/operators to specify Bootstrap.Data without
                              the need of a controller.
                            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
                                  should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                                  For example, if the object reference is to a container within a pod, this would take on a value like:
                                  "spec.containers{name}" (where "name" refers to the name of the container that triggered
                                  the event) or if no container name is specified "spec.containers[2]" (container with
                                  index 2 in this pod). This syntax is chosen only to have some well-defined way of
                                  referencing a part of an object.
                                  TODO: this design is not final and this field is subject to change in the future.
                                type: string
                              kind:
                                description: |-
                                  Kind of the referent.
                                  More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                                type: string
                              name:
                                description: |-
                                  Name of the referent.
                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                type: string
                              namespace:
                                description: |-
                                  Namespace of the referent.
                                  More 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.
                                  More 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.
                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                                type: string
                            type: object
                            x-kubernetes-map-type: atomic
                          data:
                            description: |-
                              Data contains the bootstrap data, such as cloud-init details scripts.
                              If nil, the Machine should remain in the Pending state.


                              Deprecated: Switch to DataSecretName.
                            type: string
                          dataSecretName:
                            description: |-
                              DataSecretName is the name of the secret that stores the bootstrap data script.
                              If nil, the Machine should remain in the Pending state.
                            type: string
                        type: object
                      clusterName:
                        description: ClusterName is the name of the Cluster this object
                          belongs to.
                        minLength: 1
                        type: string
                      failureDomain:
                        description: |-
                          FailureDomain is the failure domain the machine will be created in.
                          Must match a key in the FailureDomains map stored on the cluster object.
                        type: string
                      infrastructureRef:
                        description: |-
                          InfrastructureRef is a required reference to a custom resource
                          offered by an infrastructure provider.
                        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
                              should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                              For example, if the object reference is to a container within a pod, this would take on a value like:
                              "spec.containers{name}" (where "name" refers to the name of the container that triggered
                              the event) or if no container name is specified "spec.containers[2]" (container with
                              index 2 in this pod). This syntax is chosen only to have some well-defined way of
                              referencing a part of an object.
                              TODO: this design is not final and this field is subject to change in the future.
                            type: string
                          kind:
                            description: |-
                              Kind of the referent.
                              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                            type: string
                          name:
                            description: |-
                              Name of the referent.
                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                            type: string
                          namespace:
                            description: |-
                              Namespace of the referent.
                              More 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.
                              More 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.
                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                            type: string
                        type: object
                        x-kubernetes-map-type: atomic
                      nodeDrainTimeout:
                        description: |-
                          NodeDrainTimeout is the total amount of time that the controller will spend on draining a node.
                          The default value is 0, meaning that the node can be drained without any time limitations.
                          NOTE: NodeDrainTimeout is different from `kubectl drain --timeout`
                        type: string
                      providerID:
                        description: |-
                          ProviderID is the identification ID of the machine provided by the provider.
                          This field must match the provider ID as seen on the node object corresponding to this machine.
                          This field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler
                          with cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out
                          machines at provider which could not get registered as Kubernetes nodes. With cluster-api as a
                          generic out-of-tree provider for autoscaler, this field is required by autoscaler to be
                          able to have a provider view of the list of machines. Another list of nodes is queried from the k8s apiserver
                          and then a comparison is done to find out unregistered machines and are marked for delete.
                          This field will be set by the actuators and consumed by higher level entities like autoscaler that will
                          be interfacing with cluster-api as generic provider.
                        type: string
                      version:
                        description: |-
                          Version defines the desired Kubernetes version.
                          This field is meant to be optionally used by bootstrap providers.
                        type: string
                    required:
                    - bootstrap
                    - clusterName
                    - infrastructureRef
                    type: object
                type: object
            required:
            - clusterName
            - selector
            type: object
          status:
            description: MachineSetStatus defines the observed state of MachineSet.
            properties:
              availableReplicas:
                description: The number of available replicas (ready for at least
                  minReadySeconds) for this MachineSet.
                format: int32
                type: integer
              failureMessage:
                type: string
              failureReason:
                description: |-
                  In the event that there is a terminal problem reconciling the
                  replicas, both FailureReason and FailureMessage will be set. FailureReason
                  will be populated with a succinct value suitable for machine
                  interpretation, while FailureMessage will contain a more verbose
                  string suitable for logging and human consumption.


                  These fields should not be set for transitive errors that a
                  controller faces that are expected to be fixed automatically over
                  time (like service outages), but instead indicate that something is
                  fundamentally wrong with the MachineTemplate's spec or the configuration of
                  the machine controller, and that manual intervention is required. Examples
                  of terminal errors would be invalid combinations of settings in the
                  spec, values that are unsupported by the machine controller, or the
                  responsible machine controller itself being critically misconfigured.


                  Any transient errors that occur during the reconciliation of Machines
                  can be added as events to the MachineSet object and/or logged in the
                  controller's output.
                type: string
              fullyLabeledReplicas:
                description: The number of replicas that have labels matching the
                  labels of the machine template of the MachineSet.
                format: int32
                type: integer
              observedGeneration:
                description: ObservedGeneration reflects the generation of the most
                  recently observed MachineSet.
                format: int64
                type: integer
              readyReplicas:
                description: The number of ready replicas for this MachineSet. A machine
                  is considered ready when the node has been created and is "Ready".
                format: int32
                type: integer
              replicas:
                description: Replicas is the most recently observed number of replicas.
                format: int32
                type: integer
              selector:
                description: |-
                  Selector is the same as the label selector but in the string format to avoid introspection
                  by clients. The string will be in the same format as the query-param syntax.
                  More info about label selectors: http://kubernetes.io/docs/user-guide/labels#label-selectors
                type: string
            type: object
        type: object
    served: false
    storage: false
    subresources:
      scale:
        labelSelectorPath: .status.selector
        specReplicasPath: .spec.replicas
        statusReplicasPath: .status.replicas
      status: {}
  - additionalPrinterColumns:
    - description: Cluster
      jsonPath: .spec.clusterName
      name: Cluster
      type: string
    - description: Time duration since creation of MachineSet
      jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    - description: Total number of non-terminated machines targeted by this machineset
      jsonPath: .status.replicas
      name: Replicas
      type: integer
    - description: Total number of available machines (ready for at least minReadySeconds)
      jsonPath: .status.availableReplicas
      name: Available
      type: integer
    - description: Total number of ready machines targeted by this machineset.
      jsonPath: .status.readyReplicas
      name: Ready
      type: integer
    deprecated: true
    name: v1alpha4
    schema:
      openAPIV3Schema:
        description: |-
          MachineSet is the Schema for the machinesets API.


          Deprecated: This type will be removed in one of the next releases.
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More 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.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: MachineSetSpec defines the desired state of MachineSet.
            properties:
              clusterName:
                description: ClusterName is the name of the Cluster this object belongs
                  to.
                minLength: 1
                type: string
              deletePolicy:
                description: |-
                  DeletePolicy defines the policy used to identify nodes to delete when downscaling.
                  Defaults to "Random".  Valid values are "Random, "Newest", "Oldest"
                enum:
                - Random
                - Newest
                - Oldest
                type: string
              minReadySeconds:
                description: |-
                  MinReadySeconds is the minimum number of seconds for which a newly created machine should be ready.
                  Defaults to 0 (machine will be considered available as soon as it is ready)
                format: int32
                type: integer
              replicas:
                default: 1
                description: |-
                  Replicas is the number of desired replicas.
                  This is a pointer to distinguish between explicit zero and unspecified.
                  Defaults to 1.
                format: int32
                type: integer
              selector:
                description: |-
                  Selector is a label query over machines that should match the replica count.
                  Label keys and values that must match in order to be controlled by this MachineSet.
                  It must match the machine template's labels.
                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
                properties:
                  matchExpressions:
                    description: matchExpressions is a list of label selector requirements.
                      The requirements are ANDed.
                    items:
                      description: |-
                        A label selector requirement is a selector that contains values, a key, and an operator that
                        relates the key and values.
                      properties:
                        key:
                          description: key is the label key that the selector applies
                            to.
                          type: string
                        operator:
                          description: |-
                            operator represents a key's relationship to a set of values.
                            Valid operators are In, NotIn, Exists and DoesNotExist.
                          type: string
                        values:
                          description: |-
                            values is an array of string values. If the operator is In or NotIn,
                            the values array must be non-empty. If the operator is Exists or DoesNotExist,
                            the values array must be empty. This array is replaced during a strategic
                            merge patch.
                          items:
                            type: string
                          type: array
                          x-kubernetes-list-type: atomic
                      required:
                      - key
                      - operator
                      type: object
                    type: array
                    x-kubernetes-list-type: atomic
                  matchLabels:
                    additionalProperties:
                      type: string
                    description: |-
                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                      map is equivalent to an element of matchExpressions, whose key field is "key", the
                      operator is "In", and the values array contains only "value". The requirements are ANDed.
                    type: object
                type: object
                x-kubernetes-map-type: atomic
              template:
                description: |-
                  Template is the object that describes the machine that will be created if
                  insufficient replicas are detected.
                  Object references to custom resources are treated as templates.
                properties:
                  metadata:
                    description: |-
                      Standard object's metadata.
                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
                    properties:
                      annotations:
                        additionalProperties:
                          type: string
                        description: |-
                          Annotations is an unstructured key value map stored with a resource that may be
                          set by external tools to store and retrieve arbitrary metadata. They are not
                          queryable and should be preserved when modifying objects.
                          More info: http://kubernetes.io/docs/user-guide/annotations
                        type: object
                      labels:
                        additionalProperties:
                          type: string
                        description: |-
                          Map of string keys and values that can be used to organize and categorize
                          (scope and select) objects. May match selectors of replication controllers
                          and services.
                          More info: http://kubernetes.io/docs/user-guide/labels
                        type: object
                    type: object
                  spec:
                    description: |-
                      Specification of the desired behavior of the machine.
                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
                    properties:
                      bootstrap:
                        description: |-
                          Bootstrap is a reference to a local struct which encapsulates
                          fields to configure the Machine’s bootstrapping mechanism.
                        properties:
                          configRef:
                            description: |-
                              ConfigRef is a reference to a bootstrap provider-specific resource
                              that holds configuration details. The reference is optional to
                              allow users/operators to specify Bootstrap.DataSecretName without
                              the need of a controller.
                            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
                                  should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                                  For example, if the object reference is to a container within a pod, this would take on a value like:
                                  "spec.containers{name}" (where "name" refers to the name of the container that triggered
                                  the event) or if no container name is specified "spec.containers[2]" (container with
                                  index 2 in this pod). This syntax is chosen only to have some well-defined way of
                                  referencing a part of an object.
                                  TODO: this design is not final and this field is subject to change in the future.
                                type: string
                              kind:
                                description: |-
                                  Kind of the referent.
                                  More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                                type: string
                              name:
                                description: |-
                                  Name of the referent.
                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                type: string
                              namespace:
                                description: |-
                                  Namespace of the referent.
                                  More 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.
                                  More 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.
                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                                type: string
                            type: object
                            x-kubernetes-map-type: atomic
                          dataSecretName:
                            description: |-
                              DataSecretName is the name of the secret that stores the bootstrap data script.
                              If nil, the Machine should remain in the Pending state.
                            type: string
                        type: object
                      clusterName:
                        description: ClusterName is the name of the Cluster this object
                          belongs to.
                        minLength: 1
                        type: string
                      failureDomain:
                        description: |-
                          FailureDomain is the failure domain the machine will be created in.
                          Must match a key in the FailureDomains map stored on the cluster object.
                        type: string
                      infrastructureRef:
                        description: |-
                          InfrastructureRef is a required reference to a custom resource
                          offered by an infrastructure provider.
                        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
                              should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                              For example, if the object reference is to a container within a pod, this would take on a value like:
                              "spec.containers{name}" (where "name" refers to the name of the container that triggered
                              the event) or if no container name is specified "spec.containers[2]" (container with
                              index 2 in this pod). This syntax is chosen only to have some well-defined way of
                              referencing a part of an object.
                              TODO: this design is not final and this field is subject to change in the future.
                            type: string
                          kind:
                            description: |-
                              Kind of the referent.
                              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                            type: string
                          name:
                            description: |-
                              Name of the referent.
                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                            type: string
                          namespace:
                            description: |-
                              Namespace of the referent.
                              More 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.
                              More 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.
                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                            type: string
                        type: object
                        x-kubernetes-map-type: atomic
                      nodeDrainTimeout:
                        description: |-
                          NodeDrainTimeout is the total amount of time that the controller will spend on draining a node.
                          The default value is 0, meaning that the node can be drained without any time limitations.
                          NOTE: NodeDrainTimeout is different from `kubectl drain --timeout`
                        type: string
                      providerID:
                        description: |-
                          ProviderID is the identification ID of the machine provided by the provider.
                          This field must match the provider ID as seen on the node object corresponding to this machine.
                          This field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler
                          with cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out
                          machines at provider which could not get registered as Kubernetes nodes. With cluster-api as a
                          generic out-of-tree provider for autoscaler, this field is required by autoscaler to be
                          able to have a provider view of the list of machines. Another list of nodes is queried from the k8s apiserver
                          and then a comparison is done to find out unregistered machines and are marked for delete.
                          This field will be set by the actuators and consumed by higher level entities like autoscaler that will
                          be interfacing with cluster-api as generic provider.
                        type: string
                      version:
                        description: |-
                          Version defines the desired Kubernetes version.
                          This field is meant to be optionally used by bootstrap providers.
                        type: string
                    required:
                    - bootstrap
                    - clusterName
                    - infrastructureRef
                    type: object
                type: object
            required:
            - clusterName
            - selector
            type: object
          status:
            description: MachineSetStatus defines the observed state of MachineSet.
            properties:
              availableReplicas:
                description: The number of available replicas (ready for at least
                  minReadySeconds) for this MachineSet.
                format: int32
                type: integer
              conditions:
                description: Conditions defines current service state of the MachineSet.
                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.
                        This should be when the underlying condition changed. If that is not known, then using the time when
                        the API field changed is acceptable.
                      format: date-time
                      type: string
                    message:
                      description: |-
                        A human readable message indicating details about the transition.
                        This field may be empty.
                      type: string
                    reason:
                      description: |-
                        The reason for the condition's last transition in CamelCase.
                        The specific API may choose whether or not this field is considered a guaranteed API.
                        This field may not be empty.
                      type: string
                    severity:
                      description: |-
                        Severity provides an explicit classification of Reason code, so the users or machines can immediately
                        understand the current situation and act accordingly.
                        The 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.
                        Many .condition.type values are consistent across resources like Available, but because arbitrary conditions
                        can be useful (see .node.status.conditions), the ability to deconflict is important.
                      type: string
                  required:
                  - status
                  - type
                  type: object
                type: array
              failureMessage:
                type: string
              failureReason:
                description: |-
                  In the event that there is a terminal problem reconciling the
                  replicas, both FailureReason and FailureMessage will be set. FailureReason
                  will be populated with a succinct value suitable for machine
                  interpretation, while FailureMessage will contain a more verbose
                  string suitable for logging and human consumption.


                  These fields should not be set for transitive errors that a
                  controller faces that are expected to be fixed automatically over
                  time (like service outages), but instead indicate that something is
                  fundamentally wrong with the MachineTemplate's spec or the configuration of
                  the machine controller, and that manual intervention is required. Examples
                  of terminal errors would be invalid combinations of settings in the
                  spec, values that are unsupported by the machine controller, or the
                  responsible machine controller itself being critically misconfigured.


                  Any transient errors that occur during the reconciliation of Machines
                  can be added as events to the MachineSet object and/or logged in the
                  controller's output.
                type: string
              fullyLabeledReplicas:
                description: The number of replicas that have labels matching the
                  labels of the machine template of the MachineSet.
                format: int32
                type: integer
              observedGeneration:
                description: ObservedGeneration reflects the generation of the most
                  recently observed MachineSet.
                format: int64
                type: integer
              readyReplicas:
                description: The number of ready replicas for this MachineSet. A machine
                  is considered ready when the node has been created and is "Ready".
                format: int32
                type: integer
              replicas:
                description: Replicas is the most recently observed number of replicas.
                format: int32
                type: integer
              selector:
                description: |-
                  Selector is the same as the label selector but in the string format to avoid introspection
                  by clients. The string will be in the same format as the query-param syntax.
                  More info about label selectors: http://kubernetes.io/docs/user-guide/labels#label-selectors
                type: string
            type: object
        type: object
    served: false
    storage: false
    subresources:
      scale:
        labelSelectorPath: .status.selector
        specReplicasPath: .spec.replicas
        statusReplicasPath: .status.replicas
      status: {}
  - additionalPrinterColumns:
    - description: Cluster
      jsonPath: .spec.clusterName
      name: Cluster
      type: string
    - description: Total number of machines desired by this machineset
      jsonPath: .spec.replicas
      name: Desired
      priority: 10
      type: integer
    - description: Total number of non-terminated machines targeted by this machineset
      jsonPath: .status.replicas
      name: Replicas
      type: integer
    - description: Total number of ready machines targeted by this machineset.
      jsonPath: .status.readyReplicas
      name: Ready
      type: integer
    - description: Total number of available machines (ready for at least minReadySeconds)
      jsonPath: .status.availableReplicas
      name: Available
      type: integer
    - description: Time duration since creation of MachineSet
      jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    - description: Kubernetes version associated with this MachineSet
      jsonPath: .spec.template.spec.version
      name: Version
      type: string
    name: v1beta1
    schema:
      openAPIV3Schema:
        description: MachineSet is the Schema for the machinesets API.
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More 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.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: MachineSetSpec defines the desired state of MachineSet.
            properties:
              clusterName:
                description: ClusterName is the name of the Cluster this object belongs
                  to.
                minLength: 1
                type: string
              deletePolicy:
                description: |-
                  DeletePolicy defines the policy used to identify nodes to delete when downscaling.
                  Defaults to "Random".  Valid values are "Random, "Newest", "Oldest"
                enum:
                - Random
                - Newest
                - Oldest
                type: string
              minReadySeconds:
                description: |-
                  MinReadySeconds is the minimum number of seconds for which a Node for a newly created machine should be ready before considering the replica available.
                  Defaults to 0 (machine will be considered available as soon as the Node is ready)
                format: int32
                type: integer
              replicas:
                description: |-
                  Replicas is the number of desired replicas.
                  This is a pointer to distinguish between explicit zero and unspecified.


                  Defaults to:
                  * if the Kubernetes autoscaler min size and max size annotations are set:
                    - if it's a new MachineSet, use min size
                    - if the replicas field of the old MachineSet is < min size, use min size
                    - if the replicas field of the old MachineSet is > max size, use max size
                    - if the replicas field of the old MachineSet is in the (min size, max size) range, keep the value from the oldMS
                  * otherwise use 1
                  Note: Defaulting will be run whenever the replicas field is not set:
                  * A new MachineSet is created with replicas not set.
                  * On an existing MachineSet the replicas field was first set and is now unset.
                  Those cases are especially relevant for the following Kubernetes autoscaler use cases:
                  * A new MachineSet is created and replicas should be managed by the autoscaler
                  * An existing MachineSet which initially wasn't controlled by the autoscaler
                    should be later controlled by the autoscaler
                format: int32
                type: integer
              selector:
                description: |-
                  Selector is a label query over machines that should match the replica count.
                  Label keys and values that must match in order to be controlled by this MachineSet.
                  It must match the machine template's labels.
                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
                properties:
                  matchExpressions:
                    description: matchExpressions is a list of label selector requirements.
                      The requirements are ANDed.
                    items:
                      description: |-
                        A label selector requirement is a selector that contains values, a key, and an operator that
                        relates the key and values.
                      properties:
                        key:
                          description: key is the label key that the selector applies
                            to.
                          type: string
                        operator:
                          description: |-
                            operator represents a key's relationship to a set of values.
                            Valid operators are In, NotIn, Exists and DoesNotExist.
                          type: string
                        values:
                          description: |-
                            values is an array of string values. If the operator is In or NotIn,
                            the values array must be non-empty. If the operator is Exists or DoesNotExist,
                            the values array must be empty. This array is replaced during a strategic
                            merge patch.
                          items:
                            type: string
                          type: array
                          x-kubernetes-list-type: atomic
                      required:
                      - key
                      - operator
                      type: object
                    type: array
                    x-kubernetes-list-type: atomic
                  matchLabels:
                    additionalProperties:
                      type: string
                    description: |-
                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                      map is equivalent to an element of matchExpressions, whose key field is "key", the
                      operator is "In", and the values array contains only "value". The requirements are ANDed.
                    type: object
                type: object
                x-kubernetes-map-type: atomic
              template:
                description: |-
                  Template is the object that describes the machine that will be created if
                  insufficient replicas are detected.
                  Object references to custom resources are treated as templates.
                properties:
                  metadata:
                    description: |-
                      Standard object's metadata.
                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
                    properties:
                      annotations:
                        additionalProperties:
                          type: string
                        description: |-
                          Annotations is an unstructured key value map stored with a resource that may be
                          set by external tools to store and retrieve arbitrary metadata. They are not
                          queryable and should be preserved when modifying objects.
                          More info: http://kubernetes.io/docs/user-guide/annotations
                        type: object
                      labels:
                        additionalProperties:
                          type: string
                        description: |-
                          Map of string keys and values that can be used to organize and categorize
                          (scope and select) objects. May match selectors of replication controllers
                          and services.
                          More info: http://kubernetes.io/docs/user-guide/labels
                        type: object
                    type: object
                  spec:
                    description: |-
                      Specification of the desired behavior of the machine.
                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
                    properties:
                      bootstrap:
                        description: |-
                          Bootstrap is a reference to a local struct which encapsulates
                          fields to configure the Machine’s bootstrapping mechanism.
                        properties:
                          configRef:
                            description: |-
                              ConfigRef is a reference to a bootstrap provider-specific resource
                              that holds configuration details. The reference is optional to
                              allow users/operators to specify Bootstrap.DataSecretName without
                              the need of a controller.
                            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
                                  should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                                  For example, if the object reference is to a container within a pod, this would take on a value like:
                                  "spec.containers{name}" (where "name" refers to the name of the container that triggered
                                  the event) or if no container name is specified "spec.containers[2]" (container with
                                  index 2 in this pod). This syntax is chosen only to have some well-defined way of
                                  referencing a part of an object.
                                  TODO: this design is not final and this field is subject to change in the future.
                                type: string
                              kind:
                                description: |-
                                  Kind of the referent.
                                  More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                                type: string
                              name:
                                description: |-
                                  Name of the referent.
                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                type: string
                              namespace:
                                description: |-
                                  Namespace of the referent.
                                  More 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.
                                  More 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.
                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                                type: string
                            type: object
                            x-kubernetes-map-type: atomic
                          dataSecretName:
                            description: |-
                              DataSecretName is the name of the secret that stores the bootstrap data script.
                              If nil, the Machine should remain in the Pending state.
                            type: string
                        type: object
                      clusterName:
                        description: ClusterName is the name of the Cluster this object
                          belongs to.
                        minLength: 1
                        type: string
                      failureDomain:
                        description: |-
                          FailureDomain is the failure domain the machine will be created in.
                          Must match a key in the FailureDomains map stored on the cluster object.
                        type: string
                      infrastructureRef:
                        description: |-
                          InfrastructureRef is a required reference to a custom resource
                          offered by an infrastructure provider.
                        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
                              should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                              For example, if the object reference is to a container within a pod, this would take on a value like:
                              "spec.containers{name}" (where "name" refers to the name of the container that triggered
                              the event) or if no container name is specified "spec.containers[2]" (container with
                              index 2 in this pod). This syntax is chosen only to have some well-defined way of
                              referencing a part of an object.
                              TODO: this design is not final and this field is subject to change in the future.
                            type: string
                          kind:
                            description: |-
                              Kind of the referent.
                              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                            type: string
                          name:
                            description: |-
                              Name of the referent.
                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                            type: string
                          namespace:
                            description: |-
                              Namespace of the referent.
                              More 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.
                              More 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.
                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                            type: string
                        type: object
                        x-kubernetes-map-type: atomic
                      nodeDeletionTimeout:
                        description: |-
                          NodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine
                          hosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely.
                          Defaults to 10 seconds.
                        type: string
                      nodeDrainTimeout:
                        description: |-
                          NodeDrainTimeout is the total amount of time that the controller will spend on draining a node.
                          The default value is 0, meaning that the node can be drained without any time limitations.
                          NOTE: NodeDrainTimeout is different from `kubectl drain --timeout`
                        type: string
                      nodeVolumeDetachTimeout:
                        description: |-
                          NodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes
                          to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations.
                        type: string
                      providerID:
                        description: |-
                          ProviderID is the identification ID of the machine provided by the provider.
                          This field must match the provider ID as seen on the node object corresponding to this machine.
                          This field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler
                          with cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out
                          machines at provider which could not get registered as Kubernetes nodes. With cluster-api as a
                          generic out-of-tree provider for autoscaler, this field is required by autoscaler to be
                          able to have a provider view of the list of machines. Another list of nodes is queried from the k8s apiserver
                          and then a comparison is done to find out unregistered machines and are marked for delete.
                          This field will be set by the actuators and consumed by higher level entities like autoscaler that will
                          be interfacing with cluster-api as generic provider.
                        type: string
                      version:
                        description: |-
                          Version defines the desired Kubernetes version.
                          This field is meant to be optionally used by bootstrap providers.
                        type: string
                    required:
                    - bootstrap
                    - clusterName
                    - infrastructureRef
                    type: object
                type: object
            required:
            - clusterName
            - selector
            type: object
          status:
            description: MachineSetStatus defines the observed state of MachineSet.
            properties:
              availableReplicas:
                description: The number of available replicas (ready for at least
                  minReadySeconds) for this MachineSet.
                format: int32
                type: integer
              conditions:
                description: Conditions defines current service state of the MachineSet.
                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.
                        This should be when the underlying condition changed. If that is not known, then using the time when
                        the API field changed is acceptable.
                      format: date-time
                      type: string
                    message:
                      description: |-
                        A human readable message indicating details about the transition.
                        This field may be empty.
                      type: string
                    reason:
                      description: |-
                        The reason for the condition's last transition in CamelCase.
                        The specific API may choose whether or not this field is considered a guaranteed API.
                        This field may not be empty.
                      type: string
                    severity:
                      description: |-
                        Severity provides an explicit classification of Reason code, so the users or machines can immediately
                        understand the current situation and act accordingly.
                        The 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.
                        Many .condition.type values are consistent across resources like Available, but because arbitrary conditions
                        can be useful (see .node.status.conditions), the ability to deconflict is important.
                      type: string
                  required:
                  - lastTransitionTime
                  - status
                  - type
                  type: object
                type: array
              failureMessage:
                type: string
              failureReason:
                description: |-
                  In the event that there is a terminal problem reconciling the
                  replicas, both FailureReason and FailureMessage will be set. FailureReason
                  will be populated with a succinct value suitable for machine
                  interpretation, while FailureMessage will contain a more verbose
                  string suitable for logging and human consumption.


                  These fields should not be set for transitive errors that a
                  controller faces that are expected to be fixed automatically over
                  time (like service outages), but instead indicate that something is
                  fundamentally wrong with the MachineTemplate's spec or the configuration of
                  the machine controller, and that manual intervention is required. Examples
                  of terminal errors would be invalid combinations of settings in the
                  spec, values that are unsupported by the machine controller, or the
                  responsible machine controller itself being critically misconfigured.


                  Any transient errors that occur during the reconciliation of Machines
                  can be added as events to the MachineSet object and/or logged in the
                  controller's output.
                type: string
              fullyLabeledReplicas:
                description: The number of replicas that have labels matching the
                  labels of the machine template of the MachineSet.
                format: int32
                type: integer
              observedGeneration:
                description: ObservedGeneration reflects the generation of the most
                  recently observed MachineSet.
                format: int64
                type: integer
              readyReplicas:
                description: The number of ready replicas for this MachineSet. A machine
                  is considered ready when the node has been created and is "Ready".
                format: int32
                type: integer
              replicas:
                description: Replicas is the most recently observed number of replicas.
                format: int32
                type: integer
              selector:
                description: |-
                  Selector is the same as the label selector but in the string format to avoid introspection
                  by clients. The string will be in the same format as the query-param syntax.
                  More info about label selectors: http://kubernetes.io/docs/user-guide/labels#label-selectors
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      scale:
        labelSelectorPath: .status.selector
        specReplicasPath: .spec.replicas
        statusReplicasPath: .status.replicas
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: null
  storedVersions: null
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.15.0
    service.beta.openshift.io/inject-cabundle: "true"
  creationTimestamp: null
  labels:
    cluster.x-k8s.io/provider: cluster-api
    clusterctl.cluster.x-k8s.io: ""
  name: machinedeployments.cluster.x-k8s.io
spec:
  group: cluster.x-k8s.io
  names:
    categories:
    - cluster-api
    kind: MachineDeployment
    listKind: MachineDeploymentList
    plural: machinedeployments
    shortNames:
    - md
    singular: machinedeployment
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: MachineDeployment status such as ScalingUp/ScalingDown/Running/Failed/Unknown
      jsonPath: .status.phase
      name: Phase
      type: string
    - description: Total number of non-terminated machines targeted by this MachineDeployment
      jsonPath: .status.replicas
      name: Replicas
      type: integer
    - description: Total number of ready machines targeted by this MachineDeployment
      jsonPath: .status.readyReplicas
      name: Ready
      type: integer
    - description: Total number of non-terminated machines targeted by this deployment
        that have the desired template spec
      jsonPath: .status.updatedReplicas
      name: Updated
      type: integer
    - description: Total number of unavailable machines targeted by this MachineDeployment
      jsonPath: .status.unavailableReplicas
      name: Unavailable
      type: integer
    deprecated: true
    name: v1alpha3
    schema:
      openAPIV3Schema:
        description: |-
          MachineDeployment is the Schema for the machinedeployments API.


          Deprecated: This type will be removed in one of the next releases.
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More 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.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: MachineDeploymentSpec defines the desired state of MachineDeployment.
            properties:
              clusterName:
                description: ClusterName is the name of the Cluster this object belongs
                  to.
                minLength: 1
                type: string
              minReadySeconds:
                description: |-
                  Minimum number of seconds for which a newly created machine should
                  be ready.
                  Defaults to 0 (machine will be considered available as soon as it
                  is ready)
                format: int32
                type: integer
              paused:
                description: Indicates that the deployment is paused.
                type: boolean
              progressDeadlineSeconds:
                description: |-
                  The maximum time in seconds for a deployment to make progress before it
                  is considered to be failed. The deployment controller will continue to
                  process failed deployments and a condition with a ProgressDeadlineExceeded
                  reason will be surfaced in the deployment status. Note that progress will
                  not be estimated during the time a deployment is paused. Defaults to 600s.
                format: int32
                type: integer
              replicas:
                description: |-
                  Number of desired machines. Defaults to 1.
                  This is a pointer to distinguish between explicit zero and not specified.
                format: int32
                type: integer
              revisionHistoryLimit:
                description: |-
                  The number of old MachineSets to retain to allow rollback.
                  This is a pointer to distinguish between explicit zero and not specified.
                  Defaults to 1.
                format: int32
                type: integer
              selector:
                description: |-
                  Label selector for machines. Existing MachineSets whose machines are
                  selected by this will be the ones affected by this deployment.
                  It must match the machine template's labels.
                properties:
                  matchExpressions:
                    description: matchExpressions is a list of label selector requirements.
                      The requirements are ANDed.
                    items:
                      description: |-
                        A label selector requirement is a selector that contains values, a key, and an operator that
                        relates the key and values.
                      properties:
                        key:
                          description: key is the label key that the selector applies
                            to.
                          type: string
                        operator:
                          description: |-
                            operator represents a key's relationship to a set of values.
                            Valid operators are In, NotIn, Exists and DoesNotExist.
                          type: string
                        values:
                          description: |-
                            values is an array of string values. If the operator is In or NotIn,
                            the values array must be non-empty. If the operator is Exists or DoesNotExist,
                            the values array must be empty. This array is replaced during a strategic
                            merge patch.
                          items:
                            type: string
                          type: array
                          x-kubernetes-list-type: atomic
                      required:
                      - key
                      - operator
                      type: object
                    type: array
                    x-kubernetes-list-type: atomic
                  matchLabels:
                    additionalProperties:
                      type: string
                    description: |-
                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                      map is equivalent to an element of matchExpressions, whose key field is "key", the
                      operator is "In", and the values array contains only "value". The requirements are ANDed.
                    type: object
                type: object
                x-kubernetes-map-type: atomic
              strategy:
                description: |-
                  The deployment strategy to use to replace existing machines with
                  new ones.
                properties:
                  rollingUpdate:
                    description: |-
                      Rolling update config params. Present only if
                      MachineDeploymentStrategyType = RollingUpdate.
                    properties:
                      maxSurge:
                        anyOf:
                        - type: integer
                        - type: string
                        description: |-
                          The maximum number of machines that can be scheduled above the
                          desired number of machines.
                          Value can be an absolute number (ex: 5) or a percentage of
                          desired machines (ex: 10%).
                          This can not be 0 if MaxUnavailable is 0.
                          Absolute number is calculated from percentage by rounding up.
                          Defaults to 1.
                          Example: when this is set to 30%, the new MachineSet can be scaled
                          up immediately when the rolling update starts, such that the total
                          number of old and new machines do not exceed 130% of desired
                          machines. Once old machines have been killed, new MachineSet can
                          be scaled up further, ensuring that total number of machines running
                          at any time during the update is at most 130% of desired machines.
                        x-kubernetes-int-or-string: true
                      maxUnavailable:
                        anyOf:
                        - type: integer
                        - type: string
                        description: |-
                          The maximum number of machines that can be unavailable during the update.
                          Value can be an absolute number (ex: 5) or a percentage of desired
                          machines (ex: 10%).
                          Absolute number is calculated from percentage by rounding down.
                          This can not be 0 if MaxSurge is 0.
                          Defaults to 0.
                          Example: when this is set to 30%, the old MachineSet can be scaled
                          down to 70% of desired machines immediately when the rolling update
                          starts. Once new machines are ready, old MachineSet can be scaled
                          down further, followed by scaling up the new MachineSet, ensuring
                          that the total number of machines available at all times
                          during the update is at least 70% of desired machines.
                        x-kubernetes-int-or-string: true
                    type: object
                  type:
                    description: |-
                      Type of deployment. Currently the only supported strategy is
                      "RollingUpdate".
                      Default is RollingUpdate.
                    type: string
                type: object
              template:
                description: Template describes the machines that will be created.
                properties:
                  metadata:
                    description: |-
                      Standard object's metadata.
                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
                    properties:
                      annotations:
                        additionalProperties:
                          type: string
                        description: |-
                          Annotations is an unstructured key value map stored with a resource that may be
                          set by external tools to store and retrieve arbitrary metadata. They are not
                          queryable and should be preserved when modifying objects.
                          More info: http://kubernetes.io/docs/user-guide/annotations
                        type: object
                      generateName:
                        description: |-
                          GenerateName is an optional prefix, used by the server, to generate a unique
                          name ONLY IF the Name field has not been provided.
                          If this field is used, the name returned to the client will be different
                          than the name passed. This value will also be combined with a unique suffix.
                          The provided value has the same validation rules as the Name field,
                          and may be truncated by the length of the suffix required to make the value
                          unique on the server.


                          If this field is specified and the generated name exists, the server will
                          NOT return a 409 - instead, it will either return 201 Created or 500 with Reason
                          ServerTimeout indicating a unique name could not be found in the time allotted, and the client
                          should retry (optionally after the time indicated in the Retry-After header).


                          Applied only if Name is not specified.
                          More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency


                          Deprecated: This field has no function and is going to be removed in a next release.
                        type: string
                      labels:
                        additionalProperties:
                          type: string
                        description: |-
                          Map of string keys and values that can be used to organize and categorize
                          (scope and select) objects. May match selectors of replication controllers
                          and services.
                          More info: http://kubernetes.io/docs/user-guide/labels
                        type: object
                      name:
                        description: |-
                          Name must be unique within a namespace. Is required when creating resources, although
                          some resources may allow a client to request the generation of an appropriate name
                          automatically. Name is primarily intended for creation idempotence and configuration
                          definition.
                          Cannot be updated.
                          More info: http://kubernetes.io/docs/user-guide/identifiers#names


                          Deprecated: This field has no function and is going to be removed in a next release.
                        type: string
                      namespace:
                        description: |-
                          Namespace defines the space within each name must be unique. An empty namespace is
                          equivalent to the "default" namespace, but "default" is the canonical representation.
                          Not all objects are required to be scoped to a namespace - the value of this field for
                          those objects will be empty.


                          Must be a DNS_LABEL.
                          Cannot be updated.
                          More info: http://kubernetes.io/docs/user-guide/namespaces


                          Deprecated: This field has no function and is going to be removed in a next release.
                        type: string
                      ownerReferences:
                        description: |-
                          List of objects depended by this object. If ALL objects in the list have
                          been deleted, this object will be garbage collected. If this object is managed by a controller,
                          then an entry in this list will point to this controller, with the controller field set to true.
                          There cannot be more than one managing controller.


                          Deprecated: This field has no function and is going to be removed in a next release.
                        items:
                          description: |-
                            OwnerReference contains enough information to let you identify an owning
                            object. An owning object must be in the same namespace as the dependent, or
                            be cluster-scoped, so there is no namespace field.
                          properties:
                            apiVersion:
                              description: API version of the referent.
                              type: string
                            blockOwnerDeletion:
                              description: |-
                                If true, AND if the owner has the "foregroundDeletion" finalizer, then
                                the owner cannot be deleted from the key-value store until this
                                reference is removed.
                                See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion
                                for how the garbage collector interacts with this field and enforces the foreground deletion.
                                Defaults to false.
                                To set this field, a user needs "delete" permission of the owner,
                                otherwise 422 (Unprocessable Entity) will be returned.
                              type: boolean
                            controller:
                              description: If true, this reference points to the managing
                                controller.
                              type: boolean
                            kind:
                              description: |-
                                Kind of the referent.
                                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                              type: string
                            name:
                              description: |-
                                Name of the referent.
                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names
                              type: string
                            uid:
                              description: |-
                                UID of the referent.
                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids
                              type: string
                          required:
                          - apiVersion
                          - kind
                          - name
                          - uid
                          type: object
                          x-kubernetes-map-type: atomic
                        type: array
                    type: object
                  spec:
                    description: |-
                      Specification of the desired behavior of the machine.
                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
                    properties:
                      bootstrap:
                        description: |-
                          Bootstrap is a reference to a local struct which encapsulates
                          fields to configure the Machine’s bootstrapping mechanism.
                        properties:
                          configRef:
                            description: |-
                              ConfigRef is a reference to a bootstrap provider-specific resource
                              that holds configuration details. The reference is optional to
                              allow users/operators to specify Bootstrap.Data without
                              the need of a controller.
                            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
                                  should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                                  For example, if the object reference is to a container within a pod, this would take on a value like:
                                  "spec.containers{name}" (where "name" refers to the name of the container that triggered
                                  the event) or if no container name is specified "spec.containers[2]" (container with
                                  index 2 in this pod). This syntax is chosen only to have some well-defined way of
                                  referencing a part of an object.
                                  TODO: this design is not final and this field is subject to change in the future.
                                type: string
                              kind:
                                description: |-
                                  Kind of the referent.
                                  More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                                type: string
                              name:
                                description: |-
                                  Name of the referent.
                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                type: string
                              namespace:
                                description: |-
                                  Namespace of the referent.
                                  More 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.
                                  More 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.
                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                                type: string
                            type: object
                            x-kubernetes-map-type: atomic
                          data:
                            description: |-
                              Data contains the bootstrap data, such as cloud-init details scripts.
                              If nil, the Machine should remain in the Pending state.


                              Deprecated: Switch to DataSecretName.
                            type: string
                          dataSecretName:
                            description: |-
                              DataSecretName is the name of the secret that stores the bootstrap data script.
                              If nil, the Machine should remain in the Pending state.
                            type: string
                        type: object
                      clusterName:
                        description: ClusterName is the name of the Cluster this object
                          belongs to.
                        minLength: 1
                        type: string
                      failureDomain:
                        description: |-
                          FailureDomain is the failure domain the machine will be created in.
                          Must match a key in the FailureDomains map stored on the cluster object.
                        type: string
                      infrastructureRef:
                        description: |-
                          InfrastructureRef is a required reference to a custom resource
                          offered by an infrastructure provider.
                        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
                              should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                              For example, if the object reference is to a container within a pod, this would take on a value like:
                              "spec.containers{name}" (where "name" refers to the name of the container that triggered
                              the event) or if no container name is specified "spec.containers[2]" (container with
                              index 2 in this pod). This syntax is chosen only to have some well-defined way of
                              referencing a part of an object.
                              TODO: this design is not final and this field is subject to change in the future.
                            type: string
                          kind:
                            description: |-
                              Kind of the referent.
                              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                            type: string
                          name:
                            description: |-
                              Name of the referent.
                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                            type: string
                          namespace:
                            description: |-
                              Namespace of the referent.
                              More 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.
                              More 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.
                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                            type: string
                        type: object
                        x-kubernetes-map-type: atomic
                      nodeDrainTimeout:
                        description: |-
                          NodeDrainTimeout is the total amount of time that the controller will spend on draining a node.
                          The default value is 0, meaning that the node can be drained without any time limitations.
                          NOTE: NodeDrainTimeout is different from `kubectl drain --timeout`
                        type: string
                      providerID:
                        description: |-
                          ProviderID is the identification ID of the machine provided by the provider.
                          This field must match the provider ID as seen on the node object corresponding to this machine.
                          This field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler
                          with cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out
                          machines at provider which could not get registered as Kubernetes nodes. With cluster-api as a
                          generic out-of-tree provider for autoscaler, this field is required by autoscaler to be
                          able to have a provider view of the list of machines. Another list of nodes is queried from the k8s apiserver
                          and then a comparison is done to find out unregistered machines and are marked for delete.
                          This field will be set by the actuators and consumed by higher level entities like autoscaler that will
                          be interfacing with cluster-api as generic provider.
                        type: string
                      version:
                        description: |-
                          Version defines the desired Kubernetes version.
                          This field is meant to be optionally used by bootstrap providers.
                        type: string
                    required:
                    - bootstrap
                    - clusterName
                    - infrastructureRef
                    type: object
                type: object
            required:
            - clusterName
            - selector
            - template
            type: object
          status:
            description: MachineDeploymentStatus defines the observed state of MachineDeployment.
            properties:
              availableReplicas:
                description: |-
                  Total number of available machines (ready for at least minReadySeconds)
                  targeted by this deployment.
                format: int32
                type: integer
              observedGeneration:
                description: The generation observed by the deployment controller.
                format: int64
                type: integer
              phase:
                description: Phase represents the current phase of a MachineDeployment
                  (ScalingUp, ScalingDown, Running, Failed, or Unknown).
                type: string
              readyReplicas:
                description: Total number of ready machines targeted by this deployment.
                format: int32
                type: integer
              replicas:
                description: |-
                  Total number of non-terminated machines targeted by this deployment
                  (their labels match the selector).
                format: int32
                type: integer
              selector:
                description: |-
                  Selector is the same as the label selector but in the string format to avoid introspection
                  by clients. The string will be in the same format as the query-param syntax.
                  More info about label selectors: http://kubernetes.io/docs/user-guide/labels#label-selectors
                type: string
              unavailableReplicas:
                description: |-
                  Total number of unavailable machines targeted by this deployment.
                  This is the total number of machines that are still required for
                  the deployment to have 100% available capacity. They may either
                  be machines that are running but not yet available or machines
                  that still have not been created.
                format: int32
                type: integer
              updatedReplicas:
                description: |-
                  Total number of non-terminated machines targeted by this deployment
                  that have the desired template spec.
                format: int32
                type: integer
            type: object
        type: object
    served: false
    storage: false
    subresources:
      scale:
        labelSelectorPath: .status.selector
        specReplicasPath: .spec.replicas
        statusReplicasPath: .status.replicas
      status: {}
  - additionalPrinterColumns:
    - description: Cluster
      jsonPath: .spec.clusterName
      name: Cluster
      type: string
    - description: Time duration since creation of MachineDeployment
      jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    - description: MachineDeployment status such as ScalingUp/ScalingDown/Running/Failed/Unknown
      jsonPath: .status.phase
      name: Phase
      type: string
    - description: Total number of non-terminated machines targeted by this MachineDeployment
      jsonPath: .status.replicas
      name: Replicas
      type: integer
    - description: Total number of ready machines targeted by this MachineDeployment
      jsonPath: .status.readyReplicas
      name: Ready
      type: integer
    - description: Total number of non-terminated machines targeted by this deployment
        that have the desired template spec
      jsonPath: .status.updatedReplicas
      name: Updated
      type: integer
    - description: Total number of unavailable machines targeted by this MachineDeployment
      jsonPath: .status.unavailableReplicas
      name: Unavailable
      type: integer
    deprecated: true
    name: v1alpha4
    schema:
      openAPIV3Schema:
        description: |-
          MachineDeployment is the Schema for the machinedeployments API.


          Deprecated: This type will be removed in one of the next releases.
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More 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.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: MachineDeploymentSpec defines the desired state of MachineDeployment.
            properties:
              clusterName:
                description: ClusterName is the name of the Cluster this object belongs
                  to.
                minLength: 1
                type: string
              minReadySeconds:
                description: |-
                  Minimum number of seconds for which a newly created machine should
                  be ready.
                  Defaults to 0 (machine will be considered available as soon as it
                  is ready)
                format: int32
                type: integer
              paused:
                description: Indicates that the deployment is paused.
                type: boolean
              progressDeadlineSeconds:
                description: |-
                  The maximum time in seconds for a deployment to make progress before it
                  is considered to be failed. The deployment controller will continue to
                  process failed deployments and a condition with a ProgressDeadlineExceeded
                  reason will be surfaced in the deployment status. Note that progress will
                  not be estimated during the time a deployment is paused. Defaults to 600s.
                format: int32
                type: integer
              replicas:
                default: 1
                description: |-
                  Number of desired machines. Defaults to 1.
                  This is a pointer to distinguish between explicit zero and not specified.
                format: int32
                type: integer
              revisionHistoryLimit:
                description: |-
                  The number of old MachineSets to retain to allow rollback.
                  This is a pointer to distinguish between explicit zero and not specified.
                  Defaults to 1.
                format: int32
                type: integer
              selector:
                description: |-
                  Label selector for machines. Existing MachineSets whose machines are
                  selected by this will be the ones affected by this deployment.
                  It must match the machine template's labels.
                properties:
                  matchExpressions:
                    description: matchExpressions is a list of label selector requirements.
                      The requirements are ANDed.
                    items:
                      description: |-
                        A label selector requirement is a selector that contains values, a key, and an operator that
                        relates the key and values.
                      properties:
                        key:
                          description: key is the label key that the selector applies
                            to.
                          type: string
                        operator:
                          description: |-
                            operator represents a key's relationship to a set of values.
                            Valid operators are In, NotIn, Exists and DoesNotExist.
                          type: string
                        values:
                          description: |-
                            values is an array of string values. If the operator is In or NotIn,
                            the values array must be non-empty. If the operator is Exists or DoesNotExist,
                            the values array must be empty. This array is replaced during a strategic
                            merge patch.
                          items:
                            type: string
                          type: array
                          x-kubernetes-list-type: atomic
                      required:
                      - key
                      - operator
                      type: object
                    type: array
                    x-kubernetes-list-type: atomic
                  matchLabels:
                    additionalProperties:
                      type: string
                    description: |-
                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                      map is equivalent to an element of matchExpressions, whose key field is "key", the
                      operator is "In", and the values array contains only "value". The requirements are ANDed.
                    type: object
                type: object
                x-kubernetes-map-type: atomic
              strategy:
                description: |-
                  The deployment strategy to use to replace existing machines with
                  new ones.
                properties:
                  rollingUpdate:
                    description: |-
                      Rolling update config params. Present only if
                      MachineDeploymentStrategyType = RollingUpdate.
                    properties:
                      deletePolicy:
                        description: |-
                          DeletePolicy defines the policy used by the MachineDeployment to identify nodes to delete when downscaling.
                          Valid values are "Random, "Newest", "Oldest"
                          When no value is supplied, the default DeletePolicy of MachineSet is used
                        enum:
                        - Random
                        - Newest
                        - Oldest
                        type: string
                      maxSurge:
                        anyOf:
                        - type: integer
                        - type: string
                        description: |-
                          The maximum number of machines that can be scheduled above the
                          desired number of machines.
                          Value can be an absolute number (ex: 5) or a percentage of
                          desired machines (ex: 10%).
                          This can not be 0 if MaxUnavailable is 0.
                          Absolute number is calculated from percentage by rounding up.
                          Defaults to 1.
                          Example: when this is set to 30%, the new MachineSet can be scaled
                          up immediately when the rolling update starts, such that the total
                          number of old and new machines do not exceed 130% of desired
                          machines. Once old machines have been killed, new MachineSet can
                          be scaled up further, ensuring that total number of machines running
                          at any time during the update is at most 130% of desired machines.
                        x-kubernetes-int-or-string: true
                      maxUnavailable:
                        anyOf:
                        - type: integer
                        - type: string
                        description: |-
                          The maximum number of machines that can be unavailable during the update.
                          Value can be an absolute number (ex: 5) or a percentage of desired
                          machines (ex: 10%).
                          Absolute number is calculated from percentage by rounding down.
                          This can not be 0 if MaxSurge is 0.
                          Defaults to 0.
                          Example: when this is set to 30%, the old MachineSet can be scaled
                          down to 70% of desired machines immediately when the rolling update
                          starts. Once new machines are ready, old MachineSet can be scaled
                          down further, followed by scaling up the new MachineSet, ensuring
                          that the total number of machines available at all times
                          during the update is at least 70% of desired machines.
                        x-kubernetes-int-or-string: true
                    type: object
                  type:
                    description: |-
                      Type of deployment.
                      Default is RollingUpdate.
                    enum:
                    - RollingUpdate
                    - OnDelete
                    type: string
                type: object
              template:
                description: Template describes the machines that will be created.
                properties:
                  metadata:
                    description: |-
                      Standard object's metadata.
                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
                    properties:
                      annotations:
                        additionalProperties:
                          type: string
                        description: |-
                          Annotations is an unstructured key value map stored with a resource that may be
                          set by external tools to store and retrieve arbitrary metadata. They are not
                          queryable and should be preserved when modifying objects.
                          More info: http://kubernetes.io/docs/user-guide/annotations
                        type: object
                      labels:
                        additionalProperties:
                          type: string
                        description: |-
                          Map of string keys and values that can be used to organize and categorize
                          (scope and select) objects. May match selectors of replication controllers
                          and services.
                          More info: http://kubernetes.io/docs/user-guide/labels
                        type: object
                    type: object
                  spec:
                    description: |-
                      Specification of the desired behavior of the machine.
                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
                    properties:
                      bootstrap:
                        description: |-
                          Bootstrap is a reference to a local struct which encapsulates
                          fields to configure the Machine’s bootstrapping mechanism.
                        properties:
                          configRef:
                            description: |-
                              ConfigRef is a reference to a bootstrap provider-specific resource
                              that holds configuration details. The reference is optional to
                              allow users/operators to specify Bootstrap.DataSecretName without
                              the need of a controller.
                            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
                                  should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                                  For example, if the object reference is to a container within a pod, this would take on a value like:
                                  "spec.containers{name}" (where "name" refers to the name of the container that triggered
                                  the event) or if no container name is specified "spec.containers[2]" (container with
                                  index 2 in this pod). This syntax is chosen only to have some well-defined way of
                                  referencing a part of an object.
                                  TODO: this design is not final and this field is subject to change in the future.
                                type: string
                              kind:
                                description: |-
                                  Kind of the referent.
                                  More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                                type: string
                              name:
                                description: |-
                                  Name of the referent.
                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                type: string
                              namespace:
                                description: |-
                                  Namespace of the referent.
                                  More 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.
                                  More 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.
                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                                type: string
                            type: object
                            x-kubernetes-map-type: atomic
                          dataSecretName:
                            description: |-
                              DataSecretName is the name of the secret that stores the bootstrap data script.
                              If nil, the Machine should remain in the Pending state.
                            type: string
                        type: object
                      clusterName:
                        description: ClusterName is the name of the Cluster this object
                          belongs to.
                        minLength: 1
                        type: string
                      failureDomain:
                        description: |-
                          FailureDomain is the failure domain the machine will be created in.
                          Must match a key in the FailureDomains map stored on the cluster object.
                        type: string
                      infrastructureRef:
                        description: |-
                          InfrastructureRef is a required reference to a custom resource
                          offered by an infrastructure provider.
                        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
                              should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                              For example, if the object reference is to a container within a pod, this would take on a value like:
                              "spec.containers{name}" (where "name" refers to the name of the container that triggered
                              the event) or if no container name is specified "spec.containers[2]" (container with
                              index 2 in this pod). This syntax is chosen only to have some well-defined way of
                              referencing a part of an object.
                              TODO: this design is not final and this field is subject to change in the future.
                            type: string
                          kind:
                            description: |-
                              Kind of the referent.
                              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                            type: string
                          name:
                            description: |-
                              Name of the referent.
                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                            type: string
                          namespace:
                            description: |-
                              Namespace of the referent.
                              More 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.
                              More 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.
                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                            type: string
                        type: object
                        x-kubernetes-map-type: atomic
                      nodeDrainTimeout:
                        description: |-
                          NodeDrainTimeout is the total amount of time that the controller will spend on draining a node.
                          The default value is 0, meaning that the node can be drained without any time limitations.
                          NOTE: NodeDrainTimeout is different from `kubectl drain --timeout`
                        type: string
                      providerID:
                        description: |-
                          ProviderID is the identification ID of the machine provided by the provider.
                          This field must match the provider ID as seen on the node object corresponding to this machine.
                          This field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler
                          with cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out
                          machines at provider which could not get registered as Kubernetes nodes. With cluster-api as a
                          generic out-of-tree provider for autoscaler, this field is required by autoscaler to be
                          able to have a provider view of the list of machines. Another list of nodes is queried from the k8s apiserver
                          and then a comparison is done to find out unregistered machines and are marked for delete.
                          This field will be set by the actuators and consumed by higher level entities like autoscaler that will
                          be interfacing with cluster-api as generic provider.
                        type: string
                      version:
                        description: |-
                          Version defines the desired Kubernetes version.
                          This field is meant to be optionally used by bootstrap providers.
                        type: string
                    required:
                    - bootstrap
                    - clusterName
                    - infrastructureRef
                    type: object
                type: object
            required:
            - clusterName
            - selector
            - template
            type: object
          status:
            description: MachineDeploymentStatus defines the observed state of MachineDeployment.
            properties:
              availableReplicas:
                description: |-
                  Total number of available machines (ready for at least minReadySeconds)
                  targeted by this deployment.
                format: int32
                type: integer
              conditions:
                description: Conditions defines current service state of the MachineDeployment.
                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.
                        This should be when the underlying condition changed. If that is not known, then using the time when
                        the API field changed is acceptable.
                      format: date-time
                      type: string
                    message:
                      description: |-
                        A human readable message indicating details about the transition.
                        This field may be empty.
                      type: string
                    reason:
                      description: |-
                        The reason for the condition's last transition in CamelCase.
                        The specific API may choose whether or not this field is considered a guaranteed API.
                        This field may not be empty.
                      type: string
                    severity:
                      description: |-
                        Severity provides an explicit classification of Reason code, so the users or machines can immediately
                        understand the current situation and act accordingly.
                        The 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.
                        Many .condition.type values are consistent across resources like Available, but because arbitrary conditions
                        can be useful (see .node.status.conditions), the ability to deconflict is important.
                      type: string
                  required:
                  - status
                  - type
                  type: object
                type: array
              observedGeneration:
                description: The generation observed by the deployment controller.
                format: int64
                type: integer
              phase:
                description: Phase represents the current phase of a MachineDeployment
                  (ScalingUp, ScalingDown, Running, Failed, or Unknown).
                type: string
              readyReplicas:
                description: Total number of ready machines targeted by this deployment.
                format: int32
                type: integer
              replicas:
                description: |-
                  Total number of non-terminated machines targeted by this deployment
                  (their labels match the selector).
                format: int32
                type: integer
              selector:
                description: |-
                  Selector is the same as the label selector but in the string format to avoid introspection
                  by clients. The string will be in the same format as the query-param syntax.
                  More info about label selectors: http://kubernetes.io/docs/user-guide/labels#label-selectors
                type: string
              unavailableReplicas:
                description: |-
                  Total number of unavailable machines targeted by this deployment.
                  This is the total number of machines that are still required for
                  the deployment to have 100% available capacity. They may either
                  be machines that are running but not yet available or machines
                  that still have not been created.
                format: int32
                type: integer
              updatedReplicas:
                description: |-
                  Total number of non-terminated machines targeted by this deployment
                  that have the desired template spec.
                format: int32
                type: integer
            type: object
        type: object
    served: false
    storage: false
    subresources:
      scale:
        labelSelectorPath: .status.selector
        specReplicasPath: .spec.replicas
        statusReplicasPath: .status.replicas
      status: {}
  - additionalPrinterColumns:
    - description: Cluster
      jsonPath: .spec.clusterName
      name: Cluster
      type: string
    - description: Total number of machines desired by this MachineDeployment
      jsonPath: .spec.replicas
      name: Desired
      priority: 10
      type: integer
    - description: Total number of non-terminated machines targeted by this MachineDeployment
      jsonPath: .status.replicas
      name: Replicas
      type: integer
    - description: Total number of ready machines targeted by this MachineDeployment
      jsonPath: .status.readyReplicas
      name: Ready
      type: integer
    - description: Total number of non-terminated machines targeted by this deployment
        that have the desired template spec
      jsonPath: .status.updatedReplicas
      name: Updated
      type: integer
    - description: Total number of unavailable machines targeted by this MachineDeployment
      jsonPath: .status.unavailableReplicas
      name: Unavailable
      type: integer
    - description: MachineDeployment status such as ScalingUp/ScalingDown/Running/Failed/Unknown
      jsonPath: .status.phase
      name: Phase
      type: string
    - description: Time duration since creation of MachineDeployment
      jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    - description: Kubernetes version associated with this MachineDeployment
      jsonPath: .spec.template.spec.version
      name: Version
      type: string
    name: v1beta1
    schema:
      openAPIV3Schema:
        description: MachineDeployment is the Schema for the machinedeployments API.
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More 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.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: MachineDeploymentSpec defines the desired state of MachineDeployment.
            properties:
              clusterName:
                description: ClusterName is the name of the Cluster this object belongs
                  to.
                minLength: 1
                type: string
              minReadySeconds:
                description: |-
                  MinReadySeconds is the minimum number of seconds for which a Node for a newly created machine should be ready before considering the replica available.
                  Defaults to 0 (machine will be considered available as soon as the Node is ready)
                format: int32
                type: integer
              paused:
                description: Indicates that the deployment is paused.
                type: boolean
              progressDeadlineSeconds:
                description: |-
                  The maximum time in seconds for a deployment to make progress before it
                  is considered to be failed. The deployment controller will continue to
                  process failed deployments and a condition with a ProgressDeadlineExceeded
                  reason will be surfaced in the deployment status. Note that progress will
                  not be estimated during the time a deployment is paused. Defaults to 600s.
                format: int32
                type: integer
              replicas:
                description: |-
                  Number of desired machines.
                  This is a pointer to distinguish between explicit zero and not specified.


                  Defaults to:
                  * if the Kubernetes autoscaler min size and max size annotations are set:
                    - if it's a new MachineDeployment, use min size
                    - if the replicas field of the old MachineDeployment is < min size, use min size
                    - if the replicas field of the old MachineDeployment is > max size, use max size
                    - if the replicas field of the old MachineDeployment is in the (min size, max size) range, keep the value from the oldMD
                  * otherwise use 1
                  Note: Defaulting will be run whenever the replicas field is not set:
                  * A new MachineDeployment is created with replicas not set.
                  * On an existing MachineDeployment the replicas field was first set and is now unset.
                  Those cases are especially relevant for the following Kubernetes autoscaler use cases:
                  * A new MachineDeployment is created and replicas should be managed by the autoscaler
                  * An existing MachineDeployment which initially wasn't controlled by the autoscaler
                    should be later controlled by the autoscaler
                format: int32
                type: integer
              revisionHistoryLimit:
                description: |-
                  The number of old MachineSets to retain to allow rollback.
                  This is a pointer to distinguish between explicit zero and not specified.
                  Defaults to 1.


                  Deprecated: This field is deprecated and is going to be removed in the next apiVersion. Please see https://github.com/kubernetes-sigs/cluster-api/issues/10479 for more details.
                format: int32
                type: integer
              rolloutAfter:
                description: |-
                  RolloutAfter is a field to indicate a rollout should be performed
                  after the specified time even if no changes have been made to the
                  MachineDeployment.
                  Example: In the YAML the time can be specified in the RFC3339 format.
                  To specify the rolloutAfter target as March 9, 2023, at 9 am UTC
                  use "2023-03-09T09:00:00Z".
                format: date-time
                type: string
              selector:
                description: |-
                  Label selector for machines. Existing MachineSets whose machines are
                  selected by this will be the ones affected by this deployment.
                  It must match the machine template's labels.
                properties:
                  matchExpressions:
                    description: matchExpressions is a list of label selector requirements.
                      The requirements are ANDed.
                    items:
                      description: |-
                        A label selector requirement is a selector that contains values, a key, and an operator that
                        relates the key and values.
                      properties:
                        key:
                          description: key is the label key that the selector applies
                            to.
                          type: string
                        operator:
                          description: |-
                            operator represents a key's relationship to a set of values.
                            Valid operators are In, NotIn, Exists and DoesNotExist.
                          type: string
                        values:
                          description: |-
                            values is an array of string values. If the operator is In or NotIn,
                            the values array must be non-empty. If the operator is Exists or DoesNotExist,
                            the values array must be empty. This array is replaced during a strategic
                            merge patch.
                          items:
                            type: string
                          type: array
                          x-kubernetes-list-type: atomic
                      required:
                      - key
                      - operator
                      type: object
                    type: array
                    x-kubernetes-list-type: atomic
                  matchLabels:
                    additionalProperties:
                      type: string
                    description: |-
                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                      map is equivalent to an element of matchExpressions, whose key field is "key", the
                      operator is "In", and the values array contains only "value". The requirements are ANDed.
                    type: object
                type: object
                x-kubernetes-map-type: atomic
              strategy:
                description: |-
                  The deployment strategy to use to replace existing machines with
                  new ones.
                properties:
                  remediation:
                    description: |-
                      Remediation controls the strategy of remediating unhealthy machines
                      and how remediating operations should occur during the lifecycle of the dependant MachineSets.
                    properties:
                      maxInFlight:
                        anyOf:
                        - type: integer
                        - type: string
                        description: |-
                          MaxInFlight determines how many in flight remediations should happen at the same time.


                          Remediation only happens on the MachineSet with the most current revision, while
                          older MachineSets (usually present during rollout operations) aren't allowed to remediate.


                          Note: In general (independent of remediations), unhealthy machines are always
                          prioritized during scale down operations over healthy ones.


                          MaxInFlight can be set to a fixed number or a percentage.
                          Example: when this is set to 20%, the MachineSet controller deletes at most 20% of
                          the desired replicas.


                          If not set, remediation is limited to all machines (bounded by replicas)
                          under the active MachineSet's management.
                        x-kubernetes-int-or-string: true
                    type: object
                  rollingUpdate:
                    description: |-
                      Rolling update config params. Present only if
                      MachineDeploymentStrategyType = RollingUpdate.
                    properties:
                      deletePolicy:
                        description: |-
                          DeletePolicy defines the policy used by the MachineDeployment to identify nodes to delete when downscaling.
                          Valid values are "Random, "Newest", "Oldest"
                          When no value is supplied, the default DeletePolicy of MachineSet is used
                        enum:
                        - Random
                        - Newest
                        - Oldest
                        type: string
                      maxSurge:
                        anyOf:
                        - type: integer
                        - type: string
                        description: |-
                          The maximum number of machines that can be scheduled above the
                          desired number of machines.
                          Value can be an absolute number (ex: 5) or a percentage of
                          desired machines (ex: 10%).
                          This can not be 0 if MaxUnavailable is 0.
                          Absolute number is calculated from percentage by rounding up.
                          Defaults to 1.
                          Example: when this is set to 30%, the new MachineSet can be scaled
                          up immediately when the rolling update starts, such that the total
                          number of old and new machines do not exceed 130% of desired
                          machines. Once old machines have been killed, new MachineSet can
                          be scaled up further, ensuring that total number of machines running
                          at any time during the update is at most 130% of desired machines.
                        x-kubernetes-int-or-string: true
                      maxUnavailable:
                        anyOf:
                        - type: integer
                        - type: string
                        description: |-
                          The maximum number of machines that can be unavailable during the update.
                          Value can be an absolute number (ex: 5) or a percentage of desired
                          machines (ex: 10%).
                          Absolute number is calculated from percentage by rounding down.
                          This can not be 0 if MaxSurge is 0.
                          Defaults to 0.
                          Example: when this is set to 30%, the old MachineSet can be scaled
                          down to 70% of desired machines immediately when the rolling update
                          starts. Once new machines are ready, old MachineSet can be scaled
                          down further, followed by scaling up the new MachineSet, ensuring
                          that the total number of machines available at all times
                          during the update is at least 70% of desired machines.
                        x-kubernetes-int-or-string: true
                    type: object
                  type:
                    description: |-
                      Type of deployment. Allowed values are RollingUpdate and OnDelete.
                      The default is RollingUpdate.
                    enum:
                    - RollingUpdate
                    - OnDelete
                    type: string
                type: object
              template:
                description: Template describes the machines that will be created.
                properties:
                  metadata:
                    description: |-
                      Standard object's metadata.
                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
                    properties:
                      annotations:
                        additionalProperties:
                          type: string
                        description: |-
                          Annotations is an unstructured key value map stored with a resource that may be
                          set by external tools to store and retrieve arbitrary metadata. They are not
                          queryable and should be preserved when modifying objects.
                          More info: http://kubernetes.io/docs/user-guide/annotations
                        type: object
                      labels:
                        additionalProperties:
                          type: string
                        description: |-
                          Map of string keys and values that can be used to organize and categorize
                          (scope and select) objects. May match selectors of replication controllers
                          and services.
                          More info: http://kubernetes.io/docs/user-guide/labels
                        type: object
                    type: object
                  spec:
                    description: |-
                      Specification of the desired behavior of the machine.
                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
                    properties:
                      bootstrap:
                        description: |-
                          Bootstrap is a reference to a local struct which encapsulates
                          fields to configure the Machine’s bootstrapping mechanism.
                        properties:
                          configRef:
                            description: |-
                              ConfigRef is a reference to a bootstrap provider-specific resource
                              that holds configuration details. The reference is optional to
                              allow users/operators to specify Bootstrap.DataSecretName without
                              the need of a controller.
                            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
                                  should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                                  For example, if the object reference is to a container within a pod, this would take on a value like:
                                  "spec.containers{name}" (where "name" refers to the name of the container that triggered
                                  the event) or if no container name is specified "spec.containers[2]" (container with
                                  index 2 in this pod). This syntax is chosen only to have some well-defined way of
                                  referencing a part of an object.
                                  TODO: this design is not final and this field is subject to change in the future.
                                type: string
                              kind:
                                description: |-
                                  Kind of the referent.
                                  More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                                type: string
                              name:
                                description: |-
                                  Name of the referent.
                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                type: string
                              namespace:
                                description: |-
                                  Namespace of the referent.
                                  More 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.
                                  More 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.
                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                                type: string
                            type: object
                            x-kubernetes-map-type: atomic
                          dataSecretName:
                            description: |-
                              DataSecretName is the name of the secret that stores the bootstrap data script.
                              If nil, the Machine should remain in the Pending state.
                            type: string
                        type: object
                      clusterName:
                        description: ClusterName is the name of the Cluster this object
                          belongs to.
                        minLength: 1
                        type: string
                      failureDomain:
                        description: |-
                          FailureDomain is the failure domain the machine will be created in.
                          Must match a key in the FailureDomains map stored on the cluster object.
                        type: string
                      infrastructureRef:
                        description: |-
                          InfrastructureRef is a required reference to a custom resource
                          offered by an infrastructure provider.
                        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
                              should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                              For example, if the object reference is to a container within a pod, this would take on a value like:
                              "spec.containers{name}" (where "name" refers to the name of the container that triggered
                              the event) or if no container name is specified "spec.containers[2]" (container with
                              index 2 in this pod). This syntax is chosen only to have some well-defined way of
                              referencing a part of an object.
                              TODO: this design is not final and this field is subject to change in the future.
                            type: string
                          kind:
                            description: |-
                              Kind of the referent.
                              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                            type: string
                          name:
                            description: |-
                              Name of the referent.
                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                            type: string
                          namespace:
                            description: |-
                              Namespace of the referent.
                              More 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.
                              More 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.
                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                            type: string
                        type: object
                        x-kubernetes-map-type: atomic
                      nodeDeletionTimeout:
                        description: |-
                          NodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine
                          hosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely.
                          Defaults to 10 seconds.
                        type: string
                      nodeDrainTimeout:
                        description: |-
                          NodeDrainTimeout is the total amount of time that the controller will spend on draining a node.
                          The default value is 0, meaning that the node can be drained without any time limitations.
                          NOTE: NodeDrainTimeout is different from `kubectl drain --timeout`
                        type: string
                      nodeVolumeDetachTimeout:
                        description: |-
                          NodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes
                          to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations.
                        type: string
                      providerID:
                        description: |-
                          ProviderID is the identification ID of the machine provided by the provider.
                          This field must match the provider ID as seen on the node object corresponding to this machine.
                          This field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler
                          with cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out
                          machines at provider which could not get registered as Kubernetes nodes. With cluster-api as a
                          generic out-of-tree provider for autoscaler, this field is required by autoscaler to be
                          able to have a provider view of the list of machines. Another list of nodes is queried from the k8s apiserver
                          and then a comparison is done to find out unregistered machines and are marked for delete.
                          This field will be set by the actuators and consumed by higher level entities like autoscaler that will
                          be interfacing with cluster-api as generic provider.
                        type: string
                      version:
                        description: |-
                          Version defines the desired Kubernetes version.
                          This field is meant to be optionally used by bootstrap providers.
                        type: string
                    required:
                    - bootstrap
                    - clusterName
                    - infrastructureRef
                    type: object
                type: object
            required:
            - clusterName
            - selector
            - template
            type: object
          status:
            description: MachineDeploymentStatus defines the observed state of MachineDeployment.
            properties:
              availableReplicas:
                description: |-
                  Total number of available machines (ready for at least minReadySeconds)
                  targeted by this deployment.
                format: int32
                type: integer
              conditions:
                description: Conditions defines current service state of the MachineDeployment.
                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.
                        This should be when the underlying condition changed. If that is not known, then using the time when
                        the API field changed is acceptable.
                      format: date-time
                      type: string
                    message:
                      description: |-
                        A human readable message indicating details about the transition.
                        This field may be empty.
                      type: string
                    reason:
                      description: |-
                        The reason for the condition's last transition in CamelCase.
                        The specific API may choose whether or not this field is considered a guaranteed API.
                        This field may not be empty.
                      type: string
                    severity:
                      description: |-
                        Severity provides an explicit classification of Reason code, so the users or machines can immediately
                        understand the current situation and act accordingly.
                        The 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.
                        Many .condition.type values are consistent across resources like Available, but because arbitrary conditions
                        can be useful (see .node.status.conditions), the ability to deconflict is important.
                      type: string
                  required:
                  - lastTransitionTime
                  - status
                  - type
                  type: object
                type: array
              observedGeneration:
                description: The generation observed by the deployment controller.
                format: int64
                type: integer
              phase:
                description: Phase represents the current phase of a MachineDeployment
                  (ScalingUp, ScalingDown, Running, Failed, or Unknown).
                type: string
              readyReplicas:
                description: Total number of ready machines targeted by this deployment.
                format: int32
                type: integer
              replicas:
                description: |-
                  Total number of non-terminated machines targeted by this deployment
                  (their labels match the selector).
                format: int32
                type: integer
              selector:
                description: |-
                  Selector is the same as the label selector but in the string format to avoid introspection
                  by clients. The string will be in the same format as the query-param syntax.
                  More info about label selectors: http://kubernetes.io/docs/user-guide/labels#label-selectors
                type: string
              unavailableReplicas:
                description: |-
                  Total number of unavailable machines targeted by this deployment.
                  This is the total number of machines that are still required for
                  the deployment to have 100% available capacity. They may either
                  be machines that are running but not yet available or machines
                  that still have not been created.
                format: int32
                type: integer
              updatedReplicas:
                description: |-
                  Total number of non-terminated machines targeted by this deployment
                  that have the desired template spec.
                format: int32
                type: integer
            type: object
        type: object
    served: true
    storage: true
    subresources:
      scale:
        labelSelectorPath: .status.selector
        specReplicasPath: .spec.replicas
        statusReplicasPath: .status.replicas
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: null
  storedVersions: null
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.15.0
    service.beta.openshift.io/inject-cabundle: "true"
  creationTimestamp: null
  labels:
    cluster.x-k8s.io/provider: cluster-api
    clusterctl.cluster.x-k8s.io: ""
  name: machinepools.cluster.x-k8s.io
spec:
  group: cluster.x-k8s.io
  names:
    categories:
    - cluster-api
    kind: MachinePool
    listKind: MachinePoolList
    plural: machinepools
    shortNames:
    - mp
    singular: machinepool
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: MachinePool replicas count
      jsonPath: .status.replicas
      name: Replicas
      type: string
    - description: MachinePool status such as Terminating/Pending/Provisioning/Running/Failed
        etc
      jsonPath: .status.phase
      name: Phase
      type: string
    - description: Kubernetes version associated with this MachinePool
      jsonPath: .spec.template.spec.version
      name: Version
      type: string
    deprecated: true
    name: v1alpha3
    schema:
      openAPIV3Schema:
        description: |-
          MachinePool is the Schema for the machinepools API.


          Deprecated: This type will be removed in one of the next releases.
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More 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.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: MachinePoolSpec defines the desired state of MachinePool.
            properties:
              clusterName:
                description: ClusterName is the name of the Cluster this object belongs
                  to.
                minLength: 1
                type: string
              failureDomains:
                description: FailureDomains is the list of failure domains this MachinePool
                  should be attached to.
                items:
                  type: string
                type: array
              minReadySeconds:
                description: |-
                  Minimum number of seconds for which a newly created machine instances should
                  be ready.
                  Defaults to 0 (machine instance will be considered available as soon as it
                  is ready)
                format: int32
                type: integer
              providerIDList:
                description: |-
                  ProviderIDList are the identification IDs of machine instances provided by the provider.
                  This 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
              replicas:
                description: |-
                  Number of desired machines. Defaults to 1.
                  This is a pointer to distinguish between explicit zero and not specified.
                format: int32
                type: integer
              strategy:
                description: |-
                  The deployment strategy to use to replace existing machine instances with
                  new ones.
                properties:
                  rollingUpdate:
                    description: |-
                      Rolling update config params. Present only if
                      MachineDeploymentStrategyType = RollingUpdate.
                    properties:
                      maxSurge:
                        anyOf:
                        - type: integer
                        - type: string
                        description: |-
                          The maximum number of machines that can be scheduled above the
                          desired number of machines.
                          Value can be an absolute number (ex: 5) or a percentage of
                          desired machines (ex: 10%).
                          This can not be 0 if MaxUnavailable is 0.
                          Absolute number is calculated from percentage by rounding up.
                          Defaults to 1.
                          Example: when this is set to 30%, the new MachineSet can be scaled
                          up immediately when the rolling update starts, such that the total
                          number of old and new machines do not exceed 130% of desired
                          machines. Once old machines have been killed, new MachineSet can
                          be scaled up further, ensuring that total number of machines running
                          at any time during the update is at most 130% of desired machines.
                        x-kubernetes-int-or-string: true
                      maxUnavailable:
                        anyOf:
                        - type: integer
                        - type: string
                        description: |-
                          The maximum number of machines that can be unavailable during the update.
                          Value can be an absolute number (ex: 5) or a percentage of desired
                          machines (ex: 10%).
                          Absolute number is calculated from percentage by rounding down.
                          This can not be 0 if MaxSurge is 0.
                          Defaults to 0.
                          Example: when this is set to 30%, the old MachineSet can be scaled
                          down to 70% of desired machines immediately when the rolling update
                          starts. Once new machines are ready, old MachineSet can be scaled
                          down further, followed by scaling up the new MachineSet, ensuring
                          that the total number of machines available at all times
                          during the update is at least 70% of desired machines.
                        x-kubernetes-int-or-string: true
                    type: object
                  type:
                    description: |-
                      Type of deployment. Currently the only supported strategy is
                      "RollingUpdate".
                      Default is RollingUpdate.
                    type: string
                type: object
              template:
                description: Template describes the machines that will be created.
                properties:
                  metadata:
                    description: |-
                      Standard object's metadata.
                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
                    properties:
                      annotations:
                        additionalProperties:
                          type: string
                        description: |-
                          Annotations is an unstructured key value map stored with a resource that may be
                          set by external tools to store and retrieve arbitrary metadata. They are not
                          queryable and should be preserved when modifying objects.
                          More info: http://kubernetes.io/docs/user-guide/annotations
                        type: object
                      generateName:
                        description: |-
                          GenerateName is an optional prefix, used by the server, to generate a unique
                          name ONLY IF the Name field has not been provided.
                          If this field is used, the name returned to the client will be different
                          than the name passed. This value will also be combined with a unique suffix.
                          The provided value has the same validation rules as the Name field,
                          and may be truncated by the length of the suffix required to make the value
                          unique on the server.


                          If this field is specified and the generated name exists, the server will
                          NOT return a 409 - instead, it will either return 201 Created or 500 with Reason
                          ServerTimeout indicating a unique name could not be found in the time allotted, and the client
                          should retry (optionally after the time indicated in the Retry-After header).


                          Applied only if Name is not specified.
                          More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency


                          Deprecated: This field has no function and is going to be removed in a next release.
                        type: string
                      labels:
                        additionalProperties:
                          type: string
                        description: |-
                          Map of string keys and values that can be used to organize and categorize
                          (scope and select) objects. May match selectors of replication controllers
                          and services.
                          More info: http://kubernetes.io/docs/user-guide/labels
                        type: object
                      name:
                        description: |-
                          Name must be unique within a namespace. Is required when creating resources, although
                          some resources may allow a client to request the generation of an appropriate name
                          automatically. Name is primarily intended for creation idempotence and configuration
                          definition.
                          Cannot be updated.
                          More info: http://kubernetes.io/docs/user-guide/identifiers#names


                          Deprecated: This field has no function and is going to be removed in a next release.
                        type: string
                      namespace:
                        description: |-
                          Namespace defines the space within each name must be unique. An empty namespace is
                          equivalent to the "default" namespace, but "default" is the canonical representation.
                          Not all objects are required to be scoped to a namespace - the value of this field for
                          those objects will be empty.


                          Must be a DNS_LABEL.
                          Cannot be updated.
                          More info: http://kubernetes.io/docs/user-guide/namespaces


                          Deprecated: This field has no function and is going to be removed in a next release.
                        type: string
                      ownerReferences:
                        description: |-
                          List of objects depended by this object. If ALL objects in the list have
                          been deleted, this object will be garbage collected. If this object is managed by a controller,
                          then an entry in this list will point to this controller, with the controller field set to true.
                          There cannot be more than one managing controller.


                          Deprecated: This field has no function and is going to be removed in a next release.
                        items:
                          description: |-
                            OwnerReference contains enough information to let you identify an owning
                            object. An owning object must be in the same namespace as the dependent, or
                            be cluster-scoped, so there is no namespace field.
                          properties:
                            apiVersion:
                              description: API version of the referent.
                              type: string
                            blockOwnerDeletion:
                              description: |-
                                If true, AND if the owner has the "foregroundDeletion" finalizer, then
                                the owner cannot be deleted from the key-value store until this
                                reference is removed.
                                See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion
                                for how the garbage collector interacts with this field and enforces the foreground deletion.
                                Defaults to false.
                                To set this field, a user needs "delete" permission of the owner,
                                otherwise 422 (Unprocessable Entity) will be returned.
                              type: boolean
                            controller:
                              description: If true, this reference points to the managing
                                controller.
                              type: boolean
                            kind:
                              description: |-
                                Kind of the referent.
                                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                              type: string
                            name:
                              description: |-
                                Name of the referent.
                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names
                              type: string
                            uid:
                              description: |-
                                UID of the referent.
                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids
                              type: string
                          required:
                          - apiVersion
                          - kind
                          - name
                          - uid
                          type: object
                          x-kubernetes-map-type: atomic
                        type: array
                    type: object
                  spec:
                    description: |-
                      Specification of the desired behavior of the machine.
                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
                    properties:
                      bootstrap:
                        description: |-
                          Bootstrap is a reference to a local struct which encapsulates
                          fields to configure the Machine’s bootstrapping mechanism.
                        properties:
                          configRef:
                            description: |-
                              ConfigRef is a reference to a bootstrap provider-specific resource
                              that holds configuration details. The reference is optional to
                              allow users/operators to specify Bootstrap.Data without
                              the need of a controller.
                            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
                                  should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                                  For example, if the object reference is to a container within a pod, this would take on a value like:
                                  "spec.containers{name}" (where "name" refers to the name of the container that triggered
                                  the event) or if no container name is specified "spec.containers[2]" (container with
                                  index 2 in this pod). This syntax is chosen only to have some well-defined way of
                                  referencing a part of an object.
                                  TODO: this design is not final and this field is subject to change in the future.
                                type: string
                              kind:
                                description: |-
                                  Kind of the referent.
                                  More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                                type: string
                              name:
                                description: |-
                                  Name of the referent.
                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                type: string
                              namespace:
                                description: |-
                                  Namespace of the referent.
                                  More 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.
                                  More 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.
                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                                type: string
                            type: object
                            x-kubernetes-map-type: atomic
                          data:
                            description: |-
                              Data contains the bootstrap data, such as cloud-init details scripts.
                              If nil, the Machine should remain in the Pending state.


                              Deprecated: Switch to DataSecretName.
                            type: string
                          dataSecretName:
                            description: |-
                              DataSecretName is the name of the secret that stores the bootstrap data script.
                              If nil, the Machine should remain in the Pending state.
                            type: string
                        type: object
                      clusterName:
                        description: ClusterName is the name of the Cluster this object
                          belongs to.
                        minLength: 1
                        type: string
                      failureDomain:
                        description: |-
                          FailureDomain is the failure domain the machine will be created in.
                          Must match a key in the FailureDomains map stored on the cluster object.
                        type: string
                      infrastructureRef:
                        description: |-
                          InfrastructureRef is a required reference to a custom resource
                          offered by an infrastructure provider.
                        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
                              should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                              For example, if the object reference is to a container within a pod, this would take on a value like:
                              "spec.containers{name}" (where "name" refers to the name of the container that triggered
                              the event) or if no container name is specified "spec.containers[2]" (container with
                              index 2 in this pod). This syntax is chosen only to have some well-defined way of
                              referencing a part of an object.
                              TODO: this design is not final and this field is subject to change in the future.
                            type: string
                          kind:
                            description: |-
                              Kind of the referent.
                              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                            type: string
                          name:
                            description: |-
                              Name of the referent.
                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                            type: string
                          namespace:
                            description: |-
                              Namespace of the referent.
                              More 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.
                              More 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.
                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                            type: string
                        type: object
                        x-kubernetes-map-type: atomic
                      nodeDrainTimeout:
                        description: |-
                          NodeDrainTimeout is the total amount of time that the controller will spend on draining a node.
                          The default value is 0, meaning that the node can be drained without any time limitations.
                          NOTE: NodeDrainTimeout is different from `kubectl drain --timeout`
                        type: string
                      providerID:
                        description: |-
                          ProviderID is the identification ID of the machine provided by the provider.
                          This field must match the provider ID as seen on the node object corresponding to this machine.
                          This field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler
                          with cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out
                          machines at provider which could not get registered as Kubernetes nodes. With cluster-api as a
                          generic out-of-tree provider for autoscaler, this field is required by autoscaler to be
                          able to have a provider view of the list of machines. Another list of nodes is queried from the k8s apiserver
                          and then a comparison is done to find out unregistered machines and are marked for delete.
                          This field will be set by the actuators and consumed by higher level entities like autoscaler that will
                          be interfacing with cluster-api as generic provider.
                        type: string
                      version:
                        description: |-
                          Version defines the desired Kubernetes version.
                          This field is meant to be optionally used by bootstrap providers.
                        type: string
                    required:
                    - bootstrap
                    - clusterName
                    - infrastructureRef
                    type: object
                type: object
            required:
            - clusterName
            - template
            type: object
          status:
            description: MachinePoolStatus defines the observed state of MachinePool.
            properties:
              availableReplicas:
                description: The number of available replicas (ready for at least
                  minReadySeconds) for this MachinePool.
                format: int32
                type: integer
              bootstrapReady:
                description: BootstrapReady is the state of the bootstrap provider.
                type: boolean
              conditions:
                description: Conditions define the current service state of the MachinePool.
                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.
                        This should be when the underlying condition changed. If that is not known, then using the time when
                        the API field changed is acceptable.
                      format: date-time
                      type: string
                    message:
                      description: |-
                        A human readable message indicating details about the transition.
                        This field may be empty.
                      type: string
                    reason:
                      description: |-
                        The reason for the condition's last transition in CamelCase.
                        The specific API may choose whether or not this field is considered a guaranteed API.
                        This field may not be empty.
                      type: string
                    severity:
                      description: |-
                        Severity provides an explicit classification of Reason code, so the users or machines can immediately
                        understand the current situation and act accordingly.
                        The 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.
                        Many .condition.type values are consistent across resources like Available, but because arbitrary conditions
                        can be useful (see .node.status.conditions), the ability to deconflict is important.
                      type: string
                  required:
                  - status
                  - type
                  type: object
                type: array
              failureMessage:
                description: |-
                  FailureMessage indicates that there is a problem reconciling the state,
                  and will be set to a descriptive error message.
                type: string
              failureReason:
                description: |-
                  FailureReason indicates that there is a problem reconciling the state, and
                  will be set to a token value suitable for programmatic interpretation.
                type: string
              infrastructureReady:
                description: InfrastructureReady is the state of the infrastructure
                  provider.
                type: boolean
              nodeRefs:
                description: NodeRefs will point to the corresponding Nodes if it
                  they exist.
                items:
                  description: |-
                    ObjectReference contains enough information to let you inspect or modify the referred object.
                    ---
                    New uses of this type are discouraged because of difficulty describing its usage when embedded in APIs.
                     1. Ignored fields.  It includes many fields which are not generally honored.  For instance, ResourceVersion and FieldPath are both very rarely valid in actual usage.
                     2. Invalid usage help.  It is impossible to add specific help for individual usage.  In most embedded usages, there are particular
                        restrictions like, "must refer only to types A and B" or "UID not honored" or "name must be restricted".
                        Those cannot be well described when embedded.
                     3. Inconsistent validation.  Because the usages are different, the validation rules are different by usage, which makes it hard for users to predict what will happen.
                     4. The fields are both imprecise and overly precise.  Kind is not a precise mapping to a URL. This can produce ambiguity
                        during interpretation and require a REST mapping.  In most cases, the dependency is on the group,resource tuple
                        and the version of the actual struct is irrelevant.
                     5. We cannot easily change it.  Because this type is embedded in many locations, updates to this type
                        will affect numerous schemas.  Don't make new APIs embed an underspecified API type they do not control.


                    Instead of using this type, create a locally provided and used type that is well-focused on your reference.
                    For example, ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533 .
                  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
                        should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                        For example, if the object reference is to a container within a pod, this would take on a value like:
                        "spec.containers{name}" (where "name" refers to the name of the container that triggered
                        the event) or if no container name is specified "spec.containers[2]" (container with
                        index 2 in this pod). This syntax is chosen only to have some well-defined way of
                        referencing a part of an object.
                        TODO: this design is not final and this field is subject to change in the future.
                      type: string
                    kind:
                      description: |-
                        Kind of the referent.
                        More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                      type: string
                    name:
                      description: |-
                        Name of the referent.
                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                      type: string
                    namespace:
                      description: |-
                        Namespace of the referent.
                        More 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.
                        More 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.
                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                      type: string
                  type: object
                  x-kubernetes-map-type: atomic
                type: array
              observedGeneration:
                description: ObservedGeneration is the latest generation observed
                  by the controller.
                format: int64
                type: integer
              phase:
                description: |-
                  Phase represents the current phase of cluster actuation.
                  E.g. Pending, Running, Terminating, Failed etc.
                type: string
              readyReplicas:
                description: The number of ready replicas for this MachinePool. A
                  machine is considered ready when the node has been created and is
                  "Ready".
                format: int32
                type: integer
              replicas:
                description: Replicas is the most recently observed number of replicas.
                format: int32
                type: integer
              unavailableReplicas:
                description: |-
                  Total number of unavailable machine instances targeted by this machine pool.
                  This is the total number of machine instances that are still required for
                  the machine pool to have 100% available capacity. They may either
                  be machine instances that are running but not yet available or machine instances
                  that still have not been created.
                format: int32
                type: integer
            type: object
        type: object
    served: false
    storage: false
    subresources:
      scale:
        specReplicasPath: .spec.replicas
        statusReplicasPath: .status.replicas
      status: {}
  - additionalPrinterColumns:
    - description: Time duration since creation of MachinePool
      jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    - description: MachinePool replicas count
      jsonPath: .status.replicas
      name: Replicas
      type: string
    - description: MachinePool status such as Terminating/Pending/Provisioning/Running/Failed
        etc
      jsonPath: .status.phase
      name: Phase
      type: string
    - description: Kubernetes version associated with this MachinePool
      jsonPath: .spec.template.spec.version
      name: Version
      type: string
    deprecated: true
    name: v1alpha4
    schema:
      openAPIV3Schema:
        description: |-
          MachinePool is the Schema for the machinepools API.


          Deprecated: This type will be removed in one of the next releases.
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More 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.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: MachinePoolSpec defines the desired state of MachinePool.
            properties:
              clusterName:
                description: ClusterName is the name of the Cluster this object belongs
                  to.
                minLength: 1
                type: string
              failureDomains:
                description: FailureDomains is the list of failure domains this MachinePool
                  should be attached to.
                items:
                  type: string
                type: array
              minReadySeconds:
                description: |-
                  Minimum number of seconds for which a newly created machine instances should
                  be ready.
                  Defaults to 0 (machine instance will be considered available as soon as it
                  is ready)
                format: int32
                type: integer
              providerIDList:
                description: |-
                  ProviderIDList are the identification IDs of machine instances provided by the provider.
                  This 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
              replicas:
                description: |-
                  Number of desired machines. Defaults to 1.
                  This is a pointer to distinguish between explicit zero and not specified.
                format: int32
                type: integer
              template:
                description: Template describes the machines that will be created.
                properties:
                  metadata:
                    description: |-
                      Standard object's metadata.
                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
                    properties:
                      annotations:
                        additionalProperties:
                          type: string
                        description: |-
                          Annotations is an unstructured key value map stored with a resource that may be
                          set by external tools to store and retrieve arbitrary metadata. They are not
                          queryable and should be preserved when modifying objects.
                          More info: http://kubernetes.io/docs/user-guide/annotations
                        type: object
                      labels:
                        additionalProperties:
                          type: string
                        description: |-
                          Map of string keys and values that can be used to organize and categorize
                          (scope and select) objects. May match selectors of replication controllers
                          and services.
                          More info: http://kubernetes.io/docs/user-guide/labels
                        type: object
                    type: object
                  spec:
                    description: |-
                      Specification of the desired behavior of the machine.
                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
                    properties:
                      bootstrap:
                        description: |-
                          Bootstrap is a reference to a local struct which encapsulates
                          fields to configure the Machine’s bootstrapping mechanism.
                        properties:
                          configRef:
                            description: |-
                              ConfigRef is a reference to a bootstrap provider-specific resource
                              that holds configuration details. The reference is optional to
                              allow users/operators to specify Bootstrap.DataSecretName without
                              the need of a controller.
                            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
                                  should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                                  For example, if the object reference is to a container within a pod, this would take on a value like:
                                  "spec.containers{name}" (where "name" refers to the name of the container that triggered
                                  the event) or if no container name is specified "spec.containers[2]" (container with
                                  index 2 in this pod). This syntax is chosen only to have some well-defined way of
                                  referencing a part of an object.
                                  TODO: this design is not final and this field is subject to change in the future.
                                type: string
                              kind:
                                description: |-
                                  Kind of the referent.
                                  More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                                type: string
                              name:
                                description: |-
                                  Name of the referent.
                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                type: string
                              namespace:
                                description: |-
                                  Namespace of the referent.
                                  More 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.
                                  More 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.
                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                                type: string
                            type: object
                            x-kubernetes-map-type: atomic
                          dataSecretName:
                            description: |-
                              DataSecretName is the name of the secret that stores the bootstrap data script.
                              If nil, the Machine should remain in the Pending state.
                            type: string
                        type: object
                      clusterName:
                        description: ClusterName is the name of the Cluster this object
                          belongs to.
                        minLength: 1
                        type: string
                      failureDomain:
                        description: |-
                          FailureDomain is the failure domain the machine will be created in.
                          Must match a key in the FailureDomains map stored on the cluster object.
                        type: string
                      infrastructureRef:
                        description: |-
                          InfrastructureRef is a required reference to a custom resource
                          offered by an infrastructure provider.
                        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
                              should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                              For example, if the object reference is to a container within a pod, this would take on a value like:
                              "spec.containers{name}" (where "name" refers to the name of the container that triggered
                              the event) or if no container name is specified "spec.containers[2]" (container with
                              index 2 in this pod). This syntax is chosen only to have some well-defined way of
                              referencing a part of an object.
                              TODO: this design is not final and this field is subject to change in the future.
                            type: string
                          kind:
                            description: |-
                              Kind of the referent.
                              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                            type: string
                          name:
                            description: |-
                              Name of the referent.
                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                            type: string
                          namespace:
                            description: |-
                              Namespace of the referent.
                              More 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.
                              More 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.
                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                            type: string
                        type: object
                        x-kubernetes-map-type: atomic
                      nodeDrainTimeout:
                        description: |-
                          NodeDrainTimeout is the total amount of time that the controller will spend on draining a node.
                          The default value is 0, meaning that the node can be drained without any time limitations.
                          NOTE: NodeDrainTimeout is different from `kubectl drain --timeout`
                        type: string
                      providerID:
                        description: |-
                          ProviderID is the identification ID of the machine provided by the provider.
                          This field must match the provider ID as seen on the node object corresponding to this machine.
                          This field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler
                          with cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out
                          machines at provider which could not get registered as Kubernetes nodes. With cluster-api as a
                          generic out-of-tree provider for autoscaler, this field is required by autoscaler to be
                          able to have a provider view of the list of machines. Another list of nodes is queried from the k8s apiserver
                          and then a comparison is done to find out unregistered machines and are marked for delete.
                          This field will be set by the actuators and consumed by higher level entities like autoscaler that will
                          be interfacing with cluster-api as generic provider.
                        type: string
                      version:
                        description: |-
                          Version defines the desired Kubernetes version.
                          This field is meant to be optionally used by bootstrap providers.
                        type: string
                    required:
                    - bootstrap
                    - clusterName
                    - infrastructureRef
                    type: object
                type: object
            required:
            - clusterName
            - template
            type: object
          status:
            description: MachinePoolStatus defines the observed state of MachinePool.
            properties:
              availableReplicas:
                description: The number of available replicas (ready for at least
                  minReadySeconds) for this MachinePool.
                format: int32
                type: integer
              bootstrapReady:
                description: BootstrapReady is the state of the bootstrap provider.
                type: boolean
              conditions:
                description: Conditions define the current service state of the MachinePool.
                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.
                        This should be when the underlying condition changed. If that is not known, then using the time when
                        the API field changed is acceptable.
                      format: date-time
                      type: string
                    message:
                      description: |-
                        A human readable message indicating details about the transition.
                        This field may be empty.
                      type: string
                    reason:
                      description: |-
                        The reason for the condition's last transition in CamelCase.
                        The specific API may choose whether or not this field is considered a guaranteed API.
                        This field may not be empty.
                      type: string
                    severity:
                      description: |-
                        Severity provides an explicit classification of Reason code, so the users or machines can immediately
                        understand the current situation and act accordingly.
                        The 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.
                        Many .condition.type values are consistent across resources like Available, but because arbitrary conditions
                        can be useful (see .node.status.conditions), the ability to deconflict is important.
                      type: string
                  required:
                  - status
                  - type
                  type: object
                type: array
              failureMessage:
                description: |-
                  FailureMessage indicates that there is a problem reconciling the state,
                  and will be set to a descriptive error message.
                type: string
              failureReason:
                description: |-
                  FailureReason indicates that there is a problem reconciling the state, and
                  will be set to a token value suitable for programmatic interpretation.
                type: string
              infrastructureReady:
                description: InfrastructureReady is the state of the infrastructure
                  provider.
                type: boolean
              nodeRefs:
                description: NodeRefs will point to the corresponding Nodes if it
                  they exist.
                items:
                  description: |-
                    ObjectReference contains enough information to let you inspect or modify the referred object.
                    ---
                    New uses of this type are discouraged because of difficulty describing its usage when embedded in APIs.
                     1. Ignored fields.  It includes many fields which are not generally honored.  For instance, ResourceVersion and FieldPath are both very rarely valid in actual usage.
                     2. Invalid usage help.  It is impossible to add specific help for individual usage.  In most embedded usages, there are particular
                        restrictions like, "must refer only to types A and B" or "UID not honored" or "name must be restricted".
                        Those cannot be well described when embedded.
                     3. Inconsistent validation.  Because the usages are different, the validation rules are different by usage, which makes it hard for users to predict what will happen.
                     4. The fields are both imprecise and overly precise.  Kind is not a precise mapping to a URL. This can produce ambiguity
                        during interpretation and require a REST mapping.  In most cases, the dependency is on the group,resource tuple
                        and the version of the actual struct is irrelevant.
                     5. We cannot easily change it.  Because this type is embedded in many locations, updates to this type
                        will affect numerous schemas.  Don't make new APIs embed an underspecified API type they do not control.


                    Instead of using this type, create a locally provided and used type that is well-focused on your reference.
                    For example, ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533 .
                  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
                        should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                        For example, if the object reference is to a container within a pod, this would take on a value like:
                        "spec.containers{name}" (where "name" refers to the name of the container that triggered
                        the event) or if no container name is specified "spec.containers[2]" (container with
                        index 2 in this pod). This syntax is chosen only to have some well-defined way of
                        referencing a part of an object.
                        TODO: this design is not final and this field is subject to change in the future.
                      type: string
                    kind:
                      description: |-
                        Kind of the referent.
                        More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                      type: string
                    name:
                      description: |-
                        Name of the referent.
                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                      type: string
                    namespace:
                      description: |-
                        Namespace of the referent.
                        More 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.
                        More 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.
                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                      type: string
                  type: object
                  x-kubernetes-map-type: atomic
                type: array
              observedGeneration:
                description: ObservedGeneration is the latest generation observed
                  by the controller.
                format: int64
                type: integer
              phase:
                description: |-
                  Phase represents the current phase of cluster actuation.
                  E.g. Pending, Running, Terminating, Failed etc.
                type: string
              readyReplicas:
                description: The number of ready replicas for this MachinePool. A
                  machine is considered ready when the node has been created and is
                  "Ready".
                format: int32
                type: integer
              replicas:
                description: Replicas is the most recently observed number of replicas.
                format: int32
                type: integer
              unavailableReplicas:
                description: |-
                  Total number of unavailable machine instances targeted by this machine pool.
                  This is the total number of machine instances that are still required for
                  the machine pool to have 100% available capacity. They may either
                  be machine instances that are running but not yet available or machine instances
                  that still have not been created.
                format: int32
                type: integer
            type: object
        type: object
    served: false
    storage: false
    subresources:
      scale:
        specReplicasPath: .spec.replicas
        statusReplicasPath: .status.replicas
      status: {}
  - additionalPrinterColumns:
    - description: Cluster
      jsonPath: .spec.clusterName
      name: Cluster
      type: string
    - description: Total number of machines desired by this MachinePool
      jsonPath: .spec.replicas
      name: Desired
      priority: 10
      type: integer
    - description: MachinePool replicas count
      jsonPath: .status.replicas
      name: Replicas
      type: string
    - description: MachinePool status such as Terminating/Pending/Provisioning/Running/Failed
        etc
      jsonPath: .status.phase
      name: Phase
      type: string
    - description: Time duration since creation of MachinePool
      jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    - description: Kubernetes version associated with this MachinePool
      jsonPath: .spec.template.spec.version
      name: Version
      type: string
    name: v1beta1
    schema:
      openAPIV3Schema:
        description: MachinePool is the Schema for the machinepools API.
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More 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.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: MachinePoolSpec defines the desired state of MachinePool.
            properties:
              clusterName:
                description: ClusterName is the name of the Cluster this object belongs
                  to.
                minLength: 1
                type: string
              failureDomains:
                description: FailureDomains is the list of failure domains this MachinePool
                  should be attached to.
                items:
                  type: string
                type: array
              minReadySeconds:
                description: |-
                  Minimum number of seconds for which a newly created machine instances should
                  be ready.
                  Defaults to 0 (machine instance will be considered available as soon as it
                  is ready)
                format: int32
                type: integer
              providerIDList:
                description: |-
                  ProviderIDList are the identification IDs of machine instances provided by the provider.
                  This 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
              replicas:
                description: |-
                  Number of desired machines. Defaults to 1.
                  This is a pointer to distinguish between explicit zero and not specified.
                format: int32
                type: integer
              template:
                description: Template describes the machines that will be created.
                properties:
                  metadata:
                    description: |-
                      Standard object's metadata.
                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
                    properties:
                      annotations:
                        additionalProperties:
                          type: string
                        description: |-
                          Annotations is an unstructured key value map stored with a resource that may be
                          set by external tools to store and retrieve arbitrary metadata. They are not
                          queryable and should be preserved when modifying objects.
                          More info: http://kubernetes.io/docs/user-guide/annotations
                        type: object
                      labels:
                        additionalProperties:
                          type: string
                        description: |-
                          Map of string keys and values that can be used to organize and categorize
                          (scope and select) objects. May match selectors of replication controllers
                          and services.
                          More info: http://kubernetes.io/docs/user-guide/labels
                        type: object
                    type: object
                  spec:
                    description: |-
                      Specification of the desired behavior of the machine.
                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
                    properties:
                      bootstrap:
                        description: |-
                          Bootstrap is a reference to a local struct which encapsulates
                          fields to configure the Machine’s bootstrapping mechanism.
                        properties:
                          configRef:
                            description: |-
                              ConfigRef is a reference to a bootstrap provider-specific resource
                              that holds configuration details. The reference is optional to
                              allow users/operators to specify Bootstrap.DataSecretName without
                              the need of a controller.
                            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
                                  should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                                  For example, if the object reference is to a container within a pod, this would take on a value like:
                                  "spec.containers{name}" (where "name" refers to the name of the container that triggered
                                  the event) or if no container name is specified "spec.containers[2]" (container with
                                  index 2 in this pod). This syntax is chosen only to have some well-defined way of
                                  referencing a part of an object.
                                  TODO: this design is not final and this field is subject to change in the future.
                                type: string
                              kind:
                                description: |-
                                  Kind of the referent.
                                  More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                                type: string
                              name:
                                description: |-
                                  Name of the referent.
                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                type: string
                              namespace:
                                description: |-
                                  Namespace of the referent.
                                  More 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.
                                  More 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.
                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                                type: string
                            type: object
                            x-kubernetes-map-type: atomic
                          dataSecretName:
                            description: |-
                              DataSecretName is the name of the secret that stores the bootstrap data script.
                              If nil, the Machine should remain in the Pending state.
                            type: string
                        type: object
                      clusterName:
                        description: ClusterName is the name of the Cluster this object
                          belongs to.
                        minLength: 1
                        type: string
                      failureDomain:
                        description: |-
                          FailureDomain is the failure domain the machine will be created in.
                          Must match a key in the FailureDomains map stored on the cluster object.
                        type: string
                      infrastructureRef:
                        description: |-
                          InfrastructureRef is a required reference to a custom resource
                          offered by an infrastructure provider.
                        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
                              should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                              For example, if the object reference is to a container within a pod, this would take on a value like:
                              "spec.containers{name}" (where "name" refers to the name of the container that triggered
                              the event) or if no container name is specified "spec.containers[2]" (container with
                              index 2 in this pod). This syntax is chosen only to have some well-defined way of
                              referencing a part of an object.
                              TODO: this design is not final and this field is subject to change in the future.
                            type: string
                          kind:
                            description: |-
                              Kind of the referent.
                              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                            type: string
                          name:
                            description: |-
                              Name of the referent.
                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                            type: string
                          namespace:
                            description: |-
                              Namespace of the referent.
                              More 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.
                              More 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.
                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                            type: string
                        type: object
                        x-kubernetes-map-type: atomic
                      nodeDeletionTimeout:
                        description: |-
                          NodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine
                          hosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely.
                          Defaults to 10 seconds.
                        type: string
                      nodeDrainTimeout:
                        description: |-
                          NodeDrainTimeout is the total amount of time that the controller will spend on draining a node.
                          The default value is 0, meaning that the node can be drained without any time limitations.
                          NOTE: NodeDrainTimeout is different from `kubectl drain --timeout`
                        type: string
                      nodeVolumeDetachTimeout:
                        description: |-
                          NodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes
                          to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations.
                        type: string
                      providerID:
                        description: |-
                          ProviderID is the identification ID of the machine provided by the provider.
                          This field must match the provider ID as seen on the node object corresponding to this machine.
                          This field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler
                          with cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out
                          machines at provider which could not get registered as Kubernetes nodes. With cluster-api as a
                          generic out-of-tree provider for autoscaler, this field is required by autoscaler to be
                          able to have a provider view of the list of machines. Another list of nodes is queried from the k8s apiserver
                          and then a comparison is done to find out unregistered machines and are marked for delete.
                          This field will be set by the actuators and consumed by higher level entities like autoscaler that will
                          be interfacing with cluster-api as generic provider.
                        type: string
                      version:
                        description: |-
                          Version defines the desired Kubernetes version.
                          This field is meant to be optionally used by bootstrap providers.
                        type: string
                    required:
                    - bootstrap
                    - clusterName
                    - infrastructureRef
                    type: object
                type: object
            required:
            - clusterName
            - template
            type: object
          status:
            description: MachinePoolStatus defines the observed state of MachinePool.
            properties:
              availableReplicas:
                description: The number of available replicas (ready for at least
                  minReadySeconds) for this MachinePool.
                format: int32
                type: integer
              bootstrapReady:
                description: BootstrapReady is the state of the bootstrap provider.
                type: boolean
              conditions:
                description: Conditions define the current service state of the MachinePool.
                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.
                        This should be when the underlying condition changed. If that is not known, then using the time when
                        the API field changed is acceptable.
                      format: date-time
                      type: string
                    message:
                      description: |-
                        A human readable message indicating details about the transition.
                        This field may be empty.
                      type: string
                    reason:
                      description: |-
                        The reason for the condition's last transition in CamelCase.
                        The specific API may choose whether or not this field is considered a guaranteed API.
                        This field may not be empty.
                      type: string
                    severity:
                      description: |-
                        Severity provides an explicit classification of Reason code, so the users or machines can immediately
                        understand the current situation and act accordingly.
                        The 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.
                        Many .condition.type values are consistent across resources like Available, but because arbitrary conditions
                        can be useful (see .node.status.conditions), the ability to deconflict is important.
                      type: string
                  required:
                  - lastTransitionTime
                  - status
                  - type
                  type: object
                type: array
              failureMessage:
                description: |-
                  FailureMessage indicates that there is a problem reconciling the state,
                  and will be set to a descriptive error message.
                type: string
              failureReason:
                description: |-
                  FailureReason indicates that there is a problem reconciling the state, and
                  will be set to a token value suitable for programmatic interpretation.
                type: string
              infrastructureReady:
                description: InfrastructureReady is the state of the infrastructure
                  provider.
                type: boolean
              nodeRefs:
                description: NodeRefs will point to the corresponding Nodes if it
                  they exist.
                items:
                  description: |-
                    ObjectReference contains enough information to let you inspect or modify the referred object.
                    ---
                    New uses of this type are discouraged because of difficulty describing its usage when embedded in APIs.
                     1. Ignored fields.  It includes many fields which are not generally honored.  For instance, ResourceVersion and FieldPath are both very rarely valid in actual usage.
                     2. Invalid usage help.  It is impossible to add specific help for individual usage.  In most embedded usages, there are particular
                        restrictions like, "must refer only to types A and B" or "UID not honored" or "name must be restricted".
                        Those cannot be well described when embedded.
                     3. Inconsistent validation.  Because the usages are different, the validation rules are different by usage, which makes it hard for users to predict what will happen.
                     4. The fields are both imprecise and overly precise.  Kind is not a precise mapping to a URL. This can produce ambiguity
                        during interpretation and require a REST mapping.  In most cases, the dependency is on the group,resource tuple
                        and the version of the actual struct is irrelevant.
                     5. We cannot easily change it.  Because this type is embedded in many locations, updates to this type
                        will affect numerous schemas.  Don't make new APIs embed an underspecified API type they do not control.


                    Instead of using this type, create a locally provided and used type that is well-focused on your reference.
                    For example, ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533 .
                  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
                        should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                        For example, if the object reference is to a container within a pod, this would take on a value like:
                        "spec.containers{name}" (where "name" refers to the name of the container that triggered
                        the event) or if no container name is specified "spec.containers[2]" (container with
                        index 2 in this pod). This syntax is chosen only to have some well-defined way of
                        referencing a part of an object.
                        TODO: this design is not final and this field is subject to change in the future.
                      type: string
                    kind:
                      description: |-
                        Kind of the referent.
                        More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                      type: string
                    name:
                      description: |-
                        Name of the referent.
                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                      type: string
                    namespace:
                      description: |-
                        Namespace of the referent.
                        More 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.
                        More 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.
                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                      type: string
                  type: object
                  x-kubernetes-map-type: atomic
                type: array
              observedGeneration:
                description: ObservedGeneration is the latest generation observed
                  by the controller.
                format: int64
                type: integer
              phase:
                description: |-
                  Phase represents the current phase of cluster actuation.
                  E.g. Pending, Running, Terminating, Failed etc.
                type: string
              readyReplicas:
                description: The number of ready replicas for this MachinePool. A
                  machine is considered ready when the node has been created and is
                  "Ready".
                format: int32
                type: integer
              replicas:
                description: Replicas is the most recently observed number of replicas.
                format: int32
                type: integer
              unavailableReplicas:
                description: |-
                  Total number of unavailable machine instances targeted by this machine pool.
                  This is the total number of machine instances that are still required for
                  the machine pool to have 100% available capacity. They may either
                  be machine instances that are running but not yet available or machine instances
                  that still have not been created.
                format: int32
                type: integer
            type: object
        type: object
    served: true
    storage: true
    subresources:
      scale:
        specReplicasPath: .spec.replicas
        statusReplicasPath: .status.replicas
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: null
  storedVersions: null
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.15.0
    service.beta.openshift.io/inject-cabundle: "true"
  creationTimestamp: null
  labels:
    cluster.x-k8s.io/provider: cluster-api
    clusterctl.cluster.x-k8s.io: ""
  name: clusterresourcesets.addons.cluster.x-k8s.io
spec:
  group: addons.cluster.x-k8s.io
  names:
    categories:
    - cluster-api
    kind: ClusterResourceSet
    listKind: ClusterResourceSetList
    plural: clusterresourcesets
    singular: clusterresourceset
  scope: Namespaced
  versions:
  - deprecated: true
    name: v1alpha3
    schema:
      openAPIV3Schema:
        description: |-
          ClusterResourceSet is the Schema for the clusterresourcesets API.


          Deprecated: This type will be removed in one of the next releases.
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More 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.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: ClusterResourceSetSpec defines the desired state of ClusterResourceSet.
            properties:
              clusterSelector:
                description: |-
                  Label selector for Clusters. The Clusters that are
                  selected by this will be the ones affected by this ClusterResourceSet.
                  It must match the Cluster labels. This field is immutable.
                properties:
                  matchExpressions:
                    description: matchExpressions is a list of label selector requirements.
                      The requirements are ANDed.
                    items:
                      description: |-
                        A label selector requirement is a selector that contains values, a key, and an operator that
                        relates the key and values.
                      properties:
                        key:
                          description: key is the label key that the selector applies
                            to.
                          type: string
                        operator:
                          description: |-
                            operator represents a key's relationship to a set of values.
                            Valid operators are In, NotIn, Exists and DoesNotExist.
                          type: string
                        values:
                          description: |-
                            values is an array of string values. If the operator is In or NotIn,
                            the values array must be non-empty. If the operator is Exists or DoesNotExist,
                            the values array must be empty. This array is replaced during a strategic
                            merge patch.
                          items:
                            type: string
                          type: array
                          x-kubernetes-list-type: atomic
                      required:
                      - key
                      - operator
                      type: object
                    type: array
                    x-kubernetes-list-type: atomic
                  matchLabels:
                    additionalProperties:
                      type: string
                    description: |-
                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                      map is equivalent to an element of matchExpressions, whose key field is "key", the
                      operator is "In", and the values array contains only "value". The requirements are ANDed.
                    type: object
                type: object
                x-kubernetes-map-type: atomic
              resources:
                description: Resources is a list of Secrets/ConfigMaps where each
                  contains 1 or more resources to be applied to remote clusters.
                items:
                  description: ResourceRef specifies a resource.
                  properties:
                    kind:
                      description: 'Kind of the resource. Supported kinds are: Secrets
                        and ConfigMaps.'
                      enum:
                      - Secret
                      - ConfigMap
                      type: string
                    name:
                      description: Name of the resource that is in the same namespace
                        with ClusterResourceSet object.
                      minLength: 1
                      type: string
                  required:
                  - kind
                  - name
                  type: object
                type: array
              strategy:
                description: Strategy is the strategy to be used during applying resources.
                  Defaults to ApplyOnce. This field is immutable.
                enum:
                - ApplyOnce
                type: string
            required:
            - clusterSelector
            type: object
          status:
            description: ClusterResourceSetStatus defines the observed state of ClusterResourceSet.
            properties:
              conditions:
                description: Conditions defines current state of the ClusterResourceSet.
                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.
                        This should be when the underlying condition changed. If that is not known, then using the time when
                        the API field changed is acceptable.
                      format: date-time
                      type: string
                    message:
                      description: |-
                        A human readable message indicating details about the transition.
                        This field may be empty.
                      type: string
                    reason:
                      description: |-
                        The reason for the condition's last transition in CamelCase.
                        The specific API may choose whether or not this field is considered a guaranteed API.
                        This field may not be empty.
                      type: string
                    severity:
                      description: |-
                        Severity provides an explicit classification of Reason code, so the users or machines can immediately
                        understand the current situation and act accordingly.
                        The 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.
                        Many .condition.type values are consistent across resources like Available, but because arbitrary conditions
                        can be useful (see .node.status.conditions), the ability to deconflict is important.
                      type: string
                  required:
                  - status
                  - type
                  type: object
                type: array
              observedGeneration:
                description: ObservedGeneration reflects the generation of the most
                  recently observed ClusterResourceSet.
                format: int64
                type: integer
            type: object
        type: object
    served: false
    storage: false
    subresources:
      status: {}
  - additionalPrinterColumns:
    - description: Time duration since creation of ClusterResourceSet
      jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    deprecated: true
    name: v1alpha4
    schema:
      openAPIV3Schema:
        description: |-
          ClusterResourceSet is the Schema for the clusterresourcesets API.


          Deprecated: This type will be removed in one of the next releases.
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More 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.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: ClusterResourceSetSpec defines the desired state of ClusterResourceSet.
            properties:
              clusterSelector:
                description: |-
                  Label selector for Clusters. The Clusters that are
                  selected by this will be the ones affected by this ClusterResourceSet.
                  It must match the Cluster labels. This field is immutable.
                  Label selector cannot be empty.
                properties:
                  matchExpressions:
                    description: matchExpressions is a list of label selector requirements.
                      The requirements are ANDed.
                    items:
                      description: |-
                        A label selector requirement is a selector that contains values, a key, and an operator that
                        relates the key and values.
                      properties:
                        key:
                          description: key is the label key that the selector applies
                            to.
                          type: string
                        operator:
                          description: |-
                            operator represents a key's relationship to a set of values.
                            Valid operators are In, NotIn, Exists and DoesNotExist.
                          type: string
                        values:
                          description: |-
                            values is an array of string values. If the operator is In or NotIn,
                            the values array must be non-empty. If the operator is Exists or DoesNotExist,
                            the values array must be empty. This array is replaced during a strategic
                            merge patch.
                          items:
                            type: string
                          type: array
                          x-kubernetes-list-type: atomic
                      required:
                      - key
                      - operator
                      type: object
                    type: array
                    x-kubernetes-list-type: atomic
                  matchLabels:
                    additionalProperties:
                      type: string
                    description: |-
                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                      map is equivalent to an element of matchExpressions, whose key field is "key", the
                      operator is "In", and the values array contains only "value". The requirements are ANDed.
                    type: object
                type: object
                x-kubernetes-map-type: atomic
              resources:
                description: Resources is a list of Secrets/ConfigMaps where each
                  contains 1 or more resources to be applied to remote clusters.
                items:
                  description: ResourceRef specifies a resource.
                  properties:
                    kind:
                      description: 'Kind of the resource. Supported kinds are: Secrets
                        and ConfigMaps.'
                      enum:
                      - Secret
                      - ConfigMap
                      type: string
                    name:
                      description: Name of the resource that is in the same namespace
                        with ClusterResourceSet object.
                      minLength: 1
                      type: string
                  required:
                  - kind
                  - name
                  type: object
                type: array
              strategy:
                description: Strategy is the strategy to be used during applying resources.
                  Defaults to ApplyOnce. This field is immutable.
                enum:
                - ApplyOnce
                type: string
            required:
            - clusterSelector
            type: object
          status:
            description: ClusterResourceSetStatus defines the observed state of ClusterResourceSet.
            properties:
              conditions:
                description: Conditions defines current state of the ClusterResourceSet.
                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.
                        This should be when the underlying condition changed. If that is not known, then using the time when
                        the API field changed is acceptable.
                      format: date-time
                      type: string
                    message:
                      description: |-
                        A human readable message indicating details about the transition.
                        This field may be empty.
                      type: string
                    reason:
                      description: |-
                        The reason for the condition's last transition in CamelCase.
                        The specific API may choose whether or not this field is considered a guaranteed API.
                        This field may not be empty.
                      type: string
                    severity:
                      description: |-
                        Severity provides an explicit classification of Reason code, so the users or machines can immediately
                        understand the current situation and act accordingly.
                        The 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.
                        Many .condition.type values are consistent across resources like Available, but because arbitrary conditions
                        can be useful (see .node.status.conditions), the ability to deconflict is important.
                      type: string
                  required:
                  - status
                  - type
                  type: object
                type: array
              observedGeneration:
                description: ObservedGeneration reflects the generation of the most
                  recently observed ClusterResourceSet.
                format: int64
                type: integer
            type: object
        type: object
    served: false
    storage: false
    subresources:
      status: {}
  - additionalPrinterColumns:
    - description: Time duration since creation of ClusterResourceSet
      jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1beta1
    schema:
      openAPIV3Schema:
        description: ClusterResourceSet is the Schema for the clusterresourcesets
          API.
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More 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.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: ClusterResourceSetSpec defines the desired state of ClusterResourceSet.
            properties:
              clusterSelector:
                description: |-
                  Label selector for Clusters. The Clusters that are
                  selected by this will be the ones affected by this ClusterResourceSet.
                  It must match the Cluster labels. This field is immutable.
                  Label selector cannot be empty.
                properties:
                  matchExpressions:
                    description: matchExpressions is a list of label selector requirements.
                      The requirements are ANDed.
                    items:
                      description: |-
                        A label selector requirement is a selector that contains values, a key, and an operator that
                        relates the key and values.
                      properties:
                        key:
                          description: key is the label key that the selector applies
                            to.
                          type: string
                        operator:
                          description: |-
                            operator represents a key's relationship to a set of values.
                            Valid operators are In, NotIn, Exists and DoesNotExist.
                          type: string
                        values:
                          description: |-
                            values is an array of string values. If the operator is In or NotIn,
                            the values array must be non-empty. If the operator is Exists or DoesNotExist,
                            the values array must be empty. This array is replaced during a strategic
                            merge patch.
                          items:
                            type: string
                          type: array
                          x-kubernetes-list-type: atomic
                      required:
                      - key
                      - operator
                      type: object
                    type: array
                    x-kubernetes-list-type: atomic
                  matchLabels:
                    additionalProperties:
                      type: string
                    description: |-
                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                      map is equivalent to an element of matchExpressions, whose key field is "key", the
                      operator is "In", and the values array contains only "value". The requirements are ANDed.
                    type: object
                type: object
                x-kubernetes-map-type: atomic
              resources:
                description: Resources is a list of Secrets/ConfigMaps where each
                  contains 1 or more resources to be applied to remote clusters.
                items:
                  description: ResourceRef specifies a resource.
                  properties:
                    kind:
                      description: 'Kind of the resource. Supported kinds are: Secrets
                        and ConfigMaps.'
                      enum:
                      - Secret
                      - ConfigMap
                      type: string
                    name:
                      description: Name of the resource that is in the same namespace
                        with ClusterResourceSet object.
                      minLength: 1
                      type: string
                  required:
                  - kind
                  - name
                  type: object
                type: array
              strategy:
                description: Strategy is the strategy to be used during applying resources.
                  Defaults to ApplyOnce. This field is immutable.
                enum:
                - ApplyOnce
                - Reconcile
                type: string
            required:
            - clusterSelector
            type: object
          status:
            description: ClusterResourceSetStatus defines the observed state of ClusterResourceSet.
            properties:
              conditions:
                description: Conditions defines current state of the ClusterResourceSet.
                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.
                        This should be when the underlying condition changed. If that is not known, then using the time when
                        the API field changed is acceptable.
                      format: date-time
                      type: string
                    message:
                      description: |-
                        A human readable message indicating details about the transition.
                        This field may be empty.
                      type: string
                    reason:
                      description: |-
                        The reason for the condition's last transition in CamelCase.
                        The specific API may choose whether or not this field is considered a guaranteed API.
                        This field may not be empty.
                      type: string
                    severity:
                      description: |-
                        Severity provides an explicit classification of Reason code, so the users or machines can immediately
                        understand the current situation and act accordingly.
                        The 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.
                        Many .condition.type values are consistent across resources like Available, but because arbitrary conditions
                        can be useful (see .node.status.conditions), the ability to deconflict is important.
                      type: string
                  required:
                  - lastTransitionTime
                  - status
                  - type
                  type: object
                type: array
              observedGeneration:
                description: ObservedGeneration reflects the generation of the most
                  recently observed ClusterResourceSet.
                format: int64
                type: integer
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: null
  storedVersions: null
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.15.0
    service.beta.openshift.io/inject-cabundle: "true"
  creationTimestamp: null
  labels:
    cluster.x-k8s.io/provider: cluster-api
    clusterctl.cluster.x-k8s.io: ""
  name: clusterresourcesetbindings.addons.cluster.x-k8s.io
spec:
  group: addons.cluster.x-k8s.io
  names:
    categories:
    - cluster-api
    kind: ClusterResourceSetBinding
    listKind: ClusterResourceSetBindingList
    plural: clusterresourcesetbindings
    singular: clusterresourcesetbinding
  scope: Namespaced
  versions:
  - deprecated: true
    name: v1alpha3
    schema:
      openAPIV3Schema:
        description: |-
          ClusterResourceSetBinding lists all matching ClusterResourceSets with the cluster it belongs to.


          Deprecated: This type will be removed in one of the next releases.
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More 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.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: ClusterResourceSetBindingSpec defines the desired state of
              ClusterResourceSetBinding.
            properties:
              bindings:
                description: Bindings is a list of ClusterResourceSets and their resources.
                items:
                  description: ResourceSetBinding keeps info on all of the resources
                    in a ClusterResourceSet.
                  properties:
                    clusterResourceSetName:
                      description: ClusterResourceSetName is the name of the ClusterResourceSet
                        that is applied to the owner cluster of the binding.
                      type: string
                    resources:
                      description: Resources is a list of resources that the ClusterResourceSet
                        has.
                      items:
                        description: ResourceBinding shows the status of a resource
                          that belongs to a ClusterResourceSet matched by the owner
                          cluster of the ClusterResourceSetBinding object.
                        properties:
                          applied:
                            description: Applied is to track if a resource is applied
                              to the cluster or not.
                            type: boolean
                          hash:
                            description: |-
                              Hash is the hash of a resource's data. This can be used to decide if a resource is changed.
                              For "ApplyOnce" ClusterResourceSet.spec.strategy, this is no-op as that strategy does not act on change.
                            type: string
                          kind:
                            description: 'Kind of the resource. Supported kinds are:
                              Secrets and ConfigMaps.'
                            enum:
                            - Secret
                            - ConfigMap
                            type: string
                          lastAppliedTime:
                            description: LastAppliedTime identifies when this resource
                              was last applied to the cluster.
                            format: date-time
                            type: string
                          name:
                            description: Name of the resource that is in the same
                              namespace with ClusterResourceSet object.
                            minLength: 1
                            type: string
                        required:
                        - applied
                        - kind
                        - name
                        type: object
                      type: array
                  required:
                  - clusterResourceSetName
                  type: object
                type: array
            type: object
        type: object
    served: false
    storage: false
    subresources:
      status: {}
  - additionalPrinterColumns:
    - description: Time duration since creation of ClusterResourceSetBinding
      jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    deprecated: true
    name: v1alpha4
    schema:
      openAPIV3Schema:
        description: |-
          ClusterResourceSetBinding lists all matching ClusterResourceSets with the cluster it belongs to.


          Deprecated: This type will be removed in one of the next releases.
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More 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.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: ClusterResourceSetBindingSpec defines the desired state of
              ClusterResourceSetBinding.
            properties:
              bindings:
                description: Bindings is a list of ClusterResourceSets and their resources.
                items:
                  description: ResourceSetBinding keeps info on all of the resources
                    in a ClusterResourceSet.
                  properties:
                    clusterResourceSetName:
                      description: ClusterResourceSetName is the name of the ClusterResourceSet
                        that is applied to the owner cluster of the binding.
                      type: string
                    resources:
                      description: Resources is a list of resources that the ClusterResourceSet
                        has.
                      items:
                        description: ResourceBinding shows the status of a resource
                          that belongs to a ClusterResourceSet matched by the owner
                          cluster of the ClusterResourceSetBinding object.
                        properties:
                          applied:
                            description: Applied is to track if a resource is applied
                              to the cluster or not.
                            type: boolean
                          hash:
                            description: |-
                              Hash is the hash of a resource's data. This can be used to decide if a resource is changed.
                              For "ApplyOnce" ClusterResourceSet.spec.strategy, this is no-op as that strategy does not act on change.
                            type: string
                          kind:
                            description: 'Kind of the resource. Supported kinds are:
                              Secrets and ConfigMaps.'
                            enum:
                            - Secret
                            - ConfigMap
                            type: string
                          lastAppliedTime:
                            description: LastAppliedTime identifies when this resource
                              was last applied to the cluster.
                            format: date-time
                            type: string
                          name:
                            description: Name of the resource that is in the same
                              namespace with ClusterResourceSet object.
                            minLength: 1
                            type: string
                        required:
                        - applied
                        - kind
                        - name
                        type: object
                      type: array
                  required:
                  - clusterResourceSetName
                  type: object
                type: array
            type: object
        type: object
    served: false
    storage: false
    subresources:
      status: {}
  - additionalPrinterColumns:
    - description: Time duration since creation of ClusterResourceSetBinding
      jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1beta1
    schema:
      openAPIV3Schema:
        description: ClusterResourceSetBinding lists all matching ClusterResourceSets
          with the cluster it belongs to.
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More 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.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: ClusterResourceSetBindingSpec defines the desired state of
              ClusterResourceSetBinding.
            properties:
              bindings:
                description: Bindings is a list of ClusterResourceSets and their resources.
                items:
                  description: ResourceSetBinding keeps info on all of the resources
                    in a ClusterResourceSet.
                  properties:
                    clusterResourceSetName:
                      description: ClusterResourceSetName is the name of the ClusterResourceSet
                        that is applied to the owner cluster of the binding.
                      type: string
                    resources:
                      description: Resources is a list of resources that the ClusterResourceSet
                        has.
                      items:
                        description: ResourceBinding shows the status of a resource
                          that belongs to a ClusterResourceSet matched by the owner
                          cluster of the ClusterResourceSetBinding object.
                        properties:
                          applied:
                            description: Applied is to track if a resource is applied
                              to the cluster or not.
                            type: boolean
                          hash:
                            description: |-
                              Hash is the hash of a resource's data. This can be used to decide if a resource is changed.
                              For "ApplyOnce" ClusterResourceSet.spec.strategy, this is no-op as that strategy does not act on change.
                            type: string
                          kind:
                            description: 'Kind of the resource. Supported kinds are:
                              Secrets and ConfigMaps.'
                            enum:
                            - Secret
                            - ConfigMap
                            type: string
                          lastAppliedTime:
                            description: LastAppliedTime identifies when this resource
                              was last applied to the cluster.
                            format: date-time
                            type: string
                          name:
                            description: Name of the resource that is in the same
                              namespace with ClusterResourceSet object.
                            minLength: 1
                            type: string
                        required:
                        - applied
                        - kind
                        - name
                        type: object
                      type: array
                  required:
                  - clusterResourceSetName
                  type: object
                type: array
              clusterName:
                description: |-
                  ClusterName is the name of the Cluster this binding applies to.
                  Note: this field mandatory in v1beta2.
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: null
  storedVersions: null
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.15.0
    service.beta.openshift.io/inject-cabundle: "true"
  creationTimestamp: null
  labels:
    cluster.x-k8s.io/provider: cluster-api
    clusterctl.cluster.x-k8s.io: ""
  name: machinehealthchecks.cluster.x-k8s.io
spec:
  group: cluster.x-k8s.io
  names:
    categories:
    - cluster-api
    kind: MachineHealthCheck
    listKind: MachineHealthCheckList
    plural: machinehealthchecks
    shortNames:
    - mhc
    - mhcs
    singular: machinehealthcheck
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: Maximum number of unhealthy machines allowed
      jsonPath: .spec.maxUnhealthy
      name: MaxUnhealthy
      type: string
    - description: Number of machines currently monitored
      jsonPath: .status.expectedMachines
      name: ExpectedMachines
      type: integer
    - description: Current observed healthy machines
      jsonPath: .status.currentHealthy
      name: CurrentHealthy
      type: integer
    deprecated: true
    name: v1alpha3
    schema:
      openAPIV3Schema:
        description: |-
          MachineHealthCheck is the Schema for the machinehealthchecks API.


          Deprecated: This type will be removed in one of the next releases.
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More 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.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: Specification of machine health check policy
            properties:
              clusterName:
                description: ClusterName is the name of the Cluster this object belongs
                  to.
                minLength: 1
                type: string
              maxUnhealthy:
                anyOf:
                - type: integer
                - type: string
                description: |-
                  Any further remediation is only allowed if at most "MaxUnhealthy" machines selected by
                  "selector" are not healthy.
                x-kubernetes-int-or-string: true
              nodeStartupTimeout:
                description: |-
                  Machines older than this duration without a node will be considered to have
                  failed and will be remediated.
                type: string
              remediationTemplate:
                description: |-
                  RemediationTemplate is a reference to a remediation template
                  provided by an infrastructure provider.


                  This field is completely optional, when filled, the MachineHealthCheck controller
                  creates a new object from the template referenced and hands off remediation of the machine to
                  a controller that lives outside of Cluster API.
                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
                      should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                      For example, if the object reference is to a container within a pod, this would take on a value like:
                      "spec.containers{name}" (where "name" refers to the name of the container that triggered
                      the event) or if no container name is specified "spec.containers[2]" (container with
                      index 2 in this pod). This syntax is chosen only to have some well-defined way of
                      referencing a part of an object.
                      TODO: this design is not final and this field is subject to change in the future.
                    type: string
                  kind:
                    description: |-
                      Kind of the referent.
                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                    type: string
                  name:
                    description: |-
                      Name of the referent.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                    type: string
                  namespace:
                    description: |-
                      Namespace of the referent.
                      More 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.
                      More 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.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                    type: string
                type: object
                x-kubernetes-map-type: atomic
              selector:
                description: Label selector to match machines whose health will be
                  exercised
                properties:
                  matchExpressions:
                    description: matchExpressions is a list of label selector requirements.
                      The requirements are ANDed.
                    items:
                      description: |-
                        A label selector requirement is a selector that contains values, a key, and an operator that
                        relates the key and values.
                      properties:
                        key:
                          description: key is the label key that the selector applies
                            to.
                          type: string
                        operator:
                          description: |-
                            operator represents a key's relationship to a set of values.
                            Valid operators are In, NotIn, Exists and DoesNotExist.
                          type: string
                        values:
                          description: |-
                            values is an array of string values. If the operator is In or NotIn,
                            the values array must be non-empty. If the operator is Exists or DoesNotExist,
                            the values array must be empty. This array is replaced during a strategic
                            merge patch.
                          items:
                            type: string
                          type: array
                          x-kubernetes-list-type: atomic
                      required:
                      - key
                      - operator
                      type: object
                    type: array
                    x-kubernetes-list-type: atomic
                  matchLabels:
                    additionalProperties:
                      type: string
                    description: |-
                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                      map is equivalent to an element of matchExpressions, whose key field is "key", the
                      operator is "In", and the values array contains only "value". The requirements are ANDed.
                    type: object
                type: object
                x-kubernetes-map-type: atomic
              unhealthyConditions:
                description: |-
                  UnhealthyConditions contains a list of the conditions that determine
                  whether a node is considered unhealthy.  The conditions are combined in a
                  logical OR, i.e. if any of the conditions is met, the node is unhealthy.
                items:
                  description: |-
                    UnhealthyCondition represents a Node condition type and value with a timeout
                    specified as a duration.  When the named condition has been in the given
                    status for at least the timeout value, a node is considered unhealthy.
                  properties:
                    status:
                      minLength: 1
                      type: string
                    timeout:
                      type: string
                    type:
                      minLength: 1
                      type: string
                  required:
                  - status
                  - timeout
                  - type
                  type: object
                minItems: 1
                type: array
            required:
            - clusterName
            - selector
            - unhealthyConditions
            type: object
          status:
            description: Most recently observed status of MachineHealthCheck resource
            properties:
              conditions:
                description: Conditions defines current service state of the MachineHealthCheck.
                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.
                        This should be when the underlying condition changed. If that is not known, then using the time when
                        the API field changed is acceptable.
                      format: date-time
                      type: string
                    message:
                      description: |-
                        A human readable message indicating details about the transition.
                        This field may be empty.
                      type: string
                    reason:
                      description: |-
                        The reason for the condition's last transition in CamelCase.
                        The specific API may choose whether or not this field is considered a guaranteed API.
                        This field may not be empty.
                      type: string
                    severity:
                      description: |-
                        Severity provides an explicit classification of Reason code, so the users or machines can immediately
                        understand the current situation and act accordingly.
                        The 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.
                        Many .condition.type values are consistent across resources like Available, but because arbitrary conditions
                        can be useful (see .node.status.conditions), the ability to deconflict is important.
                      type: string
                  required:
                  - status
                  - type
                  type: object
                type: array
              currentHealthy:
                description: total number of healthy machines counted by this machine
                  health check
                format: int32
                minimum: 0
                type: integer
              expectedMachines:
                description: total number of machines counted by this machine health
                  check
                format: int32
                minimum: 0
                type: integer
              observedGeneration:
                description: ObservedGeneration is the latest generation observed
                  by the controller.
                format: int64
                type: integer
              remediationsAllowed:
                description: |-
                  RemediationsAllowed is the number of further remediations allowed by this machine health check before
                  maxUnhealthy short circuiting will be applied
                format: int32
                minimum: 0
                type: integer
              targets:
                description: Targets shows the current list of machines the machine
                  health check is watching
                items:
                  type: string
                type: array
            type: object
        type: object
    served: false
    storage: false
    subresources:
      status: {}
  - additionalPrinterColumns:
    - description: Cluster
      jsonPath: .spec.clusterName
      name: Cluster
      type: string
    - description: Time duration since creation of MachineHealthCheck
      jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    - description: Maximum number of unhealthy machines allowed
      jsonPath: .spec.maxUnhealthy
      name: MaxUnhealthy
      type: string
    - description: Number of machines currently monitored
      jsonPath: .status.expectedMachines
      name: ExpectedMachines
      type: integer
    - description: Current observed healthy machines
      jsonPath: .status.currentHealthy
      name: CurrentHealthy
      type: integer
    deprecated: true
    name: v1alpha4
    schema:
      openAPIV3Schema:
        description: |-
          MachineHealthCheck is the Schema for the machinehealthchecks API.


          Deprecated: This type will be removed in one of the next releases.
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More 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.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: Specification of machine health check policy
            properties:
              clusterName:
                description: ClusterName is the name of the Cluster this object belongs
                  to.
                minLength: 1
                type: string
              maxUnhealthy:
                anyOf:
                - type: integer
                - type: string
                description: |-
                  Any further remediation is only allowed if at most "MaxUnhealthy" machines selected by
                  "selector" are not healthy.
                x-kubernetes-int-or-string: true
              nodeStartupTimeout:
                description: |-
                  Machines older than this duration without a node will be considered to have
                  failed and will be remediated.
                  If not set, this value is defaulted to 10 minutes.
                  If you wish to disable this feature, set the value explicitly to 0.
                type: string
              remediationTemplate:
                description: |-
                  RemediationTemplate is a reference to a remediation template
                  provided by an infrastructure provider.


                  This field is completely optional, when filled, the MachineHealthCheck controller
                  creates a new object from the template referenced and hands off remediation of the machine to
                  a controller that lives outside of Cluster API.
                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
                      should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                      For example, if the object reference is to a container within a pod, this would take on a value like:
                      "spec.containers{name}" (where "name" refers to the name of the container that triggered
                      the event) or if no container name is specified "spec.containers[2]" (container with
                      index 2 in this pod). This syntax is chosen only to have some well-defined way of
                      referencing a part of an object.
                      TODO: this design is not final and this field is subject to change in the future.
                    type: string
                  kind:
                    description: |-
                      Kind of the referent.
                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                    type: string
                  name:
                    description: |-
                      Name of the referent.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                    type: string
                  namespace:
                    description: |-
                      Namespace of the referent.
                      More 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.
                      More 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.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                    type: string
                type: object
                x-kubernetes-map-type: atomic
              selector:
                description: Label selector to match machines whose health will be
                  exercised
                properties:
                  matchExpressions:
                    description: matchExpressions is a list of label selector requirements.
                      The requirements are ANDed.
                    items:
                      description: |-
                        A label selector requirement is a selector that contains values, a key, and an operator that
                        relates the key and values.
                      properties:
                        key:
                          description: key is the label key that the selector applies
                            to.
                          type: string
                        operator:
                          description: |-
                            operator represents a key's relationship to a set of values.
                            Valid operators are In, NotIn, Exists and DoesNotExist.
                          type: string
                        values:
                          description: |-
                            values is an array of string values. If the operator is In or NotIn,
                            the values array must be non-empty. If the operator is Exists or DoesNotExist,
                            the values array must be empty. This array is replaced during a strategic
                            merge patch.
                          items:
                            type: string
                          type: array
                          x-kubernetes-list-type: atomic
                      required:
                      - key
                      - operator
                      type: object
                    type: array
                    x-kubernetes-list-type: atomic
                  matchLabels:
                    additionalProperties:
                      type: string
                    description: |-
                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                      map is equivalent to an element of matchExpressions, whose key field is "key", the
                      operator is "In", and the values array contains only "value". The requirements are ANDed.
                    type: object
                type: object
                x-kubernetes-map-type: atomic
              unhealthyConditions:
                description: |-
                  UnhealthyConditions contains a list of the conditions that determine
                  whether a node is considered unhealthy.  The conditions are combined in a
                  logical OR, i.e. if any of the conditions is met, the node is unhealthy.
                items:
                  description: |-
                    UnhealthyCondition represents a Node condition type and value with a timeout
                    specified as a duration.  When the named condition has been in the given
                    status for at least the timeout value, a node is considered unhealthy.
                  properties:
                    status:
                      minLength: 1
                      type: string
                    timeout:
                      type: string
                    type:
                      minLength: 1
                      type: string
                  required:
                  - status
                  - timeout
                  - type
                  type: object
                minItems: 1
                type: array
              unhealthyRange:
                description: |-
                  Any further remediation is only allowed if the number of machines selected by "selector" as not healthy
                  is within the range of "UnhealthyRange". Takes precedence over MaxUnhealthy.
                  Eg. "[3-5]" - This means that remediation will be allowed only when:
                  (a) there are at least 3 unhealthy machines (and)
                  (b) there are at most 5 unhealthy machines
                pattern: ^\[[0-9]+-[0-9]+\]$
                type: string
            required:
            - clusterName
            - selector
            - unhealthyConditions
            type: object
          status:
            description: Most recently observed status of MachineHealthCheck resource
            properties:
              conditions:
                description: Conditions defines current service state of the MachineHealthCheck.
                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.
                        This should be when the underlying condition changed. If that is not known, then using the time when
                        the API field changed is acceptable.
                      format: date-time
                      type: string
                    message:
                      description: |-
                        A human readable message indicating details about the transition.
                        This field may be empty.
                      type: string
                    reason:
                      description: |-
                        The reason for the condition's last transition in CamelCase.
                        The specific API may choose whether or not this field is considered a guaranteed API.
                        This field may not be empty.
                      type: string
                    severity:
                      description: |-
                        Severity provides an explicit classification of Reason code, so the users or machines can immediately
                        understand the current situation and act accordingly.
                        The 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.
                        Many .condition.type values are consistent across resources like Available, but because arbitrary conditions
                        can be useful (see .node.status.conditions), the ability to deconflict is important.
                      type: string
                  required:
                  - status
                  - type
                  type: object
                type: array
              currentHealthy:
                description: total number of healthy machines counted by this machine
                  health check
                format: int32
                minimum: 0
                type: integer
              expectedMachines:
                description: total number of machines counted by this machine health
                  check
                format: int32
                minimum: 0
                type: integer
              observedGeneration:
                description: ObservedGeneration is the latest generation observed
                  by the controller.
                format: int64
                type: integer
              remediationsAllowed:
                description: |-
                  RemediationsAllowed is the number of further remediations allowed by this machine health check before
                  maxUnhealthy short circuiting will be applied
                format: int32
                minimum: 0
                type: integer
              targets:
                description: Targets shows the current list of machines the machine
                  health check is watching
                items:
                  type: string
                type: array
            type: object
        type: object
    served: false
    storage: false
    subresources:
      status: {}
  - additionalPrinterColumns:
    - description: Cluster
      jsonPath: .spec.clusterName
      name: Cluster
      type: string
    - description: Number of machines currently monitored
      jsonPath: .status.expectedMachines
      name: ExpectedMachines
      type: integer
    - description: Maximum number of unhealthy machines allowed
      jsonPath: .spec.maxUnhealthy
      name: MaxUnhealthy
      type: string
    - description: Current observed healthy machines
      jsonPath: .status.currentHealthy
      name: CurrentHealthy
      type: integer
    - description: Time duration since creation of MachineHealthCheck
      jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1beta1
    schema:
      openAPIV3Schema:
        description: MachineHealthCheck is the Schema for the machinehealthchecks
          API.
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More 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.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: Specification of machine health check policy
            properties:
              clusterName:
                description: ClusterName is the name of the Cluster this object belongs
                  to.
                minLength: 1
                type: string
              maxUnhealthy:
                anyOf:
                - type: integer
                - type: string
                description: |-
                  Any further remediation is only allowed if at most "MaxUnhealthy" machines selected by
                  "selector" are not healthy.


                  Deprecated: This field is deprecated and is going to be removed in the next apiVersion. Please see https://github.com/kubernetes-sigs/cluster-api/issues/10722 for more details.
                x-kubernetes-int-or-string: true
              nodeStartupTimeout:
                description: |-
                  NodeStartupTimeout allows to set the maximum time for MachineHealthCheck
                  to consider a Machine unhealthy if a corresponding Node isn't associated
                  through a `Spec.ProviderID` field.


                  The duration set in this field is compared to the greatest of:
                  - Cluster's infrastructure ready condition timestamp (if and when available)
                  - Control Plane's initialized condition timestamp (if and when available)
                  - Machine's infrastructure ready condition timestamp (if and when available)
                  - Machine's metadata creation timestamp


                  Defaults to 10 minutes.
                  If you wish to disable this feature, set the value explicitly to 0.
                type: string
              remediationTemplate:
                description: |-
                  RemediationTemplate is a reference to a remediation template
                  provided by an infrastructure provider.


                  This field is completely optional, when filled, the MachineHealthCheck controller
                  creates a new object from the template referenced and hands off remediation of the machine to
                  a controller that lives outside of Cluster API.
                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
                      should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                      For example, if the object reference is to a container within a pod, this would take on a value like:
                      "spec.containers{name}" (where "name" refers to the name of the container that triggered
                      the event) or if no container name is specified "spec.containers[2]" (container with
                      index 2 in this pod). This syntax is chosen only to have some well-defined way of
                      referencing a part of an object.
                      TODO: this design is not final and this field is subject to change in the future.
                    type: string
                  kind:
                    description: |-
                      Kind of the referent.
                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                    type: string
                  name:
                    description: |-
                      Name of the referent.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                    type: string
                  namespace:
                    description: |-
                      Namespace of the referent.
                      More 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.
                      More 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.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                    type: string
                type: object
                x-kubernetes-map-type: atomic
              selector:
                description: Label selector to match machines whose health will be
                  exercised
                properties:
                  matchExpressions:
                    description: matchExpressions is a list of label selector requirements.
                      The requirements are ANDed.
                    items:
                      description: |-
                        A label selector requirement is a selector that contains values, a key, and an operator that
                        relates the key and values.
                      properties:
                        key:
                          description: key is the label key that the selector applies
                            to.
                          type: string
                        operator:
                          description: |-
                            operator represents a key's relationship to a set of values.
                            Valid operators are In, NotIn, Exists and DoesNotExist.
                          type: string
                        values:
                          description: |-
                            values is an array of string values. If the operator is In or NotIn,
                            the values array must be non-empty. If the operator is Exists or DoesNotExist,
                            the values array must be empty. This array is replaced during a strategic
                            merge patch.
                          items:
                            type: string
                          type: array
                          x-kubernetes-list-type: atomic
                      required:
                      - key
                      - operator
                      type: object
                    type: array
                    x-kubernetes-list-type: atomic
                  matchLabels:
                    additionalProperties:
                      type: string
                    description: |-
                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                      map is equivalent to an element of matchExpressions, whose key field is "key", the
                      operator is "In", and the values array contains only "value". The requirements are ANDed.
                    type: object
                type: object
                x-kubernetes-map-type: atomic
              unhealthyConditions:
                description: |-
                  UnhealthyConditions contains a list of the conditions that determine
                  whether a node is considered unhealthy.  The conditions are combined in a
                  logical OR, i.e. if any of the conditions is met, the node is unhealthy.
                items:
                  description: |-
                    UnhealthyCondition represents a Node condition type and value with a timeout
                    specified as a duration.  When the named condition has been in the given
                    status for at least the timeout value, a node is considered unhealthy.
                  properties:
                    status:
                      minLength: 1
                      type: string
                    timeout:
                      type: string
                    type:
                      minLength: 1
                      type: string
                  required:
                  - status
                  - timeout
                  - type
                  type: object
                type: array
              unhealthyRange:
                description: |-
                  Any further remediation is only allowed if the number of machines selected by "selector" as not healthy
                  is within the range of "UnhealthyRange". Takes precedence over MaxUnhealthy.
                  Eg. "[3-5]" - This means that remediation will be allowed only when:
                  (a) there are at least 3 unhealthy machines (and)
                  (b) there are at most 5 unhealthy machines


                  Deprecated: This field is deprecated and is going to be removed in the next apiVersion. Please see https://github.com/kubernetes-sigs/cluster-api/issues/10722 for more details.
                pattern: ^\[[0-9]+-[0-9]+\]$
                type: string
            required:
            - clusterName
            - selector
            type: object
          status:
            description: Most recently observed status of MachineHealthCheck resource
            properties:
              conditions:
                description: Conditions defines current service state of the MachineHealthCheck.
                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.
                        This should be when the underlying condition changed. If that is not known, then using the time when
                        the API field changed is acceptable.
                      format: date-time
                      type: string
                    message:
                      description: |-
                        A human readable message indicating details about the transition.
                        This field may be empty.
                      type: string
                    reason:
                      description: |-
                        The reason for the condition's last transition in CamelCase.
                        The specific API may choose whether or not this field is considered a guaranteed API.
                        This field may not be empty.
                      type: string
                    severity:
                      description: |-
                        Severity provides an explicit classification of Reason code, so the users or machines can immediately
                        understand the current situation and act accordingly.
                        The 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.
                        Many .condition.type values are consistent across resources like Available, but because arbitrary conditions
                        can be useful (see .node.status.conditions), the ability to deconflict is important.
                      type: string
                  required:
                  - lastTransitionTime
                  - status
                  - type
                  type: object
                type: array
              currentHealthy:
                description: total number of healthy machines counted by this machine
                  health check
                format: int32
                minimum: 0
                type: integer
              expectedMachines:
                description: total number of machines counted by this machine health
                  check
                format: int32
                minimum: 0
                type: integer
              observedGeneration:
                description: ObservedGeneration is the latest generation observed
                  by the controller.
                format: int64
                type: integer
              remediationsAllowed:
                description: |-
                  RemediationsAllowed is the number of further remediations allowed by this machine health check before
                  maxUnhealthy short circuiting will be applied
                format: int32
                minimum: 0
                type: integer
              targets:
                description: Targets shows the current list of machines the machine
                  health check is watching
                items:
                  type: string
                type: array
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: null
  storedVersions: null
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.15.0
  creationTimestamp: null
  labels:
    cluster.x-k8s.io/provider: cluster-api
    clusterctl.cluster.x-k8s.io: ""
  name: extensionconfigs.runtime.cluster.x-k8s.io
spec:
  group: runtime.cluster.x-k8s.io
  names:
    categories:
    - cluster-api
    kind: ExtensionConfig
    listKind: ExtensionConfigList
    plural: extensionconfigs
    shortNames:
    - ext
    singular: extensionconfig
  scope: Cluster
  versions:
  - additionalPrinterColumns:
    - description: Time duration since creation of ExtensionConfig
      jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1alpha1
    schema:
      openAPIV3Schema:
        description: ExtensionConfig is the Schema for the ExtensionConfig API.
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More 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.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: ExtensionConfigSpec is the desired state of the ExtensionConfig
            properties:
              clientConfig:
                description: ClientConfig defines how to communicate with the Extension
                  server.
                properties:
                  caBundle:
                    description: CABundle is a PEM encoded CA bundle which will be
                      used to validate the Extension server's server certificate.
                    format: byte
                    type: string
                  service:
                    description: |-
                      Service is a reference to the Kubernetes service for the Extension server.
                      Note: Exactly one of `url` or `service` must be specified.


                      If the Extension server is running within a cluster, then you should use `service`.
                    properties:
                      name:
                        description: Name is the name of the service.
                        type: string
                      namespace:
                        description: Namespace is the namespace of the service.
                        type: string
                      path:
                        description: |-
                          Path is an optional URL path and if present may be any string permissible in
                          a URL. If a path is set it will be used as prefix to the hook-specific path.
                        type: string
                      port:
                        description: |-
                          Port is the port on the service that's hosting the Extension server.
                          Defaults to 443.
                          Port should be a valid port number (1-65535, inclusive).
                        format: int32
                        type: integer
                    required:
                    - name
                    - namespace
                    type: object
                  url:
                    description: |-
                      URL gives the location of the Extension server, in standard URL form
                      (`scheme://host:port/path`).
                      Note: Exactly one of `url` or `service` must be specified.


                      The scheme must be "https".


                      The `host` should not refer to a service running in the cluster; use
                      the `service` field instead.


                      A path is optional, and if present may be any string permissible in
                      a URL. If a path is set it will be used as prefix to the hook-specific path.


                      Attempting to use a user or basic auth e.g. "user:password@" is not
                      allowed. Fragments ("#...") and query parameters ("?...") are not
                      allowed either.
                    type: string
                type: object
              namespaceSelector:
                description: |-
                  NamespaceSelector decides whether to call the hook for an object based
                  on whether the namespace for that object matches the selector.
                  Defaults to the empty LabelSelector, which matches all objects.
                properties:
                  matchExpressions:
                    description: matchExpressions is a list of label selector requirements.
                      The requirements are ANDed.
                    items:
                      description: |-
                        A label selector requirement is a selector that contains values, a key, and an operator that
                        relates the key and values.
                      properties:
                        key:
                          description: key is the label key that the selector applies
                            to.
                          type: string
                        operator:
                          description: |-
                            operator represents a key's relationship to a set of values.
                            Valid operators are In, NotIn, Exists and DoesNotExist.
                          type: string
                        values:
                          description: |-
                            values is an array of string values. If the operator is In or NotIn,
                            the values array must be non-empty. If the operator is Exists or DoesNotExist,
                            the values array must be empty. This array is replaced during a strategic
                            merge patch.
                          items:
                            type: string
                          type: array
                          x-kubernetes-list-type: atomic
                      required:
                      - key
                      - operator
                      type: object
                    type: array
                    x-kubernetes-list-type: atomic
                  matchLabels:
                    additionalProperties:
                      type: string
                    description: |-
                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                      map is equivalent to an element of matchExpressions, whose key field is "key", the
                      operator is "In", and the values array contains only "value". The requirements are ANDed.
                    type: object
                type: object
                x-kubernetes-map-type: atomic
              settings:
                additionalProperties:
                  type: string
                description: |-
                  Settings defines key value pairs to be passed to all calls
                  to all supported RuntimeExtensions.
                  Note: Settings can be overridden on the ClusterClass.
                type: object
            required:
            - clientConfig
            type: object
          status:
            description: ExtensionConfigStatus is the current state of the ExtensionConfig
            properties:
              conditions:
                description: Conditions define the current service state of the ExtensionConfig.
                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.
                        This should be when the underlying condition changed. If that is not known, then using the time when
                        the API field changed is acceptable.
                      format: date-time
                      type: string
                    message:
                      description: |-
                        A human readable message indicating details about the transition.
                        This field may be empty.
                      type: string
                    reason:
                      description: |-
                        The reason for the condition's last transition in CamelCase.
                        The specific API may choose whether or not this field is considered a guaranteed API.
                        This field may not be empty.
                      type: string
                    severity:
                      description: |-
                        Severity provides an explicit classification of Reason code, so the users or machines can immediately
                        understand the current situation and act accordingly.
                        The 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.
                        Many .condition.type values are consistent across resources like Available, but because arbitrary conditions
                        can be useful (see .node.status.conditions), the ability to deconflict is important.
                      type: string
                  required:
                  - lastTransitionTime
                  - status
                  - type
                  type: object
                type: array
              handlers:
                description: Handlers defines the current ExtensionHandlers supported
                  by an Extension.
                items:
                  description: ExtensionHandler specifies the details of a handler
                    for a particular runtime hook registered by an Extension server.
                  properties:
                    failurePolicy:
                      description: |-
                        FailurePolicy defines how failures in calls to the ExtensionHandler should be handled by a client.
                        Defaults to Fail if not set.
                      type: string
                    name:
                      description: Name is the unique name of the ExtensionHandler.
                      type: string
                    requestHook:
                      description: RequestHook defines the versioned runtime hook
                        which this ExtensionHandler serves.
                      properties:
                        apiVersion:
                          description: APIVersion is the group and version of the
                            Hook.
                          type: string
                        hook:
                          description: Hook is the name of the hook.
                          type: string
                      required:
                      - apiVersion
                      - hook
                      type: object
                    timeoutSeconds:
                      description: |-
                        TimeoutSeconds defines the timeout duration for client calls to the ExtensionHandler.
                        Defaults to 10 is not set.
                      format: int32
                      type: integer
                  required:
                  - name
                  - requestHook
                  type: object
                type: array
                x-kubernetes-list-map-keys:
                - name
                x-kubernetes-list-type: map
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: null
  storedVersions: null
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.15.0
  creationTimestamp: null
  labels:
    cluster.x-k8s.io/provider: cluster-api
    clusterctl.cluster.x-k8s.io: ""
  name: ipaddresses.ipam.cluster.x-k8s.io
spec:
  group: ipam.cluster.x-k8s.io
  names:
    categories:
    - cluster-api
    kind: IPAddress
    listKind: IPAddressList
    plural: ipaddresses
    singular: ipaddress
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: Address
      jsonPath: .spec.address
      name: Address
      type: string
    - description: Name of the pool the address is from
      jsonPath: .spec.poolRef.name
      name: Pool Name
      type: string
    - description: Kind of the pool the address is from
      jsonPath: .spec.poolRef.kind
      name: Pool Kind
      type: string
    - description: Time duration since creation of IPAdress
      jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1alpha1
    schema:
      openAPIV3Schema:
        description: IPAddress is the Schema for the ipaddress API.
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More 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.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: IPAddressSpec is the desired state of an IPAddress.
            properties:
              address:
                description: Address is the IP address.
                type: string
              claimRef:
                description: ClaimRef is a reference to the claim this IPAddress was
                  created for.
                properties:
                  name:
                    default: ""
                    description: |-
                      Name of the referent.
                      This field is effectively required, but due to backwards compatibility is
                      allowed to be empty. Instances of this type with an empty value here are
                      almost certainly wrong.
                      TODO: Add other useful fields. apiVersion, kind, uid?
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                      TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                    type: string
                type: object
                x-kubernetes-map-type: atomic
              gateway:
                description: Gateway is the network gateway of the network the address
                  is from.
                type: string
              poolRef:
                description: PoolRef is a reference to the pool that this IPAddress
                  was created from.
                properties:
                  apiGroup:
                    description: |-
                      APIGroup is the group for the resource being referenced.
                      If APIGroup is not specified, the specified Kind must be in the core API group.
                      For any other third-party types, APIGroup is required.
                    type: string
                  kind:
                    description: Kind is the type of resource being referenced
                    type: string
                  name:
                    description: Name is the name of resource being referenced
                    type: string
                required:
                - kind
                - name
                type: object
                x-kubernetes-map-type: atomic
              prefix:
                description: Prefix is the prefix of the address.
                type: integer
            required:
            - address
            - claimRef
            - poolRef
            - prefix
            type: object
        type: object
    served: true
    storage: false
    subresources: {}
  - additionalPrinterColumns:
    - description: Address
      jsonPath: .spec.address
      name: Address
      type: string
    - description: Name of the pool the address is from
      jsonPath: .spec.poolRef.name
      name: Pool Name
      type: string
    - description: Kind of the pool the address is from
      jsonPath: .spec.poolRef.kind
      name: Pool Kind
      type: string
    - description: Time duration since creation of IPAdress
      jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1beta1
    schema:
      openAPIV3Schema:
        description: IPAddress is the Schema for the ipaddress API.
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More 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.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: IPAddressSpec is the desired state of an IPAddress.
            properties:
              address:
                description: Address is the IP address.
                type: string
              claimRef:
                description: ClaimRef is a reference to the claim this IPAddress was
                  created for.
                properties:
                  name:
                    default: ""
                    description: |-
                      Name of the referent.
                      This field is effectively required, but due to backwards compatibility is
                      allowed to be empty. Instances of this type with an empty value here are
                      almost certainly wrong.
                      TODO: Add other useful fields. apiVersion, kind, uid?
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                      TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                    type: string
                type: object
                x-kubernetes-map-type: atomic
              gateway:
                description: Gateway is the network gateway of the network the address
                  is from.
                type: string
              poolRef:
                description: PoolRef is a reference to the pool that this IPAddress
                  was created from.
                properties:
                  apiGroup:
                    description: |-
                      APIGroup is the group for the resource being referenced.
                      If APIGroup is not specified, the specified Kind must be in the core API group.
                      For any other third-party types, APIGroup is required.
                    type: string
                  kind:
                    description: Kind is the type of resource being referenced
                    type: string
                  name:
                    description: Name is the name of resource being referenced
                    type: string
                required:
                - kind
                - name
                type: object
                x-kubernetes-map-type: atomic
              prefix:
                description: Prefix is the prefix of the address.
                type: integer
            required:
            - address
            - claimRef
            - poolRef
            - prefix
            type: object
        type: object
    served: true
    storage: true
    subresources: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: null
  storedVersions: null
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.15.0
  creationTimestamp: null
  labels:
    cluster.x-k8s.io/provider: cluster-api
    clusterctl.cluster.x-k8s.io: ""
  name: ipaddressclaims.ipam.cluster.x-k8s.io
spec:
  group: ipam.cluster.x-k8s.io
  names:
    categories:
    - cluster-api
    kind: IPAddressClaim
    listKind: IPAddressClaimList
    plural: ipaddressclaims
    singular: ipaddressclaim
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: Name of the pool to allocate an address from
      jsonPath: .spec.poolRef.name
      name: Pool Name
      type: string
    - description: Kind of the pool to allocate an address from
      jsonPath: .spec.poolRef.kind
      name: Pool Kind
      type: string
    - description: Time duration since creation of IPAdressClaim
      jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1alpha1
    schema:
      openAPIV3Schema:
        description: IPAddressClaim is the Schema for the ipaddressclaim API.
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More 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.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: IPAddressClaimSpec is the desired state of an IPAddressClaim.
            properties:
              poolRef:
                description: PoolRef is a reference to the pool from which an IP address
                  should be created.
                properties:
                  apiGroup:
                    description: |-
                      APIGroup is the group for the resource being referenced.
                      If APIGroup is not specified, the specified Kind must be in the core API group.
                      For any other third-party types, APIGroup is required.
                    type: string
                  kind:
                    description: Kind is the type of resource being referenced
                    type: string
                  name:
                    description: Name is the name of resource being referenced
                    type: string
                required:
                - kind
                - name
                type: object
                x-kubernetes-map-type: atomic
            required:
            - poolRef
            type: object
          status:
            description: IPAddressClaimStatus is the observed status of a IPAddressClaim.
            properties:
              addressRef:
                description: AddressRef is a reference to the address that was created
                  for this claim.
                properties:
                  name:
                    default: ""
                    description: |-
                      Name of the referent.
                      This field is effectively required, but due to backwards compatibility is
                      allowed to be empty. Instances of this type with an empty value here are
                      almost certainly wrong.
                      TODO: Add other useful fields. apiVersion, kind, uid?
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                      TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                    type: string
                type: object
                x-kubernetes-map-type: atomic
              conditions:
                description: Conditions summarises the current state of the IPAddressClaim
                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.
                        This should be when the underlying condition changed. If that is not known, then using the time when
                        the API field changed is acceptable.
                      format: date-time
                      type: string
                    message:
                      description: |-
                        A human readable message indicating details about the transition.
                        This field may be empty.
                      type: string
                    reason:
                      description: |-
                        The reason for the condition's last transition in CamelCase.
                        The specific API may choose whether or not this field is considered a guaranteed API.
                        This field may not be empty.
                      type: string
                    severity:
                      description: |-
                        Severity provides an explicit classification of Reason code, so the users or machines can immediately
                        understand the current situation and act accordingly.
                        The 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.
                        Many .condition.type values are consistent across resources like Available, but because arbitrary conditions
                        can be useful (see .node.status.conditions), the ability to deconflict is important.
                      type: string
                  required:
                  - lastTransitionTime
                  - status
                  - type
                  type: object
                type: array
            type: object
        type: object
    served: true
    storage: false
    subresources:
      status: {}
  - additionalPrinterColumns:
    - description: Name of the pool to allocate an address from
      jsonPath: .spec.poolRef.name
      name: Pool Name
      type: string
    - description: Kind of the pool to allocate an address from
      jsonPath: .spec.poolRef.kind
      name: Pool Kind
      type: string
    - description: Time duration since creation of IPAdressClaim
      jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1beta1
    schema:
      openAPIV3Schema:
        description: IPAddressClaim is the Schema for the ipaddressclaim API.
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More 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.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: IPAddressClaimSpec is the desired state of an IPAddressClaim.
            properties:
              clusterName:
                description: ClusterName is the name of the Cluster this object belongs
                  to.
                type: string
              poolRef:
                description: PoolRef is a reference to the pool from which an IP address
                  should be created.
                properties:
                  apiGroup:
                    description: |-
                      APIGroup is the group for the resource being referenced.
                      If APIGroup is not specified, the specified Kind must be in the core API group.
                      For any other third-party types, APIGroup is required.
                    type: string
                  kind:
                    description: Kind is the type of resource being referenced
                    type: string
                  name:
                    description: Name is the name of resource being referenced
                    type: string
                required:
                - kind
                - name
                type: object
                x-kubernetes-map-type: atomic
            required:
            - poolRef
            type: object
          status:
            description: IPAddressClaimStatus is the observed status of a IPAddressClaim.
            properties:
              addressRef:
                description: AddressRef is a reference to the address that was created
                  for this claim.
                properties:
                  name:
                    default: ""
                    description: |-
                      Name of the referent.
                      This field is effectively required, but due to backwards compatibility is
                      allowed to be empty. Instances of this type with an empty value here are
                      almost certainly wrong.
                      TODO: Add other useful fields. apiVersion, kind, uid?
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                      TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
                    type: string
                type: object
                x-kubernetes-map-type: atomic
              conditions:
                description: Conditions summarises the current state of the IPAddressClaim
                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.
                        This should be when the underlying condition changed. If that is not known, then using the time when
                        the API field changed is acceptable.
                      format: date-time
                      type: string
                    message:
                      description: |-
                        A human readable message indicating details about the transition.
                        This field may be empty.
                      type: string
                    reason:
                      description: |-
                        The reason for the condition's last transition in CamelCase.
                        The specific API may choose whether or not this field is considered a guaranteed API.
                        This field may not be empty.
                      type: string
                    severity:
                      description: |-
                        Severity provides an explicit classification of Reason code, so the users or machines can immediately
                        understand the current situation and act accordingly.
                        The 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.
                        Many .condition.type values are consistent across resources like Available, but because arbitrary conditions
                        can be useful (see .node.status.conditions), the ability to deconflict is important.
                      type: string
                  required:
                  - lastTransitionTime
                  - status
                  - type
                  type: object
                type: array
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: null
  storedVersions: null
