sigs.k8s.io/cluster-api@v1.7.1/docs/proposals/images/runtime-hooks/runtime-hooks-openapi.yaml (about)

     1  components:
     2    schemas:
     3      k8s.io.api.core.v1.ObjectReference:
     4        description: ObjectReference contains enough information to let you inspect
     5          or modify the referred object.
     6        properties:
     7          apiVersion:
     8            description: API version of the referent.
     9            type: string
    10          fieldPath:
    11            description: 'If referring to a piece of an object instead of an entire
    12              object, this string should contain a valid JSON/Go field access statement,
    13              such as desiredState.manifest.containers[2]. For example, if the object
    14              reference is to a container within a pod, this would take on a value like:
    15              "spec.containers{name}" (where "name" refers to the name of the container
    16              that triggered the event) or if no container name is specified "spec.containers[2]"
    17              (container with index 2 in this pod). This syntax is chosen only to have
    18              some well-defined way of referencing a part of an object.'
    19            type: string
    20          kind:
    21            description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
    22            type: string
    23          name:
    24            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
    25            type: string
    26          namespace:
    27            description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
    28            type: string
    29          resourceVersion:
    30            description: 'Specific resourceVersion to which this reference is made,
    31              if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
    32            type: string
    33          uid:
    34            description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
    35            type: string
    36        type: object
    37        x-kubernetes-map-type: atomic
    38      k8s.io.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON:
    39        description: 'JSON represents any valid JSON value. These types are supported:
    40          bool, int64, float64, string, []interface{}, map[string]interface{} and nil.'
    41      k8s.io.apimachinery.pkg.apis.meta.v1.FieldsV1:
    42        description: |-
    43          FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.
    44  
    45          Each key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:<name>', where <name> is the name of a field in a struct, or key in a map 'v:<value>', where <value> is the exact json formatted value of a list item 'i:<index>', where <index> is position of a item in a list 'k:<keys>', where <keys> is a map of  a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.
    46  
    47          The exact format is defined in sigs.k8s.io/structured-merge-diff
    48        type: object
    49      k8s.io.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry:
    50        description: ManagedFieldsEntry is a workflow-id, a FieldSet and the group version
    51          of the resource that the fieldset applies to.
    52        properties:
    53          apiVersion:
    54            description: APIVersion defines the version of this resource that this field
    55              set applies to. The format is "group/version" just like the top-level
    56              APIVersion field. It is necessary to track the version of a field set
    57              because it cannot be automatically converted.
    58            type: string
    59          fieldsType:
    60            description: 'FieldsType is the discriminator for the different fields format
    61              and version. There is currently only one possible value: "FieldsV1"'
    62            type: string
    63          fieldsV1:
    64            $ref: '#/components/schemas/k8s.io.apimachinery.pkg.apis.meta.v1.FieldsV1'
    65            description: FieldsV1 holds the first JSON version format as described in
    66              the "FieldsV1" type.
    67          manager:
    68            description: Manager is an identifier of the workflow managing these fields.
    69            type: string
    70          operation:
    71            description: Operation is the type of operation which lead to this ManagedFieldsEntry
    72              being created. The only valid values for this field are 'Apply' and 'Update'.
    73            type: string
    74          subresource:
    75            description: Subresource is the name of the subresource used to update that
    76              object, or empty string if the object was updated through the main resource.
    77              The value of this field is used to distinguish between managers, even
    78              if they share the same name. For example, a status update will be distinct
    79              from a regular update using the same manager name. Note that the APIVersion
    80              field is not related to the Subresource field and it always corresponds
    81              to the version of the main resource.
    82            type: string
    83          time:
    84            $ref: '#/components/schemas/k8s.io.apimachinery.pkg.apis.meta.v1.Time'
    85            description: Time is timestamp of when these fields were set. It should
    86              always be empty if Operation is 'Apply'
    87        type: object
    88      k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta:
    89        description: ObjectMeta is metadata that all persisted resources must have,
    90          which includes all objects users must create.
    91        properties:
    92          annotations:
    93            additionalProperties:
    94              default: ""
    95              type: string
    96            description: 'Annotations is an unstructured key value map stored with a
    97              resource that may be set by external tools to store and retrieve arbitrary
    98              metadata. They are not queryable and should be preserved when modifying
    99              objects. More info: http://kubernetes.io/docs/user-guide/annotations'
   100            type: object
   101          clusterName:
   102            description: The name of the cluster which the object belongs to. This is
   103              used to distinguish resources with same name and namespace in different
   104              clusters. This field is not set anywhere right now and apiserver is going
   105              to ignore it if set in create or update request.
   106            type: string
   107          creationTimestamp:
   108            $ref: '#/components/schemas/k8s.io.apimachinery.pkg.apis.meta.v1.Time'
   109            default: {}
   110            description: |-
   111              CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.
   112  
   113              Populated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
   114          deletionGracePeriodSeconds:
   115            description: Number of seconds allowed for this object to gracefully terminate
   116              before it will be removed from the system. Only set when deletionTimestamp
   117              is also set. May only be shortened. Read-only.
   118            format: int64
   119            type: integer
   120          deletionTimestamp:
   121            $ref: '#/components/schemas/k8s.io.apimachinery.pkg.apis.meta.v1.Time'
   122            description: |-
   123              DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.
   124  
   125              Populated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
   126          finalizers:
   127            description: Must be empty before the object is deleted from the registry.
   128              Each entry is an identifier for the responsible component that will remove
   129              the entry from the list. If the deletionTimestamp of the object is non-nil,
   130              entries in this list can only be removed. Finalizers may be processed
   131              and removed in any order.  Order is NOT enforced because it introduces
   132              significant risk of stuck finalizers. finalizers is a shared field, any
   133              actor with permission can reorder it. If the finalizer list is processed
   134              in order, then this can lead to a situation in which the component responsible
   135              for the first finalizer in the list is waiting for a signal (field value,
   136              external system, or other) produced by a component responsible for a finalizer
   137              later in the list, resulting in a deadlock. Without enforced ordering
   138              finalizers are free to order amongst themselves and are not vulnerable
   139              to ordering changes in the list.
   140            items:
   141              default: ""
   142              type: string
   143            type: array
   144            x-kubernetes-patch-strategy: merge
   145          generateName:
   146            description: |-
   147              GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.
   148  
   149              If this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).
   150  
   151              Applied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency
   152            type: string
   153          generation:
   154            description: A sequence number representing a specific generation of the
   155              desired state. Populated by the system. Read-only.
   156            format: int64
   157            type: integer
   158          labels:
   159            additionalProperties:
   160              default: ""
   161              type: string
   162            description: 'Map of string keys and values that can be used to organize
   163              and categorize (scope and select) objects. May match selectors of replication
   164              controllers and services. More info: http://kubernetes.io/docs/user-guide/labels'
   165            type: object
   166          managedFields:
   167            description: ManagedFields maps workflow-id and version to the set of fields
   168              that are managed by that workflow. This is mostly for internal housekeeping,
   169              and users typically shouldn't need to set or understand this field. A
   170              workflow can be the user's name, a controller's name, or the name of a
   171              specific apply path like "ci-cd". The set of fields is always in the version
   172              that the workflow used when modifying the object.
   173            items:
   174              $ref: '#/components/schemas/k8s.io.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry'
   175              default: {}
   176            type: array
   177          name:
   178            description: 'Name must be unique within a namespace. Is required when creating
   179              resources, although some resources may allow a client to request the generation
   180              of an appropriate name automatically. Name is primarily intended for creation
   181              idempotence and configuration definition. Cannot be updated. More info:
   182              http://kubernetes.io/docs/user-guide/identifiers#names'
   183            type: string
   184          namespace:
   185            description: |-
   186              Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.
   187  
   188              Must be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces
   189            type: string
   190          ownerReferences:
   191            description: List of objects depended by this object. If ALL objects in
   192              the list have been deleted, this object will be garbage collected. If
   193              this object is managed by a controller, then an entry in this list will
   194              point to this controller, with the controller field set to true. There
   195              cannot be more than one managing controller.
   196            items:
   197              $ref: '#/components/schemas/k8s.io.apimachinery.pkg.apis.meta.v1.OwnerReference'
   198              default: {}
   199            type: array
   200            x-kubernetes-patch-merge-key: uid
   201            x-kubernetes-patch-strategy: merge
   202          resourceVersion:
   203            description: |-
   204              An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.
   205  
   206              Populated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
   207            type: string
   208          selfLink:
   209            description: |-
   210              SelfLink is a URL representing this object. Populated by the system. Read-only.
   211  
   212              DEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.
   213            type: string
   214          uid:
   215            description: |-
   216              UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.
   217  
   218              Populated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids
   219            type: string
   220        type: object
   221      k8s.io.apimachinery.pkg.apis.meta.v1.OwnerReference:
   222        description: OwnerReference contains enough information to let you identify
   223          an owning object. An owning object must be in the same namespace as the dependent,
   224          or be cluster-scoped, so there is no namespace field.
   225        properties:
   226          apiVersion:
   227            default: ""
   228            description: API version of the referent.
   229            type: string
   230          blockOwnerDeletion:
   231            description: If true, AND if the owner has the "foregroundDeletion" finalizer,
   232              then the owner cannot be deleted from the key-value store until this reference
   233              is removed. Defaults to false. To set this field, a user needs "delete"
   234              permission of the owner, otherwise 422 (Unprocessable Entity) will be
   235              returned.
   236            type: boolean
   237          controller:
   238            description: If true, this reference points to the managing controller.
   239            type: boolean
   240          kind:
   241            default: ""
   242            description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
   243            type: string
   244          name:
   245            default: ""
   246            description: 'Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names'
   247            type: string
   248          uid:
   249            default: ""
   250            description: 'UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids'
   251            type: string
   252        required:
   253        - apiVersion
   254        - kind
   255        - name
   256        - uid
   257        type: object
   258        x-kubernetes-map-type: atomic
   259      k8s.io.apimachinery.pkg.apis.meta.v1.Time:
   260        description: Time is a wrapper around time.Time which supports correct marshaling
   261          to YAML and JSON.  Wrappers are provided for many of the factory methods that
   262          the time package offers.
   263        format: date-time
   264        type: string
   265      sigs.k8s.io.cluster-api.api.v1beta1.APIEndpoint:
   266        description: APIEndpoint represents a reachable Kubernetes API endpoint.
   267        properties:
   268          host:
   269            default: ""
   270            description: The hostname on which the API server is serving.
   271            type: string
   272          port:
   273            default: 0
   274            description: The port on which the API server is serving.
   275            format: int32
   276            type: integer
   277        required:
   278        - host
   279        - port
   280        type: object
   281      sigs.k8s.io.cluster-api.api.v1beta1.Cluster:
   282        description: Cluster is the Schema for the clusters API.
   283        properties:
   284          apiVersion:
   285            description: 'APIVersion defines the versioned schema of this representation
   286              of an object. Servers should convert recognized schemas to the latest
   287              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
   288            type: string
   289          kind:
   290            description: 'Kind is a string value representing the REST resource this
   291              object represents. Servers may infer this from the endpoint the client
   292              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
   293            type: string
   294          metadata:
   295            $ref: '#/components/schemas/k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta'
   296            default: {}
   297          spec:
   298            $ref: '#/components/schemas/sigs.k8s.io.cluster-api.api.v1beta1.ClusterSpec'
   299            default: {}
   300          status:
   301            $ref: '#/components/schemas/sigs.k8s.io.cluster-api.api.v1beta1.ClusterStatus'
   302            default: {}
   303        type: object
   304      sigs.k8s.io.cluster-api.api.v1beta1.ClusterNetwork:
   305        description: ClusterNetwork specifies the different networking parameters for
   306          a cluster.
   307        properties:
   308          apiServerPort:
   309            description: APIServerPort specifies the port the API Server should bind
   310              to. Defaults to 6443.
   311            format: int32
   312            type: integer
   313          pods:
   314            $ref: '#/components/schemas/sigs.k8s.io.cluster-api.api.v1beta1.NetworkRanges'
   315            description: The network ranges from which Pod networks are allocated.
   316          serviceDomain:
   317            description: Domain name for services.
   318            type: string
   319          services:
   320            $ref: '#/components/schemas/sigs.k8s.io.cluster-api.api.v1beta1.NetworkRanges'
   321            description: The network ranges from which service VIPs are allocated.
   322        type: object
   323      sigs.k8s.io.cluster-api.api.v1beta1.ClusterSpec:
   324        description: ClusterSpec defines the desired state of Cluster.
   325        properties:
   326          clusterNetwork:
   327            $ref: '#/components/schemas/sigs.k8s.io.cluster-api.api.v1beta1.ClusterNetwork'
   328            description: Cluster network configuration.
   329          controlPlaneEndpoint:
   330            $ref: '#/components/schemas/sigs.k8s.io.cluster-api.api.v1beta1.APIEndpoint'
   331            default: {}
   332            description: ControlPlaneEndpoint represents the endpoint used to communicate
   333              with the control plane.
   334          controlPlaneRef:
   335            $ref: '#/components/schemas/k8s.io.api.core.v1.ObjectReference'
   336            description: ControlPlaneRef is an optional reference to a provider-specific
   337              resource that holds the details for provisioning the Control Plane for
   338              a Cluster.
   339          infrastructureRef:
   340            $ref: '#/components/schemas/k8s.io.api.core.v1.ObjectReference'
   341            description: InfrastructureRef is a reference to a provider-specific resource
   342              that holds the details for provisioning infrastructure for a cluster in
   343              said provider.
   344          paused:
   345            description: Paused can be used to prevent controllers from processing the
   346              Cluster and all its associated objects.
   347            type: boolean
   348          topology:
   349            $ref: '#/components/schemas/sigs.k8s.io.cluster-api.api.v1beta1.Topology'
   350            description: 'This encapsulates the topology for the cluster. NOTE: It is
   351              required to enable the ClusterTopology feature gate flag to activate managed
   352              topologies support; this feature is highly experimental, and parts of
   353              it might still be not implemented.'
   354        type: object
   355      sigs.k8s.io.cluster-api.api.v1beta1.ClusterStatus:
   356        description: ClusterStatus defines the observed state of Cluster.
   357        properties:
   358          conditions:
   359            description: Conditions defines current service state of the cluster.
   360            items:
   361              $ref: '#/components/schemas/sigs.k8s.io.cluster-api.api.v1beta1.Condition'
   362              default: {}
   363            type: array
   364          controlPlaneReady:
   365            default: false
   366            description: ControlPlaneReady defines if the control plane is ready.
   367            type: boolean
   368          failureDomains:
   369            additionalProperties:
   370              $ref: '#/components/schemas/sigs.k8s.io.cluster-api.api.v1beta1.FailureDomainSpec'
   371              default: {}
   372            description: FailureDomains is a slice of failure domain objects synced
   373              from the infrastructure provider.
   374            type: object
   375          failureMessage:
   376            description: FailureMessage indicates that there is a fatal problem reconciling
   377              the state, and will be set to a descriptive error message.
   378            type: string
   379          failureReason:
   380            description: FailureReason indicates that there is a fatal problem reconciling
   381              the state, and will be set to a token value suitable for programmatic
   382              interpretation.
   383            type: string
   384          infrastructureReady:
   385            default: false
   386            description: InfrastructureReady is the state of the infrastructure provider.
   387            type: boolean
   388          observedGeneration:
   389            description: ObservedGeneration is the latest generation observed by the
   390              controller.
   391            format: int64
   392            type: integer
   393          phase:
   394            description: Phase represents the current phase of cluster actuation. E.g.
   395              Pending, Running, Terminating, Failed etc.
   396            type: string
   397        type: object
   398      sigs.k8s.io.cluster-api.api.v1beta1.ClusterVariable:
   399        description: ClusterVariable can be used to customize the Cluster through patches.
   400          It must comply to the corresponding ClusterClassVariable defined in the ClusterClass.
   401        properties:
   402          name:
   403            default: ""
   404            description: Name of the variable.
   405            type: string
   406          value:
   407            $ref: '#/components/schemas/k8s.io.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON'
   408            default: {}
   409            description: 'Value of the variable. Note: the value will be validated against
   410              the schema of the corresponding ClusterClassVariable from the ClusterClass.
   411              Note: We have to use apiextensionsv1.JSON instead of a custom JSON type,
   412              because controller-tools has a hard-coded schema for apiextensionsv1.JSON
   413              which cannot be produced by another type via controller-tools, i.e. it
   414              is not possible to have no type field. Ref: https://github.com/kubernetes-sigs/controller-tools/blob/d0e03a142d0ecdd5491593e941ee1d6b5d91dba6/pkg/crd/known_types.go#L106-L111'
   415        required:
   416        - name
   417        - value
   418        type: object
   419      sigs.k8s.io.cluster-api.api.v1beta1.Condition:
   420        description: Condition defines an observation of a Cluster API resource operational
   421          state.
   422        properties:
   423          lastTransitionTime:
   424            $ref: '#/components/schemas/k8s.io.apimachinery.pkg.apis.meta.v1.Time'
   425            default: {}
   426            description: Last time the condition transitioned from one status to another.
   427              This should be when the underlying condition changed. If that is not known,
   428              then using the time when the API field changed is acceptable.
   429          message:
   430            description: A human readable message indicating details about the transition.
   431              This field may be empty.
   432            type: string
   433          reason:
   434            description: The reason for the condition's last transition in CamelCase.
   435              The specific API may choose whether or not this field is considered a
   436              guaranteed API. This field may not be empty.
   437            type: string
   438          severity:
   439            description: Severity provides an explicit classification of Reason code,
   440              so the users or machines can immediately understand the current situation
   441              and act accordingly. The Severity field MUST be set only when Status=False.
   442            type: string
   443          status:
   444            default: ""
   445            description: Status of the condition, one of True, False, Unknown.
   446            type: string
   447          type:
   448            default: ""
   449            description: Type of condition in CamelCase or in foo.example.com/CamelCase.
   450              Many .condition.type values are consistent across resources like Available,
   451              but because arbitrary conditions can be useful (see .node.status.conditions),
   452              the ability to deconflict is important.
   453            type: string
   454        required:
   455        - type
   456        - status
   457        - lastTransitionTime
   458        type: object
   459      sigs.k8s.io.cluster-api.api.v1beta1.ControlPlaneTopology:
   460        description: ControlPlaneTopology specifies the parameters for the control plane
   461          nodes in the cluster.
   462        properties:
   463          metadata:
   464            $ref: '#/components/schemas/sigs.k8s.io.cluster-api.api.v1beta1.ObjectMeta'
   465            default: {}
   466            description: |-
   467              Metadata is the metadata applied to the machines of the ControlPlane. At runtime this metadata is merged with the corresponding metadata from the ClusterClass.
   468  
   469              This field is supported if and only if the control plane provider template referenced in the ClusterClass is Machine based.
   470          replicas:
   471            description: Replicas is the number of control plane nodes. If the value
   472              is nil, the ControlPlane object is created without the number of Replicas
   473              and it's assumed that the control plane controller does not implement
   474              support for this field. When specified against a control plane provider
   475              that lacks support for this field, this value will be ignored.
   476            format: int32
   477            type: integer
   478        type: object
   479      sigs.k8s.io.cluster-api.api.v1beta1.FailureDomainSpec:
   480        description: FailureDomainSpec is the Schema for Cluster API failure domains.
   481          It allows controllers to understand how many failure domains a cluster can
   482          optionally span across.
   483        properties:
   484          attributes:
   485            additionalProperties:
   486              default: ""
   487              type: string
   488            description: Attributes is a free form map of attributes an infrastructure
   489              provider might use or require.
   490            type: object
   491          controlPlane:
   492            description: ControlPlane determines if this failure domain is suitable
   493              for use by control plane machines.
   494            type: boolean
   495        type: object
   496      sigs.k8s.io.cluster-api.api.v1beta1.MachineDeploymentTopology:
   497        description: MachineDeploymentTopology specifies the different parameters for
   498          a set of worker nodes in the topology. This set of nodes is managed by a MachineDeployment
   499          object whose lifecycle is managed by the Cluster controller.
   500        properties:
   501          class:
   502            default: ""
   503            description: Class is the name of the MachineDeploymentClass used to create
   504              the set of worker nodes. This should match one of the deployment classes
   505              defined in the ClusterClass object mentioned in the `Cluster.Spec.Class`
   506              field.
   507            type: string
   508          failureDomain:
   509            description: FailureDomain is the failure domain the machines will be created
   510              in. Must match a key in the FailureDomains map stored on the cluster object.
   511            type: string
   512          metadata:
   513            $ref: '#/components/schemas/sigs.k8s.io.cluster-api.api.v1beta1.ObjectMeta'
   514            default: {}
   515            description: Metadata is the metadata applied to the machines of the MachineDeployment.
   516              At runtime this metadata is merged with the corresponding metadata from
   517              the ClusterClass.
   518          name:
   519            default: ""
   520            description: Name is the unique identifier for this MachineDeploymentTopology.
   521              The value is used with other unique identifiers to create a MachineDeployment's
   522              Name (e.g. cluster's name, etc). In case the name is greater than the
   523              allowed maximum length, the values are hashed together.
   524            type: string
   525          replicas:
   526            description: Replicas is the number of worker nodes belonging to this set.
   527              If the value is nil, the MachineDeployment is created without the number
   528              of Replicas (defaulting to 1) and it's assumed that an external entity
   529              (like cluster autoscaler) is responsible for the management of this value.
   530            format: int32
   531            type: integer
   532          variables:
   533            $ref: '#/components/schemas/sigs.k8s.io.cluster-api.api.v1beta1.MachineDeploymentVariables'
   534            description: Variables can be used to customize the MachineDeployment through
   535              patches.
   536        required:
   537        - class
   538        - name
   539        type: object
   540      sigs.k8s.io.cluster-api.api.v1beta1.MachineDeploymentVariables:
   541        description: MachineDeploymentVariables can be used to provide variables for
   542          a specific MachineDeployment.
   543        properties:
   544          overrides:
   545            description: Overrides can be used to override Cluster level variables.
   546            items:
   547              $ref: '#/components/schemas/sigs.k8s.io.cluster-api.api.v1beta1.ClusterVariable'
   548              default: {}
   549            type: array
   550        type: object
   551      sigs.k8s.io.cluster-api.api.v1beta1.NetworkRanges:
   552        description: NetworkRanges represents ranges of network addresses.
   553        properties:
   554          cidrBlocks:
   555            items:
   556              default: ""
   557              type: string
   558            type: array
   559        required:
   560        - cidrBlocks
   561        type: object
   562      sigs.k8s.io.cluster-api.api.v1beta1.ObjectMeta:
   563        description: |-
   564          ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create. This is a copy of customizable fields from metav1.ObjectMeta.
   565  
   566          ObjectMeta is embedded in `Machine.Spec`, `MachineDeployment.Template` and `MachineSet.Template`, which are not top-level Kubernetes objects. Given that metav1.ObjectMeta has lots of special cases and read-only fields which end up in the generated CRD validation, having it as a subset simplifies the API and some issues that can impact user experience.
   567  
   568          During the [upgrade to controller-tools@v2](https://github.com/kubernetes-sigs/cluster-api/pull/1054) for v1alpha2, we noticed a failure would occur running Cluster API test suite against the new CRDs, specifically `spec.metadata.creationTimestamp in body must be of type string: "null"`. The investigation showed that `controller-tools@v2` behaves differently than its previous version when handling types from [metav1](k8s.io/apimachinery/pkg/apis/meta/v1) package.
   569  
   570          In more details, we found that embedded (non-top level) types that embedded `metav1.ObjectMeta` had validation properties, including for `creationTimestamp` (metav1.Time). The `metav1.Time` type specifies a custom json marshaller that, when IsZero() is true, returns `null` which breaks validation because the field isn't marked as nullable.
   571  
   572          In future versions, controller-tools@v2 might allow overriding the type and validation for embedded types. When that happens, this hack should be revisited.
   573        properties:
   574          annotations:
   575            additionalProperties:
   576              default: ""
   577              type: string
   578            description: 'Annotations is an unstructured key value map stored with a
   579              resource that may be set by external tools to store and retrieve arbitrary
   580              metadata. They are not queryable and should be preserved when modifying
   581              objects. More info: http://kubernetes.io/docs/user-guide/annotations'
   582            type: object
   583          labels:
   584            additionalProperties:
   585              default: ""
   586              type: string
   587            description: 'Map of string keys and values that can be used to organize
   588              and categorize (scope and select) objects. May match selectors of replication
   589              controllers and services. More info: http://kubernetes.io/docs/user-guide/labels'
   590            type: object
   591        type: object
   592      sigs.k8s.io.cluster-api.api.v1beta1.Topology:
   593        description: Topology encapsulates the information of the managed resources.
   594        properties:
   595          class:
   596            default: ""
   597            description: The name of the ClusterClass object to create the topology.
   598            type: string
   599          controlPlane:
   600            $ref: '#/components/schemas/sigs.k8s.io.cluster-api.api.v1beta1.ControlPlaneTopology'
   601            default: {}
   602            description: ControlPlane describes the cluster control plane.
   603          rolloutAfter:
   604            $ref: '#/components/schemas/k8s.io.apimachinery.pkg.apis.meta.v1.Time'
   605            description: RolloutAfter performs a rollout of the entire cluster one component
   606              at a time, control plane first and then machine deployments.
   607          variables:
   608            description: Variables can be used to customize the Cluster through patches.
   609              They must comply to the corresponding VariableClasses defined in the ClusterClass.
   610            items:
   611              $ref: '#/components/schemas/sigs.k8s.io.cluster-api.api.v1beta1.ClusterVariable'
   612              default: {}
   613            type: array
   614          version:
   615            default: ""
   616            description: The Kubernetes version of the cluster.
   617            type: string
   618          workers:
   619            $ref: '#/components/schemas/sigs.k8s.io.cluster-api.api.v1beta1.WorkersTopology'
   620            description: Workers encapsulates the different constructs that form the
   621              worker nodes for the cluster.
   622        required:
   623        - class
   624        - version
   625        type: object
   626      sigs.k8s.io.cluster-api.api.v1beta1.WorkersTopology:
   627        description: WorkersTopology represents the different sets of worker nodes in
   628          the cluster.
   629        properties:
   630          machineDeployments:
   631            description: MachineDeployments is a list of machine deployments in the
   632              cluster.
   633            items:
   634              $ref: '#/components/schemas/sigs.k8s.io.cluster-api.api.v1beta1.MachineDeploymentTopology'
   635              default: {}
   636            type: array
   637        type: object
   638      sigs.k8s.io.cluster-api.exp.runtime.hooks.api.v1alpha1.AfterClusterUpgradeRequest:
   639        description: AfterClusterUpgradeRequest is the request of the hook.
   640        properties:
   641          apiVersion:
   642            description: 'APIVersion defines the versioned schema of this representation
   643              of an object. Servers should convert recognized schemas to the latest
   644              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
   645            type: string
   646          cluster:
   647            $ref: '#/components/schemas/sigs.k8s.io.cluster-api.api.v1beta1.Cluster'
   648            default: {}
   649            description: The cluster object the lifecycle hook corresponds to.
   650          kind:
   651            description: 'Kind is a string value representing the REST resource this
   652              object represents. Servers may infer this from the endpoint the client
   653              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
   654            type: string
   655          kubernetesVersion:
   656            default: ""
   657            description: The version after upgrade.
   658            type: string
   659        required:
   660        - cluster
   661        - kubernetesVersion
   662        type: object
   663      sigs.k8s.io.cluster-api.exp.runtime.hooks.api.v1alpha1.AfterClusterUpgradeResponse:
   664        description: AfterClusterUpgradeResponse is the response of AfterClusterUpgrade
   665          hook.
   666        properties:
   667          apiVersion:
   668            description: 'APIVersion defines the versioned schema of this representation
   669              of an object. Servers should convert recognized schemas to the latest
   670              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
   671            type: string
   672          kind:
   673            description: 'Kind is a string value representing the REST resource this
   674              object represents. Servers may infer this from the endpoint the client
   675              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
   676            type: string
   677          message:
   678            default: ""
   679            description: A human-readable description of the status of the call.
   680            type: string
   681          status:
   682            default: ""
   683            description: |-
   684              Status of the call. One of "Success" or "Failure".
   685  
   686              Possible enum values:
   687               - `"Failure"`
   688               - `"Success"`
   689            enum:
   690            - Failure
   691            - Success
   692            type: string
   693        required:
   694        - status
   695        - message
   696        type: object
   697      sigs.k8s.io.cluster-api.exp.runtime.hooks.api.v1alpha1.AfterControlPlaneInitializedRequest:
   698        description: AfterControlPlaneInitializedRequest is the request of the hook.
   699        properties:
   700          apiVersion:
   701            description: 'APIVersion defines the versioned schema of this representation
   702              of an object. Servers should convert recognized schemas to the latest
   703              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
   704            type: string
   705          cluster:
   706            $ref: '#/components/schemas/sigs.k8s.io.cluster-api.api.v1beta1.Cluster'
   707            default: {}
   708            description: The cluster object the lifecycle hook corresponds to.
   709          kind:
   710            description: 'Kind is a string value representing the REST resource this
   711              object represents. Servers may infer this from the endpoint the client
   712              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
   713            type: string
   714        required:
   715        - cluster
   716        type: object
   717      sigs.k8s.io.cluster-api.exp.runtime.hooks.api.v1alpha1.AfterControlPlaneInitializedResponse:
   718        description: AfterControlPlaneInitializedResponse is the response of AfterControlPlaneInitialized
   719          hook.
   720        properties:
   721          apiVersion:
   722            description: 'APIVersion defines the versioned schema of this representation
   723              of an object. Servers should convert recognized schemas to the latest
   724              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
   725            type: string
   726          kind:
   727            description: 'Kind is a string value representing the REST resource this
   728              object represents. Servers may infer this from the endpoint the client
   729              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
   730            type: string
   731          message:
   732            default: ""
   733            description: A human-readable description of the status of the call.
   734            type: string
   735          status:
   736            default: ""
   737            description: |-
   738              Status of the call. One of "Success" or "Failure".
   739  
   740              Possible enum values:
   741               - `"Failure"`
   742               - `"Success"`
   743            enum:
   744            - Failure
   745            - Success
   746            type: string
   747        required:
   748        - status
   749        - message
   750        type: object
   751      sigs.k8s.io.cluster-api.exp.runtime.hooks.api.v1alpha1.AfterControlPlaneUpgradeRequest:
   752        description: AfterControlPlaneUpgradeRequest is the request of the hook.
   753        properties:
   754          apiVersion:
   755            description: 'APIVersion defines the versioned schema of this representation
   756              of an object. Servers should convert recognized schemas to the latest
   757              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
   758            type: string
   759          cluster:
   760            $ref: '#/components/schemas/sigs.k8s.io.cluster-api.api.v1beta1.Cluster'
   761            default: {}
   762            description: The cluster object the lifecycle hook corresponds to.
   763          kind:
   764            description: 'Kind is a string value representing the REST resource this
   765              object represents. Servers may infer this from the endpoint the client
   766              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
   767            type: string
   768          kubernetesVersion:
   769            default: ""
   770            description: The version after upgrade.
   771            type: string
   772        required:
   773        - cluster
   774        - kubernetesVersion
   775        type: object
   776      sigs.k8s.io.cluster-api.exp.runtime.hooks.api.v1alpha1.AfterControlPlaneUpgradeResponse:
   777        description: AfterControlPlaneUpgradeResponse is the response of AfterControlPlaneUpgrade
   778          hook.
   779        properties:
   780          apiVersion:
   781            description: 'APIVersion defines the versioned schema of this representation
   782              of an object. Servers should convert recognized schemas to the latest
   783              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
   784            type: string
   785          kind:
   786            description: 'Kind is a string value representing the REST resource this
   787              object represents. Servers may infer this from the endpoint the client
   788              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
   789            type: string
   790          message:
   791            default: ""
   792            description: A human-readable description of the status of the call.
   793            type: string
   794          retryAfterSeconds:
   795            default: 0
   796            description: RetryAfterSeconds when set to a non-zero signifies that the
   797              hook needs to be retried at a future time.
   798            format: int32
   799            type: integer
   800          status:
   801            default: ""
   802            description: |-
   803              Status of the call. One of "Success" or "Failure".
   804  
   805              Possible enum values:
   806               - `"Failure"`
   807               - `"Success"`
   808            enum:
   809            - Failure
   810            - Success
   811            type: string
   812        required:
   813        - status
   814        - retryAfterSeconds
   815        - message
   816        type: object
   817      sigs.k8s.io.cluster-api.exp.runtime.hooks.api.v1alpha1.BeforeClusterCreateRequest:
   818        description: BeforeClusterCreateRequest is the request of the hook.
   819        properties:
   820          apiVersion:
   821            description: 'APIVersion defines the versioned schema of this representation
   822              of an object. Servers should convert recognized schemas to the latest
   823              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
   824            type: string
   825          cluster:
   826            $ref: '#/components/schemas/sigs.k8s.io.cluster-api.api.v1beta1.Cluster'
   827            default: {}
   828            description: The cluster object the lifecycle hook corresponds to.
   829          kind:
   830            description: 'Kind is a string value representing the REST resource this
   831              object represents. Servers may infer this from the endpoint the client
   832              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
   833            type: string
   834        required:
   835        - cluster
   836        type: object
   837      sigs.k8s.io.cluster-api.exp.runtime.hooks.api.v1alpha1.BeforeClusterCreateResponse:
   838        description: BeforeClusterCreateResponse is the response of BeforeClusterCreate
   839          hook.
   840        properties:
   841          apiVersion:
   842            description: 'APIVersion defines the versioned schema of this representation
   843              of an object. Servers should convert recognized schemas to the latest
   844              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
   845            type: string
   846          kind:
   847            description: 'Kind is a string value representing the REST resource this
   848              object represents. Servers may infer this from the endpoint the client
   849              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
   850            type: string
   851          message:
   852            default: ""
   853            description: A human-readable description of the status of the call.
   854            type: string
   855          retryAfterSeconds:
   856            default: 0
   857            description: RetryAfterSeconds when set to a non-zero signifies that the
   858              hook needs to be retried at a future time.
   859            format: int32
   860            type: integer
   861          status:
   862            default: ""
   863            description: |-
   864              Status of the call. One of "Success" or "Failure".
   865  
   866              Possible enum values:
   867               - `"Failure"`
   868               - `"Success"`
   869            enum:
   870            - Failure
   871            - Success
   872            type: string
   873        required:
   874        - status
   875        - retryAfterSeconds
   876        - message
   877        type: object
   878      sigs.k8s.io.cluster-api.exp.runtime.hooks.api.v1alpha1.BeforeClusterDeleteRequest:
   879        description: BeforeClusterDeleteRequest is the request of the hook.
   880        properties:
   881          apiVersion:
   882            description: 'APIVersion defines the versioned schema of this representation
   883              of an object. Servers should convert recognized schemas to the latest
   884              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
   885            type: string
   886          cluster:
   887            $ref: '#/components/schemas/sigs.k8s.io.cluster-api.api.v1beta1.Cluster'
   888            default: {}
   889            description: The cluster object the lifecycle hook corresponds to.
   890          kind:
   891            description: 'Kind is a string value representing the REST resource this
   892              object represents. Servers may infer this from the endpoint the client
   893              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
   894            type: string
   895        required:
   896        - cluster
   897        type: object
   898      sigs.k8s.io.cluster-api.exp.runtime.hooks.api.v1alpha1.BeforeClusterDeleteResponse:
   899        description: BeforeClusterDeleteResponse is the response of BeforeClusterDelete
   900          hook.
   901        properties:
   902          apiVersion:
   903            description: 'APIVersion defines the versioned schema of this representation
   904              of an object. Servers should convert recognized schemas to the latest
   905              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
   906            type: string
   907          kind:
   908            description: 'Kind is a string value representing the REST resource this
   909              object represents. Servers may infer this from the endpoint the client
   910              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
   911            type: string
   912          message:
   913            default: ""
   914            description: A human-readable description of the status of the call.
   915            type: string
   916          retryAfterSeconds:
   917            default: 0
   918            description: RetryAfterSeconds when set to a non-zero signifies that the
   919              hook needs to be retried at a future time.
   920            format: int32
   921            type: integer
   922          status:
   923            default: ""
   924            description: |-
   925              Status of the call. One of "Success" or "Failure".
   926  
   927              Possible enum values:
   928               - `"Failure"`
   929               - `"Success"`
   930            enum:
   931            - Failure
   932            - Success
   933            type: string
   934        required:
   935        - status
   936        - retryAfterSeconds
   937        - message
   938        type: object
   939      sigs.k8s.io.cluster-api.exp.runtime.hooks.api.v1alpha1.BeforeClusterUpgradeRequest:
   940        description: BeforeClusterUpgradeRequest is the request of the hook.
   941        properties:
   942          apiVersion:
   943            description: 'APIVersion defines the versioned schema of this representation
   944              of an object. Servers should convert recognized schemas to the latest
   945              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
   946            type: string
   947          cluster:
   948            $ref: '#/components/schemas/sigs.k8s.io.cluster-api.api.v1beta1.Cluster'
   949            default: {}
   950            description: The cluster object the lifecycle hook corresponds to.
   951          fromKubernetesVersion:
   952            default: ""
   953            description: The current version of the cluster.
   954            type: string
   955          kind:
   956            description: 'Kind is a string value representing the REST resource this
   957              object represents. Servers may infer this from the endpoint the client
   958              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
   959            type: string
   960          toKubernetesVersion:
   961            default: ""
   962            description: The target version of upgrade.
   963            type: string
   964        required:
   965        - cluster
   966        - fromKubernetesVersion
   967        - toKubernetesVersion
   968        type: object
   969      sigs.k8s.io.cluster-api.exp.runtime.hooks.api.v1alpha1.BeforeClusterUpgradeResponse:
   970        description: BeforeClusterUpgradeResponse is the response of BeforeClusterUpgrade
   971          hook.
   972        properties:
   973          apiVersion:
   974            description: 'APIVersion defines the versioned schema of this representation
   975              of an object. Servers should convert recognized schemas to the latest
   976              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
   977            type: string
   978          kind:
   979            description: 'Kind is a string value representing the REST resource this
   980              object represents. Servers may infer this from the endpoint the client
   981              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
   982            type: string
   983          message:
   984            default: ""
   985            description: A human-readable description of the status of the call.
   986            type: string
   987          retryAfterSeconds:
   988            default: 0
   989            description: RetryAfterSeconds when set to a non-zero signifies that the
   990              hook needs to be retried at a future time.
   991            format: int32
   992            type: integer
   993          status:
   994            default: ""
   995            description: |-
   996              Status of the call. One of "Success" or "Failure".
   997  
   998              Possible enum values:
   999               - `"Failure"`
  1000               - `"Success"`
  1001            enum:
  1002            - Failure
  1003            - Success
  1004            type: string
  1005        required:
  1006        - status
  1007        - retryAfterSeconds
  1008        - message
  1009        type: object
  1010  info:
  1011    description: Open API specification for Cluster API Runtime SDK
  1012    license:
  1013      name: Apache 2.0
  1014      url: http://www.apache.org/licenses/LICENSE-2.0.html
  1015    title: Cluster API - Runtime SDK
  1016    version: v1.2.0
  1017  openapi: 3.0.0
  1018  paths:
  1019    /hooks.runtime.cluster.x-k8s.io/v1alpha1/afterclusterupgrade/{name}:
  1020      post:
  1021        description: TThis hook is called after the Cluster, control plane and workers
  1022          have been upgraded to the version specified in spec.topology.version. Runtime
  1023          Extensions implementers can use this hook to execute post-upgrade tasks. This
  1024          hook does not block any further changes or upgrades to the Cluster.
  1025        operationId: hooksRuntimeClusterV1alpha1AfterClusterUpgrade
  1026        parameters:
  1027        - in: path
  1028          name: name
  1029          required: true
  1030          schema:
  1031            type: string
  1032        requestBody:
  1033          content:
  1034            application/json:
  1035              schema:
  1036                $ref: '#/components/schemas/sigs.k8s.io.cluster-api.exp.runtime.hooks.api.v1alpha1.AfterClusterUpgradeRequest'
  1037        responses:
  1038          "200":
  1039            content:
  1040              application/json:
  1041                schema:
  1042                  $ref: '#/components/schemas/sigs.k8s.io.cluster-api.exp.runtime.hooks.api.v1alpha1.AfterClusterUpgradeResponse'
  1043            description: OK
  1044        summary: Called after the Cluster finished upgrade
  1045        tags:
  1046        - Lifecycle Hooks
  1047    /hooks.runtime.cluster.x-k8s.io/v1alpha1/aftercontrolplaneinitialized/{name}:
  1048      post:
  1049        description: This hook is called after the ControlPlane for the Cluster is marked
  1050          as available for the first time. Runtime Extension implementers can use this
  1051          hook to execute tasks that are only possible once the Control Plane is available.
  1052          This hook does not block any further changes to the Cluster.
  1053        operationId: hooksRuntimeClusterV1alpha1AfterControlPlaneInitialized
  1054        parameters:
  1055        - in: path
  1056          name: name
  1057          required: true
  1058          schema:
  1059            type: string
  1060        requestBody:
  1061          content:
  1062            application/json:
  1063              schema:
  1064                $ref: '#/components/schemas/sigs.k8s.io.cluster-api.exp.runtime.hooks.api.v1alpha1.AfterControlPlaneInitializedRequest'
  1065        responses:
  1066          "200":
  1067            content:
  1068              application/json:
  1069                schema:
  1070                  $ref: '#/components/schemas/sigs.k8s.io.cluster-api.exp.runtime.hooks.api.v1alpha1.AfterControlPlaneInitializedResponse'
  1071            description: OK
  1072        summary: Called after the Control Plane is available for the first time
  1073        tags:
  1074        - Lifecycle Hooks
  1075    /hooks.runtime.cluster.x-k8s.io/v1alpha1/aftercontrolplaneupgrade/{name}:
  1076      post:
  1077        description: This hook is called after the control plane has been upgraded to
  1078          the version specified in spec.topology.version, and immediately before the
  1079          new version is going to be propagated to the MachineDeployments existing in
  1080          the Cluster. Runtime Extension implementers can use this hook to execute post-upgrade
  1081          tasks and eventually block upgrades to workers.
  1082        operationId: hooksRuntimeClusterV1alpha1AfterControlPlaneUpgrade
  1083        parameters:
  1084        - in: path
  1085          name: name
  1086          required: true
  1087          schema:
  1088            type: string
  1089        requestBody:
  1090          content:
  1091            application/json:
  1092              schema:
  1093                $ref: '#/components/schemas/sigs.k8s.io.cluster-api.exp.runtime.hooks.api.v1alpha1.AfterControlPlaneUpgradeRequest'
  1094        responses:
  1095          "200":
  1096            content:
  1097              application/json:
  1098                schema:
  1099                  $ref: '#/components/schemas/sigs.k8s.io.cluster-api.exp.runtime.hooks.api.v1alpha1.AfterControlPlaneUpgradeResponse'
  1100            description: OK
  1101        summary: Called after the Control Plane finished upgrade
  1102        tags:
  1103        - Lifecycle Hooks
  1104    /hooks.runtime.cluster.x-k8s.io/v1alpha1/beforeclustercreate/{name}:
  1105      post:
  1106        description: This hook is called after the Cluster object has been created by
  1107          the user, immediately before all the objects which are part of a Cluster topology
  1108          are going to be created. Runtime Extension implementers can use this hook
  1109          to determine/prepare add-ons for the Cluster and block the creation of those
  1110          objects.
  1111        operationId: hooksRuntimeClusterV1alpha1BeforeClusterCreate
  1112        parameters:
  1113        - in: path
  1114          name: name
  1115          required: true
  1116          schema:
  1117            type: string
  1118        requestBody:
  1119          content:
  1120            application/json:
  1121              schema:
  1122                $ref: '#/components/schemas/sigs.k8s.io.cluster-api.exp.runtime.hooks.api.v1alpha1.BeforeClusterCreateRequest'
  1123        responses:
  1124          "200":
  1125            content:
  1126              application/json:
  1127                schema:
  1128                  $ref: '#/components/schemas/sigs.k8s.io.cluster-api.exp.runtime.hooks.api.v1alpha1.BeforeClusterCreateResponse'
  1129            description: OK
  1130        summary: Called before Cluster topology is created
  1131        tags:
  1132        - Lifecycle Hooks
  1133    /hooks.runtime.cluster.x-k8s.io/v1alpha1/beforeclusterdelete/{name}:
  1134      post:
  1135        description: This hook is called after the Cluster has been deleted by the user,
  1136          and immediately before objects existing in the Cluster are going to be deleted.
  1137          Runtime Extension implementers can use this hook to execute cleanup tasks
  1138          and eventually block deletion of the Cluster and descendant objects until
  1139          everything is ready.
  1140        operationId: hooksRuntimeClusterV1alpha1BeforeClusterDelete
  1141        parameters:
  1142        - in: path
  1143          name: name
  1144          required: true
  1145          schema:
  1146            type: string
  1147        requestBody:
  1148          content:
  1149            application/json:
  1150              schema:
  1151                $ref: '#/components/schemas/sigs.k8s.io.cluster-api.exp.runtime.hooks.api.v1alpha1.BeforeClusterDeleteRequest'
  1152        responses:
  1153          "200":
  1154            content:
  1155              application/json:
  1156                schema:
  1157                  $ref: '#/components/schemas/sigs.k8s.io.cluster-api.exp.runtime.hooks.api.v1alpha1.BeforeClusterDeleteResponse'
  1158            description: OK
  1159        summary: Called before the Cluster is deleted
  1160        tags:
  1161        - Lifecycle Hooks
  1162    /hooks.runtime.cluster.x-k8s.io/v1alpha1/beforeclusterupgrade/{name}:
  1163      post:
  1164        description: This hook is called after the Cluster object has been updated with
  1165          a new spec.topology.version by the user, and immediately before the new version
  1166          is going to be propagated to the control plane. Runtime Extension implementers
  1167          can use this hook to execute pre-upgrade tasks and block upgrades of the ControlPlane
  1168          and Workers.
  1169        operationId: hooksRuntimeClusterV1alpha1BeforeClusterUpgrade
  1170        parameters:
  1171        - in: path
  1172          name: name
  1173          required: true
  1174          schema:
  1175            type: string
  1176        requestBody:
  1177          content:
  1178            application/json:
  1179              schema:
  1180                $ref: '#/components/schemas/sigs.k8s.io.cluster-api.exp.runtime.hooks.api.v1alpha1.BeforeClusterUpgradeRequest'
  1181        responses:
  1182          "200":
  1183            content:
  1184              application/json:
  1185                schema:
  1186                  $ref: '#/components/schemas/sigs.k8s.io.cluster-api.exp.runtime.hooks.api.v1alpha1.BeforeClusterUpgradeResponse'
  1187            description: OK
  1188        summary: Called before the Cluster begins upgrade
  1189        tags:
  1190        - Lifecycle Hooks