sigs.k8s.io/cluster-api@v1.7.1/config/crd/bases/cluster.x-k8s.io_clusterclasses.yaml (about)

     1  ---
     2  apiVersion: apiextensions.k8s.io/v1
     3  kind: CustomResourceDefinition
     4  metadata:
     5    annotations:
     6      controller-gen.kubebuilder.io/version: v0.14.0
     7    name: clusterclasses.cluster.x-k8s.io
     8  spec:
     9    group: cluster.x-k8s.io
    10    names:
    11      categories:
    12      - cluster-api
    13      kind: ClusterClass
    14      listKind: ClusterClassList
    15      plural: clusterclasses
    16      shortNames:
    17      - cc
    18      singular: clusterclass
    19    scope: Namespaced
    20    versions:
    21    - additionalPrinterColumns:
    22      - description: Time duration since creation of ClusterClass
    23        jsonPath: .metadata.creationTimestamp
    24        name: Age
    25        type: date
    26      deprecated: true
    27      name: v1alpha4
    28      schema:
    29        openAPIV3Schema:
    30          description: |-
    31            ClusterClass is a template which can be used to create managed topologies.
    32  
    33  
    34            Deprecated: This type will be removed in one of the next releases.
    35          properties:
    36            apiVersion:
    37              description: |-
    38                APIVersion defines the versioned schema of this representation of an object.
    39                Servers should convert recognized schemas to the latest internal value, and
    40                may reject unrecognized values.
    41                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
    42              type: string
    43            kind:
    44              description: |-
    45                Kind is a string value representing the REST resource this object represents.
    46                Servers may infer this from the endpoint the client submits requests to.
    47                Cannot be updated.
    48                In CamelCase.
    49                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
    50              type: string
    51            metadata:
    52              type: object
    53            spec:
    54              description: ClusterClassSpec describes the desired state of the ClusterClass.
    55              properties:
    56                controlPlane:
    57                  description: |-
    58                    ControlPlane is a reference to a local struct that holds the details
    59                    for provisioning the Control Plane for the Cluster.
    60                  properties:
    61                    machineInfrastructure:
    62                      description: |-
    63                        MachineTemplate defines the metadata and infrastructure information
    64                        for control plane machines.
    65  
    66  
    67                        This field is supported if and only if the control plane provider template
    68                        referenced above is Machine based and supports setting replicas.
    69                      properties:
    70                        ref:
    71                          description: |-
    72                            Ref is a required reference to a custom resource
    73                            offered by a provider.
    74                          properties:
    75                            apiVersion:
    76                              description: API version of the referent.
    77                              type: string
    78                            fieldPath:
    79                              description: |-
    80                                If referring to a piece of an object instead of an entire object, this string
    81                                should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
    82                                For example, if the object reference is to a container within a pod, this would take on a value like:
    83                                "spec.containers{name}" (where "name" refers to the name of the container that triggered
    84                                the event) or if no container name is specified "spec.containers[2]" (container with
    85                                index 2 in this pod). This syntax is chosen only to have some well-defined way of
    86                                referencing a part of an object.
    87                                TODO: this design is not final and this field is subject to change in the future.
    88                              type: string
    89                            kind:
    90                              description: |-
    91                                Kind of the referent.
    92                                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
    93                              type: string
    94                            name:
    95                              description: |-
    96                                Name of the referent.
    97                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
    98                              type: string
    99                            namespace:
   100                              description: |-
   101                                Namespace of the referent.
   102                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
   103                              type: string
   104                            resourceVersion:
   105                              description: |-
   106                                Specific resourceVersion to which this reference is made, if any.
   107                                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
   108                              type: string
   109                            uid:
   110                              description: |-
   111                                UID of the referent.
   112                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
   113                              type: string
   114                          type: object
   115                          x-kubernetes-map-type: atomic
   116                      required:
   117                      - ref
   118                      type: object
   119                    metadata:
   120                      description: |-
   121                        Metadata is the metadata applied to the machines of the ControlPlane.
   122                        At runtime this metadata is merged with the corresponding metadata from the topology.
   123  
   124  
   125                        This field is supported if and only if the control plane provider template
   126                        referenced is Machine based.
   127                      properties:
   128                        annotations:
   129                          additionalProperties:
   130                            type: string
   131                          description: |-
   132                            Annotations is an unstructured key value map stored with a resource that may be
   133                            set by external tools to store and retrieve arbitrary metadata. They are not
   134                            queryable and should be preserved when modifying objects.
   135                            More info: http://kubernetes.io/docs/user-guide/annotations
   136                          type: object
   137                        labels:
   138                          additionalProperties:
   139                            type: string
   140                          description: |-
   141                            Map of string keys and values that can be used to organize and categorize
   142                            (scope and select) objects. May match selectors of replication controllers
   143                            and services.
   144                            More info: http://kubernetes.io/docs/user-guide/labels
   145                          type: object
   146                      type: object
   147                    ref:
   148                      description: |-
   149                        Ref is a required reference to a custom resource
   150                        offered by a provider.
   151                      properties:
   152                        apiVersion:
   153                          description: API version of the referent.
   154                          type: string
   155                        fieldPath:
   156                          description: |-
   157                            If referring to a piece of an object instead of an entire object, this string
   158                            should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
   159                            For example, if the object reference is to a container within a pod, this would take on a value like:
   160                            "spec.containers{name}" (where "name" refers to the name of the container that triggered
   161                            the event) or if no container name is specified "spec.containers[2]" (container with
   162                            index 2 in this pod). This syntax is chosen only to have some well-defined way of
   163                            referencing a part of an object.
   164                            TODO: this design is not final and this field is subject to change in the future.
   165                          type: string
   166                        kind:
   167                          description: |-
   168                            Kind of the referent.
   169                            More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
   170                          type: string
   171                        name:
   172                          description: |-
   173                            Name of the referent.
   174                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
   175                          type: string
   176                        namespace:
   177                          description: |-
   178                            Namespace of the referent.
   179                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
   180                          type: string
   181                        resourceVersion:
   182                          description: |-
   183                            Specific resourceVersion to which this reference is made, if any.
   184                            More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
   185                          type: string
   186                        uid:
   187                          description: |-
   188                            UID of the referent.
   189                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
   190                          type: string
   191                      type: object
   192                      x-kubernetes-map-type: atomic
   193                  required:
   194                  - ref
   195                  type: object
   196                infrastructure:
   197                  description: |-
   198                    Infrastructure is a reference to a provider-specific template that holds
   199                    the details for provisioning infrastructure specific cluster
   200                    for the underlying provider.
   201                    The underlying provider is responsible for the implementation
   202                    of the template to an infrastructure cluster.
   203                  properties:
   204                    ref:
   205                      description: |-
   206                        Ref is a required reference to a custom resource
   207                        offered by a provider.
   208                      properties:
   209                        apiVersion:
   210                          description: API version of the referent.
   211                          type: string
   212                        fieldPath:
   213                          description: |-
   214                            If referring to a piece of an object instead of an entire object, this string
   215                            should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
   216                            For example, if the object reference is to a container within a pod, this would take on a value like:
   217                            "spec.containers{name}" (where "name" refers to the name of the container that triggered
   218                            the event) or if no container name is specified "spec.containers[2]" (container with
   219                            index 2 in this pod). This syntax is chosen only to have some well-defined way of
   220                            referencing a part of an object.
   221                            TODO: this design is not final and this field is subject to change in the future.
   222                          type: string
   223                        kind:
   224                          description: |-
   225                            Kind of the referent.
   226                            More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
   227                          type: string
   228                        name:
   229                          description: |-
   230                            Name of the referent.
   231                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
   232                          type: string
   233                        namespace:
   234                          description: |-
   235                            Namespace of the referent.
   236                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
   237                          type: string
   238                        resourceVersion:
   239                          description: |-
   240                            Specific resourceVersion to which this reference is made, if any.
   241                            More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
   242                          type: string
   243                        uid:
   244                          description: |-
   245                            UID of the referent.
   246                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
   247                          type: string
   248                      type: object
   249                      x-kubernetes-map-type: atomic
   250                  required:
   251                  - ref
   252                  type: object
   253                workers:
   254                  description: |-
   255                    Workers describes the worker nodes for the cluster.
   256                    It is a collection of node types which can be used to create
   257                    the worker nodes of the cluster.
   258                  properties:
   259                    machineDeployments:
   260                      description: |-
   261                        MachineDeployments is a list of machine deployment classes that can be used to create
   262                        a set of worker nodes.
   263                      items:
   264                        description: |-
   265                          MachineDeploymentClass serves as a template to define a set of worker nodes of the cluster
   266                          provisioned using the `ClusterClass`.
   267                        properties:
   268                          class:
   269                            description: |-
   270                              Class denotes a type of worker node present in the cluster,
   271                              this name MUST be unique within a ClusterClass and can be referenced
   272                              in the Cluster to create a managed MachineDeployment.
   273                            type: string
   274                          template:
   275                            description: |-
   276                              Template is a local struct containing a collection of templates for creation of
   277                              MachineDeployment objects representing a set of worker nodes.
   278                            properties:
   279                              bootstrap:
   280                                description: |-
   281                                  Bootstrap contains the bootstrap template reference to be used
   282                                  for the creation of worker Machines.
   283                                properties:
   284                                  ref:
   285                                    description: |-
   286                                      Ref is a required reference to a custom resource
   287                                      offered by a provider.
   288                                    properties:
   289                                      apiVersion:
   290                                        description: API version of the referent.
   291                                        type: string
   292                                      fieldPath:
   293                                        description: |-
   294                                          If referring to a piece of an object instead of an entire object, this string
   295                                          should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
   296                                          For example, if the object reference is to a container within a pod, this would take on a value like:
   297                                          "spec.containers{name}" (where "name" refers to the name of the container that triggered
   298                                          the event) or if no container name is specified "spec.containers[2]" (container with
   299                                          index 2 in this pod). This syntax is chosen only to have some well-defined way of
   300                                          referencing a part of an object.
   301                                          TODO: this design is not final and this field is subject to change in the future.
   302                                        type: string
   303                                      kind:
   304                                        description: |-
   305                                          Kind of the referent.
   306                                          More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
   307                                        type: string
   308                                      name:
   309                                        description: |-
   310                                          Name of the referent.
   311                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
   312                                        type: string
   313                                      namespace:
   314                                        description: |-
   315                                          Namespace of the referent.
   316                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
   317                                        type: string
   318                                      resourceVersion:
   319                                        description: |-
   320                                          Specific resourceVersion to which this reference is made, if any.
   321                                          More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
   322                                        type: string
   323                                      uid:
   324                                        description: |-
   325                                          UID of the referent.
   326                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
   327                                        type: string
   328                                    type: object
   329                                    x-kubernetes-map-type: atomic
   330                                required:
   331                                - ref
   332                                type: object
   333                              infrastructure:
   334                                description: |-
   335                                  Infrastructure contains the infrastructure template reference to be used
   336                                  for the creation of worker Machines.
   337                                properties:
   338                                  ref:
   339                                    description: |-
   340                                      Ref is a required reference to a custom resource
   341                                      offered by a provider.
   342                                    properties:
   343                                      apiVersion:
   344                                        description: API version of the referent.
   345                                        type: string
   346                                      fieldPath:
   347                                        description: |-
   348                                          If referring to a piece of an object instead of an entire object, this string
   349                                          should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
   350                                          For example, if the object reference is to a container within a pod, this would take on a value like:
   351                                          "spec.containers{name}" (where "name" refers to the name of the container that triggered
   352                                          the event) or if no container name is specified "spec.containers[2]" (container with
   353                                          index 2 in this pod). This syntax is chosen only to have some well-defined way of
   354                                          referencing a part of an object.
   355                                          TODO: this design is not final and this field is subject to change in the future.
   356                                        type: string
   357                                      kind:
   358                                        description: |-
   359                                          Kind of the referent.
   360                                          More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
   361                                        type: string
   362                                      name:
   363                                        description: |-
   364                                          Name of the referent.
   365                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
   366                                        type: string
   367                                      namespace:
   368                                        description: |-
   369                                          Namespace of the referent.
   370                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
   371                                        type: string
   372                                      resourceVersion:
   373                                        description: |-
   374                                          Specific resourceVersion to which this reference is made, if any.
   375                                          More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
   376                                        type: string
   377                                      uid:
   378                                        description: |-
   379                                          UID of the referent.
   380                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
   381                                        type: string
   382                                    type: object
   383                                    x-kubernetes-map-type: atomic
   384                                required:
   385                                - ref
   386                                type: object
   387                              metadata:
   388                                description: |-
   389                                  Metadata is the metadata applied to the machines of the MachineDeployment.
   390                                  At runtime this metadata is merged with the corresponding metadata from the topology.
   391                                properties:
   392                                  annotations:
   393                                    additionalProperties:
   394                                      type: string
   395                                    description: |-
   396                                      Annotations is an unstructured key value map stored with a resource that may be
   397                                      set by external tools to store and retrieve arbitrary metadata. They are not
   398                                      queryable and should be preserved when modifying objects.
   399                                      More info: http://kubernetes.io/docs/user-guide/annotations
   400                                    type: object
   401                                  labels:
   402                                    additionalProperties:
   403                                      type: string
   404                                    description: |-
   405                                      Map of string keys and values that can be used to organize and categorize
   406                                      (scope and select) objects. May match selectors of replication controllers
   407                                      and services.
   408                                      More info: http://kubernetes.io/docs/user-guide/labels
   409                                    type: object
   410                                type: object
   411                            required:
   412                            - bootstrap
   413                            - infrastructure
   414                            type: object
   415                        required:
   416                        - class
   417                        - template
   418                        type: object
   419                      type: array
   420                  type: object
   421              type: object
   422          type: object
   423      served: false
   424      storage: false
   425      subresources: {}
   426    - additionalPrinterColumns:
   427      - description: Time duration since creation of ClusterClass
   428        jsonPath: .metadata.creationTimestamp
   429        name: Age
   430        type: date
   431      name: v1beta1
   432      schema:
   433        openAPIV3Schema:
   434          description: ClusterClass is a template which can be used to create managed
   435            topologies.
   436          properties:
   437            apiVersion:
   438              description: |-
   439                APIVersion defines the versioned schema of this representation of an object.
   440                Servers should convert recognized schemas to the latest internal value, and
   441                may reject unrecognized values.
   442                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
   443              type: string
   444            kind:
   445              description: |-
   446                Kind is a string value representing the REST resource this object represents.
   447                Servers may infer this from the endpoint the client submits requests to.
   448                Cannot be updated.
   449                In CamelCase.
   450                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
   451              type: string
   452            metadata:
   453              type: object
   454            spec:
   455              description: ClusterClassSpec describes the desired state of the ClusterClass.
   456              properties:
   457                controlPlane:
   458                  description: |-
   459                    ControlPlane is a reference to a local struct that holds the details
   460                    for provisioning the Control Plane for the Cluster.
   461                  properties:
   462                    machineHealthCheck:
   463                      description: |-
   464                        MachineHealthCheck defines a MachineHealthCheck for this ControlPlaneClass.
   465                        This field is supported if and only if the ControlPlane provider template
   466                        referenced above is Machine based and supports setting replicas.
   467                      properties:
   468                        maxUnhealthy:
   469                          anyOf:
   470                          - type: integer
   471                          - type: string
   472                          description: |-
   473                            Any further remediation is only allowed if at most "MaxUnhealthy" machines selected by
   474                            "selector" are not healthy.
   475                          x-kubernetes-int-or-string: true
   476                        nodeStartupTimeout:
   477                          description: |-
   478                            Machines older than this duration without a node will be considered to have
   479                            failed and will be remediated.
   480                            If you wish to disable this feature, set the value explicitly to 0.
   481                          type: string
   482                        remediationTemplate:
   483                          description: |-
   484                            RemediationTemplate is a reference to a remediation template
   485                            provided by an infrastructure provider.
   486  
   487  
   488                            This field is completely optional, when filled, the MachineHealthCheck controller
   489                            creates a new object from the template referenced and hands off remediation of the machine to
   490                            a controller that lives outside of Cluster API.
   491                          properties:
   492                            apiVersion:
   493                              description: API version of the referent.
   494                              type: string
   495                            fieldPath:
   496                              description: |-
   497                                If referring to a piece of an object instead of an entire object, this string
   498                                should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
   499                                For example, if the object reference is to a container within a pod, this would take on a value like:
   500                                "spec.containers{name}" (where "name" refers to the name of the container that triggered
   501                                the event) or if no container name is specified "spec.containers[2]" (container with
   502                                index 2 in this pod). This syntax is chosen only to have some well-defined way of
   503                                referencing a part of an object.
   504                                TODO: this design is not final and this field is subject to change in the future.
   505                              type: string
   506                            kind:
   507                              description: |-
   508                                Kind of the referent.
   509                                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
   510                              type: string
   511                            name:
   512                              description: |-
   513                                Name of the referent.
   514                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
   515                              type: string
   516                            namespace:
   517                              description: |-
   518                                Namespace of the referent.
   519                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
   520                              type: string
   521                            resourceVersion:
   522                              description: |-
   523                                Specific resourceVersion to which this reference is made, if any.
   524                                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
   525                              type: string
   526                            uid:
   527                              description: |-
   528                                UID of the referent.
   529                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
   530                              type: string
   531                          type: object
   532                          x-kubernetes-map-type: atomic
   533                        unhealthyConditions:
   534                          description: |-
   535                            UnhealthyConditions contains a list of the conditions that determine
   536                            whether a node is considered unhealthy. The conditions are combined in a
   537                            logical OR, i.e. if any of the conditions is met, the node is unhealthy.
   538                          items:
   539                            description: |-
   540                              UnhealthyCondition represents a Node condition type and value with a timeout
   541                              specified as a duration.  When the named condition has been in the given
   542                              status for at least the timeout value, a node is considered unhealthy.
   543                            properties:
   544                              status:
   545                                minLength: 1
   546                                type: string
   547                              timeout:
   548                                type: string
   549                              type:
   550                                minLength: 1
   551                                type: string
   552                            required:
   553                            - status
   554                            - timeout
   555                            - type
   556                            type: object
   557                          type: array
   558                        unhealthyRange:
   559                          description: |-
   560                            Any further remediation is only allowed if the number of machines selected by "selector" as not healthy
   561                            is within the range of "UnhealthyRange". Takes precedence over MaxUnhealthy.
   562                            Eg. "[3-5]" - This means that remediation will be allowed only when:
   563                            (a) there are at least 3 unhealthy machines (and)
   564                            (b) there are at most 5 unhealthy machines
   565                          pattern: ^\[[0-9]+-[0-9]+\]$
   566                          type: string
   567                      type: object
   568                    machineInfrastructure:
   569                      description: |-
   570                        MachineInfrastructure defines the metadata and infrastructure information
   571                        for control plane machines.
   572  
   573  
   574                        This field is supported if and only if the control plane provider template
   575                        referenced above is Machine based and supports setting replicas.
   576                      properties:
   577                        ref:
   578                          description: |-
   579                            Ref is a required reference to a custom resource
   580                            offered by a provider.
   581                          properties:
   582                            apiVersion:
   583                              description: API version of the referent.
   584                              type: string
   585                            fieldPath:
   586                              description: |-
   587                                If referring to a piece of an object instead of an entire object, this string
   588                                should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
   589                                For example, if the object reference is to a container within a pod, this would take on a value like:
   590                                "spec.containers{name}" (where "name" refers to the name of the container that triggered
   591                                the event) or if no container name is specified "spec.containers[2]" (container with
   592                                index 2 in this pod). This syntax is chosen only to have some well-defined way of
   593                                referencing a part of an object.
   594                                TODO: this design is not final and this field is subject to change in the future.
   595                              type: string
   596                            kind:
   597                              description: |-
   598                                Kind of the referent.
   599                                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
   600                              type: string
   601                            name:
   602                              description: |-
   603                                Name of the referent.
   604                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
   605                              type: string
   606                            namespace:
   607                              description: |-
   608                                Namespace of the referent.
   609                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
   610                              type: string
   611                            resourceVersion:
   612                              description: |-
   613                                Specific resourceVersion to which this reference is made, if any.
   614                                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
   615                              type: string
   616                            uid:
   617                              description: |-
   618                                UID of the referent.
   619                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
   620                              type: string
   621                          type: object
   622                          x-kubernetes-map-type: atomic
   623                      required:
   624                      - ref
   625                      type: object
   626                    metadata:
   627                      description: |-
   628                        Metadata is the metadata applied to the ControlPlane and the Machines of the ControlPlane
   629                        if the ControlPlaneTemplate referenced is machine based. If not, it is applied only to the
   630                        ControlPlane.
   631                        At runtime this metadata is merged with the corresponding metadata from the topology.
   632  
   633  
   634                        This field is supported if and only if the control plane provider template
   635                        referenced is Machine based.
   636                      properties:
   637                        annotations:
   638                          additionalProperties:
   639                            type: string
   640                          description: |-
   641                            Annotations is an unstructured key value map stored with a resource that may be
   642                            set by external tools to store and retrieve arbitrary metadata. They are not
   643                            queryable and should be preserved when modifying objects.
   644                            More info: http://kubernetes.io/docs/user-guide/annotations
   645                          type: object
   646                        labels:
   647                          additionalProperties:
   648                            type: string
   649                          description: |-
   650                            Map of string keys and values that can be used to organize and categorize
   651                            (scope and select) objects. May match selectors of replication controllers
   652                            and services.
   653                            More info: http://kubernetes.io/docs/user-guide/labels
   654                          type: object
   655                      type: object
   656                    namingStrategy:
   657                      description: NamingStrategy allows changing the naming pattern
   658                        used when creating the control plane provider object.
   659                      properties:
   660                        template:
   661                          description: |-
   662                            Template defines the template to use for generating the name of the ControlPlane object.
   663                            If not defined, it will fallback to `{{ .cluster.name }}-{{ .random }}`.
   664                            If the templated string exceeds 63 characters, it will be trimmed to 58 characters and will
   665                            get concatenated with a random suffix of length 5.
   666                            The templating mechanism provides the following arguments:
   667                            * `.cluster.name`: The name of the cluster object.
   668                            * `.random`: A random alphanumeric string, without vowels, of length 5.
   669                          type: string
   670                      type: object
   671                    nodeDeletionTimeout:
   672                      description: |-
   673                        NodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine
   674                        hosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely.
   675                        Defaults to 10 seconds.
   676                        NOTE: This value can be overridden while defining a Cluster.Topology.
   677                      type: string
   678                    nodeDrainTimeout:
   679                      description: |-
   680                        NodeDrainTimeout is the total amount of time that the controller will spend on draining a node.
   681                        The default value is 0, meaning that the node can be drained without any time limitations.
   682                        NOTE: NodeDrainTimeout is different from `kubectl drain --timeout`
   683                        NOTE: This value can be overridden while defining a Cluster.Topology.
   684                      type: string
   685                    nodeVolumeDetachTimeout:
   686                      description: |-
   687                        NodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes
   688                        to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations.
   689                        NOTE: This value can be overridden while defining a Cluster.Topology.
   690                      type: string
   691                    ref:
   692                      description: |-
   693                        Ref is a required reference to a custom resource
   694                        offered by a provider.
   695                      properties:
   696                        apiVersion:
   697                          description: API version of the referent.
   698                          type: string
   699                        fieldPath:
   700                          description: |-
   701                            If referring to a piece of an object instead of an entire object, this string
   702                            should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
   703                            For example, if the object reference is to a container within a pod, this would take on a value like:
   704                            "spec.containers{name}" (where "name" refers to the name of the container that triggered
   705                            the event) or if no container name is specified "spec.containers[2]" (container with
   706                            index 2 in this pod). This syntax is chosen only to have some well-defined way of
   707                            referencing a part of an object.
   708                            TODO: this design is not final and this field is subject to change in the future.
   709                          type: string
   710                        kind:
   711                          description: |-
   712                            Kind of the referent.
   713                            More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
   714                          type: string
   715                        name:
   716                          description: |-
   717                            Name of the referent.
   718                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
   719                          type: string
   720                        namespace:
   721                          description: |-
   722                            Namespace of the referent.
   723                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
   724                          type: string
   725                        resourceVersion:
   726                          description: |-
   727                            Specific resourceVersion to which this reference is made, if any.
   728                            More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
   729                          type: string
   730                        uid:
   731                          description: |-
   732                            UID of the referent.
   733                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
   734                          type: string
   735                      type: object
   736                      x-kubernetes-map-type: atomic
   737                  required:
   738                  - ref
   739                  type: object
   740                infrastructure:
   741                  description: |-
   742                    Infrastructure is a reference to a provider-specific template that holds
   743                    the details for provisioning infrastructure specific cluster
   744                    for the underlying provider.
   745                    The underlying provider is responsible for the implementation
   746                    of the template to an infrastructure cluster.
   747                  properties:
   748                    ref:
   749                      description: |-
   750                        Ref is a required reference to a custom resource
   751                        offered by a provider.
   752                      properties:
   753                        apiVersion:
   754                          description: API version of the referent.
   755                          type: string
   756                        fieldPath:
   757                          description: |-
   758                            If referring to a piece of an object instead of an entire object, this string
   759                            should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
   760                            For example, if the object reference is to a container within a pod, this would take on a value like:
   761                            "spec.containers{name}" (where "name" refers to the name of the container that triggered
   762                            the event) or if no container name is specified "spec.containers[2]" (container with
   763                            index 2 in this pod). This syntax is chosen only to have some well-defined way of
   764                            referencing a part of an object.
   765                            TODO: this design is not final and this field is subject to change in the future.
   766                          type: string
   767                        kind:
   768                          description: |-
   769                            Kind of the referent.
   770                            More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
   771                          type: string
   772                        name:
   773                          description: |-
   774                            Name of the referent.
   775                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
   776                          type: string
   777                        namespace:
   778                          description: |-
   779                            Namespace of the referent.
   780                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
   781                          type: string
   782                        resourceVersion:
   783                          description: |-
   784                            Specific resourceVersion to which this reference is made, if any.
   785                            More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
   786                          type: string
   787                        uid:
   788                          description: |-
   789                            UID of the referent.
   790                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
   791                          type: string
   792                      type: object
   793                      x-kubernetes-map-type: atomic
   794                  required:
   795                  - ref
   796                  type: object
   797                patches:
   798                  description: |-
   799                    Patches defines the patches which are applied to customize
   800                    referenced templates of a ClusterClass.
   801                    Note: Patches will be applied in the order of the array.
   802                  items:
   803                    description: ClusterClassPatch defines a patch which is applied
   804                      to customize the referenced templates.
   805                    properties:
   806                      definitions:
   807                        description: |-
   808                          Definitions define inline patches.
   809                          Note: Patches will be applied in the order of the array.
   810                          Note: Exactly one of Definitions or External must be set.
   811                        items:
   812                          description: PatchDefinition defines a patch which is applied
   813                            to customize the referenced templates.
   814                          properties:
   815                            jsonPatches:
   816                              description: |-
   817                                JSONPatches defines the patches which should be applied on the templates
   818                                matching the selector.
   819                                Note: Patches will be applied in the order of the array.
   820                              items:
   821                                description: JSONPatch defines a JSON patch.
   822                                properties:
   823                                  op:
   824                                    description: |-
   825                                      Op defines the operation of the patch.
   826                                      Note: Only `add`, `replace` and `remove` are supported.
   827                                    type: string
   828                                  path:
   829                                    description: |-
   830                                      Path defines the path of the patch.
   831                                      Note: Only the spec of a template can be patched, thus the path has to start with /spec/.
   832                                      Note: For now the only allowed array modifications are `append` and `prepend`, i.e.:
   833                                      * for op: `add`: only index 0 (prepend) and - (append) are allowed
   834                                      * for op: `replace` or `remove`: no indexes are allowed
   835                                    type: string
   836                                  value:
   837                                    description: |-
   838                                      Value defines the value of the patch.
   839                                      Note: Either Value or ValueFrom is required for add and replace
   840                                      operations. Only one of them is allowed to be set at the same time.
   841                                      Note: We have to use apiextensionsv1.JSON instead of our JSON type,
   842                                      because controller-tools has a hard-coded schema for apiextensionsv1.JSON
   843                                      which cannot be produced by another type (unset type field).
   844                                      Ref: https://github.com/kubernetes-sigs/controller-tools/blob/d0e03a142d0ecdd5491593e941ee1d6b5d91dba6/pkg/crd/known_types.go#L106-L111
   845                                    x-kubernetes-preserve-unknown-fields: true
   846                                  valueFrom:
   847                                    description: |-
   848                                      ValueFrom defines the value of the patch.
   849                                      Note: Either Value or ValueFrom is required for add and replace
   850                                      operations. Only one of them is allowed to be set at the same time.
   851                                    properties:
   852                                      template:
   853                                        description: |-
   854                                          Template is the Go template to be used to calculate the value.
   855                                          A template can reference variables defined in .spec.variables and builtin variables.
   856                                          Note: The template must evaluate to a valid YAML or JSON value.
   857                                        type: string
   858                                      variable:
   859                                        description: |-
   860                                          Variable is the variable to be used as value.
   861                                          Variable can be one of the variables defined in .spec.variables or a builtin variable.
   862                                        type: string
   863                                    type: object
   864                                required:
   865                                - op
   866                                - path
   867                                type: object
   868                              type: array
   869                            selector:
   870                              description: Selector defines on which templates the patch
   871                                should be applied.
   872                              properties:
   873                                apiVersion:
   874                                  description: APIVersion filters templates by apiVersion.
   875                                  type: string
   876                                kind:
   877                                  description: Kind filters templates by kind.
   878                                  type: string
   879                                matchResources:
   880                                  description: MatchResources selects templates based
   881                                    on where they are referenced.
   882                                  properties:
   883                                    controlPlane:
   884                                      description: |-
   885                                        ControlPlane selects templates referenced in .spec.ControlPlane.
   886                                        Note: this will match the controlPlane and also the controlPlane
   887                                        machineInfrastructure (depending on the kind and apiVersion).
   888                                      type: boolean
   889                                    infrastructureCluster:
   890                                      description: InfrastructureCluster selects templates
   891                                        referenced in .spec.infrastructure.
   892                                      type: boolean
   893                                    machineDeploymentClass:
   894                                      description: |-
   895                                        MachineDeploymentClass selects templates referenced in specific MachineDeploymentClasses in
   896                                        .spec.workers.machineDeployments.
   897                                      properties:
   898                                        names:
   899                                          description: Names selects templates by class
   900                                            names.
   901                                          items:
   902                                            type: string
   903                                          type: array
   904                                      type: object
   905                                    machinePoolClass:
   906                                      description: |-
   907                                        MachinePoolClass selects templates referenced in specific MachinePoolClasses in
   908                                        .spec.workers.machinePools.
   909                                      properties:
   910                                        names:
   911                                          description: Names selects templates by class
   912                                            names.
   913                                          items:
   914                                            type: string
   915                                          type: array
   916                                      type: object
   917                                  type: object
   918                              required:
   919                              - apiVersion
   920                              - kind
   921                              - matchResources
   922                              type: object
   923                          required:
   924                          - jsonPatches
   925                          - selector
   926                          type: object
   927                        type: array
   928                      description:
   929                        description: Description is a human-readable description of
   930                          this patch.
   931                        type: string
   932                      enabledIf:
   933                        description: |-
   934                          EnabledIf is a Go template to be used to calculate if a patch should be enabled.
   935                          It can reference variables defined in .spec.variables and builtin variables.
   936                          The patch will be enabled if the template evaluates to `true`, otherwise it will
   937                          be disabled.
   938                          If EnabledIf is not set, the patch will be enabled per default.
   939                        type: string
   940                      external:
   941                        description: |-
   942                          External defines an external patch.
   943                          Note: Exactly one of Definitions or External must be set.
   944                        properties:
   945                          discoverVariablesExtension:
   946                            description: DiscoverVariablesExtension references an extension
   947                              which is called to discover variables.
   948                            type: string
   949                          generateExtension:
   950                            description: GenerateExtension references an extension which
   951                              is called to generate patches.
   952                            type: string
   953                          settings:
   954                            additionalProperties:
   955                              type: string
   956                            description: |-
   957                              Settings defines key value pairs to be passed to the extensions.
   958                              Values defined here take precedence over the values defined in the
   959                              corresponding ExtensionConfig.
   960                            type: object
   961                          validateExtension:
   962                            description: ValidateExtension references an extension which
   963                              is called to validate the topology.
   964                            type: string
   965                        type: object
   966                      name:
   967                        description: Name of the patch.
   968                        type: string
   969                    required:
   970                    - name
   971                    type: object
   972                  type: array
   973                variables:
   974                  description: |-
   975                    Variables defines the variables which can be configured
   976                    in the Cluster topology and are then used in patches.
   977                  items:
   978                    description: |-
   979                      ClusterClassVariable defines a variable which can
   980                      be configured in the Cluster topology and used in patches.
   981                    properties:
   982                      metadata:
   983                        description: |-
   984                          Metadata is the metadata of a variable.
   985                          It can be used to add additional data for higher level tools to
   986                          a ClusterClassVariable.
   987                        properties:
   988                          annotations:
   989                            additionalProperties:
   990                              type: string
   991                            description: |-
   992                              Annotations is an unstructured key value map that can be used to store and
   993                              retrieve arbitrary metadata.
   994                              They are not queryable.
   995                            type: object
   996                          labels:
   997                            additionalProperties:
   998                              type: string
   999                            description: |-
  1000                              Map of string keys and values that can be used to organize and categorize
  1001                              (scope and select) variables.
  1002                            type: object
  1003                        type: object
  1004                      name:
  1005                        description: Name of the variable.
  1006                        type: string
  1007                      required:
  1008                        description: |-
  1009                          Required specifies if the variable is required.
  1010                          Note: this applies to the variable as a whole and thus the
  1011                          top-level object defined in the schema. If nested fields are
  1012                          required, this will be specified inside the schema.
  1013                        type: boolean
  1014                      schema:
  1015                        description: Schema defines the schema of the variable.
  1016                        properties:
  1017                          openAPIV3Schema:
  1018                            description: |-
  1019                              OpenAPIV3Schema defines the schema of a variable via OpenAPI v3
  1020                              schema. The schema is a subset of the schema used in
  1021                              Kubernetes CRDs.
  1022                            properties:
  1023                              additionalProperties:
  1024                                description: |-
  1025                                  AdditionalProperties specifies the schema of values in a map (keys are always strings).
  1026                                  NOTE: Can only be set if type is object.
  1027                                  NOTE: AdditionalProperties is mutually exclusive with Properties.
  1028                                  NOTE: This field uses PreserveUnknownFields and Schemaless,
  1029                                  because recursive validation is not possible.
  1030                                x-kubernetes-preserve-unknown-fields: true
  1031                              default:
  1032                                description: |-
  1033                                  Default is the default value of the variable.
  1034                                  NOTE: Can be set for all types.
  1035                                x-kubernetes-preserve-unknown-fields: true
  1036                              description:
  1037                                description: Description is a human-readable description
  1038                                  of this variable.
  1039                                type: string
  1040                              enum:
  1041                                description: |-
  1042                                  Enum is the list of valid values of the variable.
  1043                                  NOTE: Can be set for all types.
  1044                                items:
  1045                                  x-kubernetes-preserve-unknown-fields: true
  1046                                type: array
  1047                              example:
  1048                                description: Example is an example for this variable.
  1049                                x-kubernetes-preserve-unknown-fields: true
  1050                              exclusiveMaximum:
  1051                                description: |-
  1052                                  ExclusiveMaximum specifies if the Maximum is exclusive.
  1053                                  NOTE: Can only be set if type is integer or number.
  1054                                type: boolean
  1055                              exclusiveMinimum:
  1056                                description: |-
  1057                                  ExclusiveMinimum specifies if the Minimum is exclusive.
  1058                                  NOTE: Can only be set if type is integer or number.
  1059                                type: boolean
  1060                              format:
  1061                                description: |-
  1062                                  Format is an OpenAPI v3 format string. Unknown formats are ignored.
  1063                                  For a list of supported formats please see: (of the k8s.io/apiextensions-apiserver version we're currently using)
  1064                                  https://github.com/kubernetes/apiextensions-apiserver/blob/master/pkg/apiserver/validation/formats.go
  1065                                  NOTE: Can only be set if type is string.
  1066                                type: string
  1067                              items:
  1068                                description: |-
  1069                                  Items specifies fields of an array.
  1070                                  NOTE: Can only be set if type is array.
  1071                                  NOTE: This field uses PreserveUnknownFields and Schemaless,
  1072                                  because recursive validation is not possible.
  1073                                x-kubernetes-preserve-unknown-fields: true
  1074                              maxItems:
  1075                                description: |-
  1076                                  MaxItems is the max length of an array variable.
  1077                                  NOTE: Can only be set if type is array.
  1078                                format: int64
  1079                                type: integer
  1080                              maxLength:
  1081                                description: |-
  1082                                  MaxLength is the max length of a string variable.
  1083                                  NOTE: Can only be set if type is string.
  1084                                format: int64
  1085                                type: integer
  1086                              maximum:
  1087                                description: |-
  1088                                  Maximum is the maximum of an integer or number variable.
  1089                                  If ExclusiveMaximum is false, the variable is valid if it is lower than, or equal to, the value of Maximum.
  1090                                  If ExclusiveMaximum is true, the variable is valid if it is strictly lower than the value of Maximum.
  1091                                  NOTE: Can only be set if type is integer or number.
  1092                                format: int64
  1093                                type: integer
  1094                              minItems:
  1095                                description: |-
  1096                                  MinItems is the min length of an array variable.
  1097                                  NOTE: Can only be set if type is array.
  1098                                format: int64
  1099                                type: integer
  1100                              minLength:
  1101                                description: |-
  1102                                  MinLength is the min length of a string variable.
  1103                                  NOTE: Can only be set if type is string.
  1104                                format: int64
  1105                                type: integer
  1106                              minimum:
  1107                                description: |-
  1108                                  Minimum is the minimum of an integer or number variable.
  1109                                  If ExclusiveMinimum is false, the variable is valid if it is greater than, or equal to, the value of Minimum.
  1110                                  If ExclusiveMinimum is true, the variable is valid if it is strictly greater than the value of Minimum.
  1111                                  NOTE: Can only be set if type is integer or number.
  1112                                format: int64
  1113                                type: integer
  1114                              pattern:
  1115                                description: |-
  1116                                  Pattern is the regex which a string variable must match.
  1117                                  NOTE: Can only be set if type is string.
  1118                                type: string
  1119                              properties:
  1120                                description: |-
  1121                                  Properties specifies fields of an object.
  1122                                  NOTE: Can only be set if type is object.
  1123                                  NOTE: Properties is mutually exclusive with AdditionalProperties.
  1124                                  NOTE: This field uses PreserveUnknownFields and Schemaless,
  1125                                  because recursive validation is not possible.
  1126                                x-kubernetes-preserve-unknown-fields: true
  1127                              required:
  1128                                description: |-
  1129                                  Required specifies which fields of an object are required.
  1130                                  NOTE: Can only be set if type is object.
  1131                                items:
  1132                                  type: string
  1133                                type: array
  1134                              type:
  1135                                description: |-
  1136                                  Type is the type of the variable.
  1137                                  Valid values are: object, array, string, integer, number or boolean.
  1138                                type: string
  1139                              uniqueItems:
  1140                                description: |-
  1141                                  UniqueItems specifies if items in an array must be unique.
  1142                                  NOTE: Can only be set if type is array.
  1143                                type: boolean
  1144                              x-kubernetes-preserve-unknown-fields:
  1145                                description: |-
  1146                                  XPreserveUnknownFields allows setting fields in a variable object
  1147                                  which are not defined in the variable schema. This affects fields recursively,
  1148                                  except if nested properties or additionalProperties are specified in the schema.
  1149                                type: boolean
  1150                            required:
  1151                            - type
  1152                            type: object
  1153                        required:
  1154                        - openAPIV3Schema
  1155                        type: object
  1156                    required:
  1157                    - name
  1158                    - required
  1159                    - schema
  1160                    type: object
  1161                  type: array
  1162                workers:
  1163                  description: |-
  1164                    Workers describes the worker nodes for the cluster.
  1165                    It is a collection of node types which can be used to create
  1166                    the worker nodes of the cluster.
  1167                  properties:
  1168                    machineDeployments:
  1169                      description: |-
  1170                        MachineDeployments is a list of machine deployment classes that can be used to create
  1171                        a set of worker nodes.
  1172                      items:
  1173                        description: |-
  1174                          MachineDeploymentClass serves as a template to define a set of worker nodes of the cluster
  1175                          provisioned using the `ClusterClass`.
  1176                        properties:
  1177                          class:
  1178                            description: |-
  1179                              Class denotes a type of worker node present in the cluster,
  1180                              this name MUST be unique within a ClusterClass and can be referenced
  1181                              in the Cluster to create a managed MachineDeployment.
  1182                            type: string
  1183                          failureDomain:
  1184                            description: |-
  1185                              FailureDomain is the failure domain the machines will be created in.
  1186                              Must match a key in the FailureDomains map stored on the cluster object.
  1187                              NOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass.
  1188                            type: string
  1189                          machineHealthCheck:
  1190                            description: MachineHealthCheck defines a MachineHealthCheck
  1191                              for this MachineDeploymentClass.
  1192                            properties:
  1193                              maxUnhealthy:
  1194                                anyOf:
  1195                                - type: integer
  1196                                - type: string
  1197                                description: |-
  1198                                  Any further remediation is only allowed if at most "MaxUnhealthy" machines selected by
  1199                                  "selector" are not healthy.
  1200                                x-kubernetes-int-or-string: true
  1201                              nodeStartupTimeout:
  1202                                description: |-
  1203                                  Machines older than this duration without a node will be considered to have
  1204                                  failed and will be remediated.
  1205                                  If you wish to disable this feature, set the value explicitly to 0.
  1206                                type: string
  1207                              remediationTemplate:
  1208                                description: |-
  1209                                  RemediationTemplate is a reference to a remediation template
  1210                                  provided by an infrastructure provider.
  1211  
  1212  
  1213                                  This field is completely optional, when filled, the MachineHealthCheck controller
  1214                                  creates a new object from the template referenced and hands off remediation of the machine to
  1215                                  a controller that lives outside of Cluster API.
  1216                                properties:
  1217                                  apiVersion:
  1218                                    description: API version of the referent.
  1219                                    type: string
  1220                                  fieldPath:
  1221                                    description: |-
  1222                                      If referring to a piece of an object instead of an entire object, this string
  1223                                      should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
  1224                                      For example, if the object reference is to a container within a pod, this would take on a value like:
  1225                                      "spec.containers{name}" (where "name" refers to the name of the container that triggered
  1226                                      the event) or if no container name is specified "spec.containers[2]" (container with
  1227                                      index 2 in this pod). This syntax is chosen only to have some well-defined way of
  1228                                      referencing a part of an object.
  1229                                      TODO: this design is not final and this field is subject to change in the future.
  1230                                    type: string
  1231                                  kind:
  1232                                    description: |-
  1233                                      Kind of the referent.
  1234                                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
  1235                                    type: string
  1236                                  name:
  1237                                    description: |-
  1238                                      Name of the referent.
  1239                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
  1240                                    type: string
  1241                                  namespace:
  1242                                    description: |-
  1243                                      Namespace of the referent.
  1244                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
  1245                                    type: string
  1246                                  resourceVersion:
  1247                                    description: |-
  1248                                      Specific resourceVersion to which this reference is made, if any.
  1249                                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
  1250                                    type: string
  1251                                  uid:
  1252                                    description: |-
  1253                                      UID of the referent.
  1254                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
  1255                                    type: string
  1256                                type: object
  1257                                x-kubernetes-map-type: atomic
  1258                              unhealthyConditions:
  1259                                description: |-
  1260                                  UnhealthyConditions contains a list of the conditions that determine
  1261                                  whether a node is considered unhealthy. The conditions are combined in a
  1262                                  logical OR, i.e. if any of the conditions is met, the node is unhealthy.
  1263                                items:
  1264                                  description: |-
  1265                                    UnhealthyCondition represents a Node condition type and value with a timeout
  1266                                    specified as a duration.  When the named condition has been in the given
  1267                                    status for at least the timeout value, a node is considered unhealthy.
  1268                                  properties:
  1269                                    status:
  1270                                      minLength: 1
  1271                                      type: string
  1272                                    timeout:
  1273                                      type: string
  1274                                    type:
  1275                                      minLength: 1
  1276                                      type: string
  1277                                  required:
  1278                                  - status
  1279                                  - timeout
  1280                                  - type
  1281                                  type: object
  1282                                type: array
  1283                              unhealthyRange:
  1284                                description: |-
  1285                                  Any further remediation is only allowed if the number of machines selected by "selector" as not healthy
  1286                                  is within the range of "UnhealthyRange". Takes precedence over MaxUnhealthy.
  1287                                  Eg. "[3-5]" - This means that remediation will be allowed only when:
  1288                                  (a) there are at least 3 unhealthy machines (and)
  1289                                  (b) there are at most 5 unhealthy machines
  1290                                pattern: ^\[[0-9]+-[0-9]+\]$
  1291                                type: string
  1292                            type: object
  1293                          minReadySeconds:
  1294                            description: |-
  1295                              Minimum number of seconds for which a newly created machine should
  1296                              be ready.
  1297                              Defaults to 0 (machine will be considered available as soon as it
  1298                              is ready)
  1299                              NOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass.
  1300                            format: int32
  1301                            type: integer
  1302                          namingStrategy:
  1303                            description: NamingStrategy allows changing the naming pattern
  1304                              used when creating the MachineDeployment.
  1305                            properties:
  1306                              template:
  1307                                description: |-
  1308                                  Template defines the template to use for generating the name of the MachineDeployment object.
  1309                                  If not defined, it will fallback to `{{ .cluster.name }}-{{ .machineDeployment.topologyName }}-{{ .random }}`.
  1310                                  If the templated string exceeds 63 characters, it will be trimmed to 58 characters and will
  1311                                  get concatenated with a random suffix of length 5.
  1312                                  The templating mechanism provides the following arguments:
  1313                                  * `.cluster.name`: The name of the cluster object.
  1314                                  * `.random`: A random alphanumeric string, without vowels, of length 5.
  1315                                  * `.machineDeployment.topologyName`: The name of the MachineDeployment topology (Cluster.spec.topology.workers.machineDeployments[].name).
  1316                                type: string
  1317                            type: object
  1318                          nodeDeletionTimeout:
  1319                            description: |-
  1320                              NodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine
  1321                              hosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely.
  1322                              Defaults to 10 seconds.
  1323                              NOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass.
  1324                            type: string
  1325                          nodeDrainTimeout:
  1326                            description: |-
  1327                              NodeDrainTimeout is the total amount of time that the controller will spend on draining a node.
  1328                              The default value is 0, meaning that the node can be drained without any time limitations.
  1329                              NOTE: NodeDrainTimeout is different from `kubectl drain --timeout`
  1330                              NOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass.
  1331                            type: string
  1332                          nodeVolumeDetachTimeout:
  1333                            description: |-
  1334                              NodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes
  1335                              to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations.
  1336                              NOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass.
  1337                            type: string
  1338                          strategy:
  1339                            description: |-
  1340                              The deployment strategy to use to replace existing machines with
  1341                              new ones.
  1342                              NOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass.
  1343                            properties:
  1344                              rollingUpdate:
  1345                                description: |-
  1346                                  Rolling update config params. Present only if
  1347                                  MachineDeploymentStrategyType = RollingUpdate.
  1348                                properties:
  1349                                  deletePolicy:
  1350                                    description: |-
  1351                                      DeletePolicy defines the policy used by the MachineDeployment to identify nodes to delete when downscaling.
  1352                                      Valid values are "Random, "Newest", "Oldest"
  1353                                      When no value is supplied, the default DeletePolicy of MachineSet is used
  1354                                    enum:
  1355                                    - Random
  1356                                    - Newest
  1357                                    - Oldest
  1358                                    type: string
  1359                                  maxSurge:
  1360                                    anyOf:
  1361                                    - type: integer
  1362                                    - type: string
  1363                                    description: |-
  1364                                      The maximum number of machines that can be scheduled above the
  1365                                      desired number of machines.
  1366                                      Value can be an absolute number (ex: 5) or a percentage of
  1367                                      desired machines (ex: 10%).
  1368                                      This can not be 0 if MaxUnavailable is 0.
  1369                                      Absolute number is calculated from percentage by rounding up.
  1370                                      Defaults to 1.
  1371                                      Example: when this is set to 30%, the new MachineSet can be scaled
  1372                                      up immediately when the rolling update starts, such that the total
  1373                                      number of old and new machines do not exceed 130% of desired
  1374                                      machines. Once old machines have been killed, new MachineSet can
  1375                                      be scaled up further, ensuring that total number of machines running
  1376                                      at any time during the update is at most 130% of desired machines.
  1377                                    x-kubernetes-int-or-string: true
  1378                                  maxUnavailable:
  1379                                    anyOf:
  1380                                    - type: integer
  1381                                    - type: string
  1382                                    description: |-
  1383                                      The maximum number of machines that can be unavailable during the update.
  1384                                      Value can be an absolute number (ex: 5) or a percentage of desired
  1385                                      machines (ex: 10%).
  1386                                      Absolute number is calculated from percentage by rounding down.
  1387                                      This can not be 0 if MaxSurge is 0.
  1388                                      Defaults to 0.
  1389                                      Example: when this is set to 30%, the old MachineSet can be scaled
  1390                                      down to 70% of desired machines immediately when the rolling update
  1391                                      starts. Once new machines are ready, old MachineSet can be scaled
  1392                                      down further, followed by scaling up the new MachineSet, ensuring
  1393                                      that the total number of machines available at all times
  1394                                      during the update is at least 70% of desired machines.
  1395                                    x-kubernetes-int-or-string: true
  1396                                type: object
  1397                              type:
  1398                                description: |-
  1399                                  Type of deployment. Allowed values are RollingUpdate and OnDelete.
  1400                                  The default is RollingUpdate.
  1401                                enum:
  1402                                - RollingUpdate
  1403                                - OnDelete
  1404                                type: string
  1405                            type: object
  1406                          template:
  1407                            description: |-
  1408                              Template is a local struct containing a collection of templates for creation of
  1409                              MachineDeployment objects representing a set of worker nodes.
  1410                            properties:
  1411                              bootstrap:
  1412                                description: |-
  1413                                  Bootstrap contains the bootstrap template reference to be used
  1414                                  for the creation of worker Machines.
  1415                                properties:
  1416                                  ref:
  1417                                    description: |-
  1418                                      Ref is a required reference to a custom resource
  1419                                      offered by a provider.
  1420                                    properties:
  1421                                      apiVersion:
  1422                                        description: API version of the referent.
  1423                                        type: string
  1424                                      fieldPath:
  1425                                        description: |-
  1426                                          If referring to a piece of an object instead of an entire object, this string
  1427                                          should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
  1428                                          For example, if the object reference is to a container within a pod, this would take on a value like:
  1429                                          "spec.containers{name}" (where "name" refers to the name of the container that triggered
  1430                                          the event) or if no container name is specified "spec.containers[2]" (container with
  1431                                          index 2 in this pod). This syntax is chosen only to have some well-defined way of
  1432                                          referencing a part of an object.
  1433                                          TODO: this design is not final and this field is subject to change in the future.
  1434                                        type: string
  1435                                      kind:
  1436                                        description: |-
  1437                                          Kind of the referent.
  1438                                          More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
  1439                                        type: string
  1440                                      name:
  1441                                        description: |-
  1442                                          Name of the referent.
  1443                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
  1444                                        type: string
  1445                                      namespace:
  1446                                        description: |-
  1447                                          Namespace of the referent.
  1448                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
  1449                                        type: string
  1450                                      resourceVersion:
  1451                                        description: |-
  1452                                          Specific resourceVersion to which this reference is made, if any.
  1453                                          More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
  1454                                        type: string
  1455                                      uid:
  1456                                        description: |-
  1457                                          UID of the referent.
  1458                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
  1459                                        type: string
  1460                                    type: object
  1461                                    x-kubernetes-map-type: atomic
  1462                                required:
  1463                                - ref
  1464                                type: object
  1465                              infrastructure:
  1466                                description: |-
  1467                                  Infrastructure contains the infrastructure template reference to be used
  1468                                  for the creation of worker Machines.
  1469                                properties:
  1470                                  ref:
  1471                                    description: |-
  1472                                      Ref is a required reference to a custom resource
  1473                                      offered by a provider.
  1474                                    properties:
  1475                                      apiVersion:
  1476                                        description: API version of the referent.
  1477                                        type: string
  1478                                      fieldPath:
  1479                                        description: |-
  1480                                          If referring to a piece of an object instead of an entire object, this string
  1481                                          should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
  1482                                          For example, if the object reference is to a container within a pod, this would take on a value like:
  1483                                          "spec.containers{name}" (where "name" refers to the name of the container that triggered
  1484                                          the event) or if no container name is specified "spec.containers[2]" (container with
  1485                                          index 2 in this pod). This syntax is chosen only to have some well-defined way of
  1486                                          referencing a part of an object.
  1487                                          TODO: this design is not final and this field is subject to change in the future.
  1488                                        type: string
  1489                                      kind:
  1490                                        description: |-
  1491                                          Kind of the referent.
  1492                                          More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
  1493                                        type: string
  1494                                      name:
  1495                                        description: |-
  1496                                          Name of the referent.
  1497                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
  1498                                        type: string
  1499                                      namespace:
  1500                                        description: |-
  1501                                          Namespace of the referent.
  1502                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
  1503                                        type: string
  1504                                      resourceVersion:
  1505                                        description: |-
  1506                                          Specific resourceVersion to which this reference is made, if any.
  1507                                          More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
  1508                                        type: string
  1509                                      uid:
  1510                                        description: |-
  1511                                          UID of the referent.
  1512                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
  1513                                        type: string
  1514                                    type: object
  1515                                    x-kubernetes-map-type: atomic
  1516                                required:
  1517                                - ref
  1518                                type: object
  1519                              metadata:
  1520                                description: |-
  1521                                  Metadata is the metadata applied to the MachineDeployment and the machines of the MachineDeployment.
  1522                                  At runtime this metadata is merged with the corresponding metadata from the topology.
  1523                                properties:
  1524                                  annotations:
  1525                                    additionalProperties:
  1526                                      type: string
  1527                                    description: |-
  1528                                      Annotations is an unstructured key value map stored with a resource that may be
  1529                                      set by external tools to store and retrieve arbitrary metadata. They are not
  1530                                      queryable and should be preserved when modifying objects.
  1531                                      More info: http://kubernetes.io/docs/user-guide/annotations
  1532                                    type: object
  1533                                  labels:
  1534                                    additionalProperties:
  1535                                      type: string
  1536                                    description: |-
  1537                                      Map of string keys and values that can be used to organize and categorize
  1538                                      (scope and select) objects. May match selectors of replication controllers
  1539                                      and services.
  1540                                      More info: http://kubernetes.io/docs/user-guide/labels
  1541                                    type: object
  1542                                type: object
  1543                            required:
  1544                            - bootstrap
  1545                            - infrastructure
  1546                            type: object
  1547                        required:
  1548                        - class
  1549                        - template
  1550                        type: object
  1551                      type: array
  1552                    machinePools:
  1553                      description: |-
  1554                        MachinePools is a list of machine pool classes that can be used to create
  1555                        a set of worker nodes.
  1556                      items:
  1557                        description: |-
  1558                          MachinePoolClass serves as a template to define a pool of worker nodes of the cluster
  1559                          provisioned using `ClusterClass`.
  1560                        properties:
  1561                          class:
  1562                            description: |-
  1563                              Class denotes a type of machine pool present in the cluster,
  1564                              this name MUST be unique within a ClusterClass and can be referenced
  1565                              in the Cluster to create a managed MachinePool.
  1566                            type: string
  1567                          failureDomains:
  1568                            description: |-
  1569                              FailureDomains is the list of failure domains the MachinePool should be attached to.
  1570                              Must match a key in the FailureDomains map stored on the cluster object.
  1571                              NOTE: This value can be overridden while defining a Cluster.Topology using this MachinePoolClass.
  1572                            items:
  1573                              type: string
  1574                            type: array
  1575                          minReadySeconds:
  1576                            description: |-
  1577                              Minimum number of seconds for which a newly created machine pool should
  1578                              be ready.
  1579                              Defaults to 0 (machine will be considered available as soon as it
  1580                              is ready)
  1581                              NOTE: This value can be overridden while defining a Cluster.Topology using this MachinePoolClass.
  1582                            format: int32
  1583                            type: integer
  1584                          namingStrategy:
  1585                            description: NamingStrategy allows changing the naming pattern
  1586                              used when creating the MachinePool.
  1587                            properties:
  1588                              template:
  1589                                description: |-
  1590                                  Template defines the template to use for generating the name of the MachinePool object.
  1591                                  If not defined, it will fallback to `{{ .cluster.name }}-{{ .machinePool.topologyName }}-{{ .random }}`.
  1592                                  If the templated string exceeds 63 characters, it will be trimmed to 58 characters and will
  1593                                  get concatenated with a random suffix of length 5.
  1594                                  The templating mechanism provides the following arguments:
  1595                                  * `.cluster.name`: The name of the cluster object.
  1596                                  * `.random`: A random alphanumeric string, without vowels, of length 5.
  1597                                  * `.machinePool.topologyName`: The name of the MachinePool topology (Cluster.spec.topology.workers.machinePools[].name).
  1598                                type: string
  1599                            type: object
  1600                          nodeDeletionTimeout:
  1601                            description: |-
  1602                              NodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine
  1603                              hosts after the Machine Pool is marked for deletion. A duration of 0 will retry deletion indefinitely.
  1604                              Defaults to 10 seconds.
  1605                              NOTE: This value can be overridden while defining a Cluster.Topology using this MachinePoolClass.
  1606                            type: string
  1607                          nodeDrainTimeout:
  1608                            description: |-
  1609                              NodeDrainTimeout is the total amount of time that the controller will spend on draining a node.
  1610                              The default value is 0, meaning that the node can be drained without any time limitations.
  1611                              NOTE: NodeDrainTimeout is different from `kubectl drain --timeout`
  1612                              NOTE: This value can be overridden while defining a Cluster.Topology using this MachinePoolClass.
  1613                            type: string
  1614                          nodeVolumeDetachTimeout:
  1615                            description: |-
  1616                              NodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes
  1617                              to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations.
  1618                              NOTE: This value can be overridden while defining a Cluster.Topology using this MachinePoolClass.
  1619                            type: string
  1620                          template:
  1621                            description: |-
  1622                              Template is a local struct containing a collection of templates for creation of
  1623                              MachinePools objects representing a pool of worker nodes.
  1624                            properties:
  1625                              bootstrap:
  1626                                description: |-
  1627                                  Bootstrap contains the bootstrap template reference to be used
  1628                                  for the creation of the Machines in the MachinePool.
  1629                                properties:
  1630                                  ref:
  1631                                    description: |-
  1632                                      Ref is a required reference to a custom resource
  1633                                      offered by a provider.
  1634                                    properties:
  1635                                      apiVersion:
  1636                                        description: API version of the referent.
  1637                                        type: string
  1638                                      fieldPath:
  1639                                        description: |-
  1640                                          If referring to a piece of an object instead of an entire object, this string
  1641                                          should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
  1642                                          For example, if the object reference is to a container within a pod, this would take on a value like:
  1643                                          "spec.containers{name}" (where "name" refers to the name of the container that triggered
  1644                                          the event) or if no container name is specified "spec.containers[2]" (container with
  1645                                          index 2 in this pod). This syntax is chosen only to have some well-defined way of
  1646                                          referencing a part of an object.
  1647                                          TODO: this design is not final and this field is subject to change in the future.
  1648                                        type: string
  1649                                      kind:
  1650                                        description: |-
  1651                                          Kind of the referent.
  1652                                          More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
  1653                                        type: string
  1654                                      name:
  1655                                        description: |-
  1656                                          Name of the referent.
  1657                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
  1658                                        type: string
  1659                                      namespace:
  1660                                        description: |-
  1661                                          Namespace of the referent.
  1662                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
  1663                                        type: string
  1664                                      resourceVersion:
  1665                                        description: |-
  1666                                          Specific resourceVersion to which this reference is made, if any.
  1667                                          More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
  1668                                        type: string
  1669                                      uid:
  1670                                        description: |-
  1671                                          UID of the referent.
  1672                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
  1673                                        type: string
  1674                                    type: object
  1675                                    x-kubernetes-map-type: atomic
  1676                                required:
  1677                                - ref
  1678                                type: object
  1679                              infrastructure:
  1680                                description: |-
  1681                                  Infrastructure contains the infrastructure template reference to be used
  1682                                  for the creation of the MachinePool.
  1683                                properties:
  1684                                  ref:
  1685                                    description: |-
  1686                                      Ref is a required reference to a custom resource
  1687                                      offered by a provider.
  1688                                    properties:
  1689                                      apiVersion:
  1690                                        description: API version of the referent.
  1691                                        type: string
  1692                                      fieldPath:
  1693                                        description: |-
  1694                                          If referring to a piece of an object instead of an entire object, this string
  1695                                          should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
  1696                                          For example, if the object reference is to a container within a pod, this would take on a value like:
  1697                                          "spec.containers{name}" (where "name" refers to the name of the container that triggered
  1698                                          the event) or if no container name is specified "spec.containers[2]" (container with
  1699                                          index 2 in this pod). This syntax is chosen only to have some well-defined way of
  1700                                          referencing a part of an object.
  1701                                          TODO: this design is not final and this field is subject to change in the future.
  1702                                        type: string
  1703                                      kind:
  1704                                        description: |-
  1705                                          Kind of the referent.
  1706                                          More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
  1707                                        type: string
  1708                                      name:
  1709                                        description: |-
  1710                                          Name of the referent.
  1711                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
  1712                                        type: string
  1713                                      namespace:
  1714                                        description: |-
  1715                                          Namespace of the referent.
  1716                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
  1717                                        type: string
  1718                                      resourceVersion:
  1719                                        description: |-
  1720                                          Specific resourceVersion to which this reference is made, if any.
  1721                                          More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
  1722                                        type: string
  1723                                      uid:
  1724                                        description: |-
  1725                                          UID of the referent.
  1726                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
  1727                                        type: string
  1728                                    type: object
  1729                                    x-kubernetes-map-type: atomic
  1730                                required:
  1731                                - ref
  1732                                type: object
  1733                              metadata:
  1734                                description: |-
  1735                                  Metadata is the metadata applied to the MachinePool.
  1736                                  At runtime this metadata is merged with the corresponding metadata from the topology.
  1737                                properties:
  1738                                  annotations:
  1739                                    additionalProperties:
  1740                                      type: string
  1741                                    description: |-
  1742                                      Annotations is an unstructured key value map stored with a resource that may be
  1743                                      set by external tools to store and retrieve arbitrary metadata. They are not
  1744                                      queryable and should be preserved when modifying objects.
  1745                                      More info: http://kubernetes.io/docs/user-guide/annotations
  1746                                    type: object
  1747                                  labels:
  1748                                    additionalProperties:
  1749                                      type: string
  1750                                    description: |-
  1751                                      Map of string keys and values that can be used to organize and categorize
  1752                                      (scope and select) objects. May match selectors of replication controllers
  1753                                      and services.
  1754                                      More info: http://kubernetes.io/docs/user-guide/labels
  1755                                    type: object
  1756                                type: object
  1757                            required:
  1758                            - bootstrap
  1759                            - infrastructure
  1760                            type: object
  1761                        required:
  1762                        - class
  1763                        - template
  1764                        type: object
  1765                      type: array
  1766                  type: object
  1767              type: object
  1768            status:
  1769              description: ClusterClassStatus defines the observed state of the ClusterClass.
  1770              properties:
  1771                conditions:
  1772                  description: Conditions defines current observed state of the ClusterClass.
  1773                  items:
  1774                    description: Condition defines an observation of a Cluster API resource
  1775                      operational state.
  1776                    properties:
  1777                      lastTransitionTime:
  1778                        description: |-
  1779                          Last time the condition transitioned from one status to another.
  1780                          This should be when the underlying condition changed. If that is not known, then using the time when
  1781                          the API field changed is acceptable.
  1782                        format: date-time
  1783                        type: string
  1784                      message:
  1785                        description: |-
  1786                          A human readable message indicating details about the transition.
  1787                          This field may be empty.
  1788                        type: string
  1789                      reason:
  1790                        description: |-
  1791                          The reason for the condition's last transition in CamelCase.
  1792                          The specific API may choose whether or not this field is considered a guaranteed API.
  1793                          This field may not be empty.
  1794                        type: string
  1795                      severity:
  1796                        description: |-
  1797                          Severity provides an explicit classification of Reason code, so the users or machines can immediately
  1798                          understand the current situation and act accordingly.
  1799                          The Severity field MUST be set only when Status=False.
  1800                        type: string
  1801                      status:
  1802                        description: Status of the condition, one of True, False, Unknown.
  1803                        type: string
  1804                      type:
  1805                        description: |-
  1806                          Type of condition in CamelCase or in foo.example.com/CamelCase.
  1807                          Many .condition.type values are consistent across resources like Available, but because arbitrary conditions
  1808                          can be useful (see .node.status.conditions), the ability to deconflict is important.
  1809                        type: string
  1810                    required:
  1811                    - lastTransitionTime
  1812                    - status
  1813                    - type
  1814                    type: object
  1815                  type: array
  1816                observedGeneration:
  1817                  description: ObservedGeneration is the latest generation observed
  1818                    by the controller.
  1819                  format: int64
  1820                  type: integer
  1821                variables:
  1822                  description: Variables is a list of ClusterClassStatusVariable that
  1823                    are defined for the ClusterClass.
  1824                  items:
  1825                    description: ClusterClassStatusVariable defines a variable which
  1826                      appears in the status of a ClusterClass.
  1827                    properties:
  1828                      definitions:
  1829                        description: Definitions is a list of definitions for a variable.
  1830                        items:
  1831                          description: ClusterClassStatusVariableDefinition defines
  1832                            a variable which appears in the status of a ClusterClass.
  1833                          properties:
  1834                            from:
  1835                              description: |-
  1836                                From specifies the origin of the variable definition.
  1837                                This will be `inline` for variables defined in the ClusterClass or the name of a patch defined in the ClusterClass
  1838                                for variables discovered from a DiscoverVariables runtime extensions.
  1839                              type: string
  1840                            metadata:
  1841                              description: |-
  1842                                Metadata is the metadata of a variable.
  1843                                It can be used to add additional data for higher level tools to
  1844                                a ClusterClassVariable.
  1845                              properties:
  1846                                annotations:
  1847                                  additionalProperties:
  1848                                    type: string
  1849                                  description: |-
  1850                                    Annotations is an unstructured key value map that can be used to store and
  1851                                    retrieve arbitrary metadata.
  1852                                    They are not queryable.
  1853                                  type: object
  1854                                labels:
  1855                                  additionalProperties:
  1856                                    type: string
  1857                                  description: |-
  1858                                    Map of string keys and values that can be used to organize and categorize
  1859                                    (scope and select) variables.
  1860                                  type: object
  1861                              type: object
  1862                            required:
  1863                              description: |-
  1864                                Required specifies if the variable is required.
  1865                                Note: this applies to the variable as a whole and thus the
  1866                                top-level object defined in the schema. If nested fields are
  1867                                required, this will be specified inside the schema.
  1868                              type: boolean
  1869                            schema:
  1870                              description: Schema defines the schema of the variable.
  1871                              properties:
  1872                                openAPIV3Schema:
  1873                                  description: |-
  1874                                    OpenAPIV3Schema defines the schema of a variable via OpenAPI v3
  1875                                    schema. The schema is a subset of the schema used in
  1876                                    Kubernetes CRDs.
  1877                                  properties:
  1878                                    additionalProperties:
  1879                                      description: |-
  1880                                        AdditionalProperties specifies the schema of values in a map (keys are always strings).
  1881                                        NOTE: Can only be set if type is object.
  1882                                        NOTE: AdditionalProperties is mutually exclusive with Properties.
  1883                                        NOTE: This field uses PreserveUnknownFields and Schemaless,
  1884                                        because recursive validation is not possible.
  1885                                      x-kubernetes-preserve-unknown-fields: true
  1886                                    default:
  1887                                      description: |-
  1888                                        Default is the default value of the variable.
  1889                                        NOTE: Can be set for all types.
  1890                                      x-kubernetes-preserve-unknown-fields: true
  1891                                    description:
  1892                                      description: Description is a human-readable description
  1893                                        of this variable.
  1894                                      type: string
  1895                                    enum:
  1896                                      description: |-
  1897                                        Enum is the list of valid values of the variable.
  1898                                        NOTE: Can be set for all types.
  1899                                      items:
  1900                                        x-kubernetes-preserve-unknown-fields: true
  1901                                      type: array
  1902                                    example:
  1903                                      description: Example is an example for this variable.
  1904                                      x-kubernetes-preserve-unknown-fields: true
  1905                                    exclusiveMaximum:
  1906                                      description: |-
  1907                                        ExclusiveMaximum specifies if the Maximum is exclusive.
  1908                                        NOTE: Can only be set if type is integer or number.
  1909                                      type: boolean
  1910                                    exclusiveMinimum:
  1911                                      description: |-
  1912                                        ExclusiveMinimum specifies if the Minimum is exclusive.
  1913                                        NOTE: Can only be set if type is integer or number.
  1914                                      type: boolean
  1915                                    format:
  1916                                      description: |-
  1917                                        Format is an OpenAPI v3 format string. Unknown formats are ignored.
  1918                                        For a list of supported formats please see: (of the k8s.io/apiextensions-apiserver version we're currently using)
  1919                                        https://github.com/kubernetes/apiextensions-apiserver/blob/master/pkg/apiserver/validation/formats.go
  1920                                        NOTE: Can only be set if type is string.
  1921                                      type: string
  1922                                    items:
  1923                                      description: |-
  1924                                        Items specifies fields of an array.
  1925                                        NOTE: Can only be set if type is array.
  1926                                        NOTE: This field uses PreserveUnknownFields and Schemaless,
  1927                                        because recursive validation is not possible.
  1928                                      x-kubernetes-preserve-unknown-fields: true
  1929                                    maxItems:
  1930                                      description: |-
  1931                                        MaxItems is the max length of an array variable.
  1932                                        NOTE: Can only be set if type is array.
  1933                                      format: int64
  1934                                      type: integer
  1935                                    maxLength:
  1936                                      description: |-
  1937                                        MaxLength is the max length of a string variable.
  1938                                        NOTE: Can only be set if type is string.
  1939                                      format: int64
  1940                                      type: integer
  1941                                    maximum:
  1942                                      description: |-
  1943                                        Maximum is the maximum of an integer or number variable.
  1944                                        If ExclusiveMaximum is false, the variable is valid if it is lower than, or equal to, the value of Maximum.
  1945                                        If ExclusiveMaximum is true, the variable is valid if it is strictly lower than the value of Maximum.
  1946                                        NOTE: Can only be set if type is integer or number.
  1947                                      format: int64
  1948                                      type: integer
  1949                                    minItems:
  1950                                      description: |-
  1951                                        MinItems is the min length of an array variable.
  1952                                        NOTE: Can only be set if type is array.
  1953                                      format: int64
  1954                                      type: integer
  1955                                    minLength:
  1956                                      description: |-
  1957                                        MinLength is the min length of a string variable.
  1958                                        NOTE: Can only be set if type is string.
  1959                                      format: int64
  1960                                      type: integer
  1961                                    minimum:
  1962                                      description: |-
  1963                                        Minimum is the minimum of an integer or number variable.
  1964                                        If ExclusiveMinimum is false, the variable is valid if it is greater than, or equal to, the value of Minimum.
  1965                                        If ExclusiveMinimum is true, the variable is valid if it is strictly greater than the value of Minimum.
  1966                                        NOTE: Can only be set if type is integer or number.
  1967                                      format: int64
  1968                                      type: integer
  1969                                    pattern:
  1970                                      description: |-
  1971                                        Pattern is the regex which a string variable must match.
  1972                                        NOTE: Can only be set if type is string.
  1973                                      type: string
  1974                                    properties:
  1975                                      description: |-
  1976                                        Properties specifies fields of an object.
  1977                                        NOTE: Can only be set if type is object.
  1978                                        NOTE: Properties is mutually exclusive with AdditionalProperties.
  1979                                        NOTE: This field uses PreserveUnknownFields and Schemaless,
  1980                                        because recursive validation is not possible.
  1981                                      x-kubernetes-preserve-unknown-fields: true
  1982                                    required:
  1983                                      description: |-
  1984                                        Required specifies which fields of an object are required.
  1985                                        NOTE: Can only be set if type is object.
  1986                                      items:
  1987                                        type: string
  1988                                      type: array
  1989                                    type:
  1990                                      description: |-
  1991                                        Type is the type of the variable.
  1992                                        Valid values are: object, array, string, integer, number or boolean.
  1993                                      type: string
  1994                                    uniqueItems:
  1995                                      description: |-
  1996                                        UniqueItems specifies if items in an array must be unique.
  1997                                        NOTE: Can only be set if type is array.
  1998                                      type: boolean
  1999                                    x-kubernetes-preserve-unknown-fields:
  2000                                      description: |-
  2001                                        XPreserveUnknownFields allows setting fields in a variable object
  2002                                        which are not defined in the variable schema. This affects fields recursively,
  2003                                        except if nested properties or additionalProperties are specified in the schema.
  2004                                      type: boolean
  2005                                  required:
  2006                                  - type
  2007                                  type: object
  2008                              required:
  2009                              - openAPIV3Schema
  2010                              type: object
  2011                          required:
  2012                          - from
  2013                          - required
  2014                          - schema
  2015                          type: object
  2016                        type: array
  2017                      definitionsConflict:
  2018                        description: DefinitionsConflict specifies whether or not there
  2019                          are conflicting definitions for a single variable name.
  2020                        type: boolean
  2021                      name:
  2022                        description: Name is the name of the variable.
  2023                        type: string
  2024                    required:
  2025                    - definitions
  2026                    - name
  2027                    type: object
  2028                  type: array
  2029              type: object
  2030          type: object
  2031      served: true
  2032      storage: true
  2033      subresources:
  2034        status: {}