charts/hub-agent/templates/crds/placement.kubernetes-fleet.io_clusterstagedupdateruns.yaml [1278:2178]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                        Use ComparisonOption and WhenToApply settings to control when an apply op can be executed.

                      * ReportDiff: Fleet will compare the desired state of a resource as kept in the hub cluster
                        with its current state (if applicable) on the member cluster side, and report any
                        differences. No actual apply ops would be executed, and resources will be left alone as they
                        are on the member clusters.

                        If configuration differences are found on a resource, Fleet will consider this as an apply
                        error, which might block rollout depending on the specified rollout strategy.

                        Use ComparisonOption setting to control how the difference is calculated.

                      ClientSideApply and ServerSideApply apply strategies only work when Fleet can assume
                      ownership of a resource (e.g., the resource is created by Fleet, or Fleet has taken over
                      the resource). See the comments on the WhenToTakeOver field for more information.
                      ReportDiff apply strategy, however, will function regardless of Fleet's ownership
                      status. One may set up a CRP with the ReportDiff strategy and the Never takeover option,
                      and this will turn Fleet into a detection tool that reports only configuration differences
                      but do not touch any resources on the member cluster side.

                      For a comparison between the different strategies and usage examples, refer to the
                      Fleet documentation.
                    enum:
                    - ClientSideApply
                    - ServerSideApply
                    - ReportDiff
                    type: string
                  whenToApply:
                    default: Always
                    description: |-
                      WhenToApply controls when Fleet would apply the manifests on the hub cluster to the member
                      clusters.

                      Available options are:

                      * Always: with this option, Fleet will periodically apply hub cluster manifests
                        on the member cluster side; this will effectively overwrite any change in the fields
                        managed by Fleet (i.e., specified in the hub cluster manifest). This is the default
                        option.

                        Note that this option would revert any ad-hoc changes made on the member cluster side in
                        the managed fields; if you would like to make temporary edits on the member cluster side
                        in the managed fields, switch to IfNotDrifted option. Note that changes in unmanaged
                        fields will be left alone; if you use the FullDiff compare option, such changes will
                        be reported as drifts.

                      * IfNotDrifted: with this option, Fleet will stop applying hub cluster manifests on
                        clusters that have drifted from the desired state; apply ops would still continue on
                        the rest of the clusters. Drifts are calculated using the ComparisonOption,
                        as explained in the corresponding field.

                        Use this option if you would like Fleet to detect drifts in your multi-cluster setup.
                        A drift occurs when an agent makes an ad-hoc change on the member cluster side that
                        makes affected resources deviate from its desired state as kept in the hub cluster;
                        and this option grants you an opportunity to view the drift details and take actions
                        accordingly. The drift details will be reported in the CRP status.

                        To fix a drift, you may:

                        * revert the changes manually on the member cluster side
                        * update the hub cluster manifest; this will trigger Fleet to apply the latest revision
                          of the manifests, which will overwrite the drifted fields
                          (if they are managed by Fleet)
                        * switch to the Always option; this will trigger Fleet to apply the current revision
                          of the manifests, which will overwrite the drifted fields (if they are managed by Fleet).
                        * if applicable and necessary, delete the drifted resources on the member cluster side; Fleet
                          will attempt to re-create them using the hub cluster manifests
                    enum:
                    - Always
                    - IfNotDrifted
                    type: string
                  whenToTakeOver:
                    default: Always
                    description: |-
                      WhenToTakeOver determines the action to take when Fleet applies resources to a member
                      cluster for the first time and finds out that the resource already exists in the cluster.

                      This setting is most relevant in cases where you would like Fleet to manage pre-existing
                      resources on a member cluster.

                      Available options include:

                      * Always: with this action, Fleet will apply the hub cluster manifests to the member
                        clusters even if the affected resources already exist. This is the default action.

                        Note that this might lead to fields being overwritten on the member clusters, if they
                        are specified in the hub cluster manifests.

                      * IfNoDiff: with this action, Fleet will apply the hub cluster manifests to the member
                        clusters if (and only if) pre-existing resources look the same as the hub cluster manifests.

                        This is a safer option as pre-existing resources that are inconsistent with the hub cluster
                        manifests will not be overwritten; Fleet will ignore them until the inconsistencies
                        are resolved properly: any change you make to the hub cluster manifests would not be
                        applied, and if you delete the manifests or even the ClusterResourcePlacement itself
                        from the hub cluster, these pre-existing resources would not be taken away.

                        Fleet will check for inconsistencies in accordance with the ComparisonOption setting. See also
                        the comments on the ComparisonOption field for more information.

                        If a diff has been found in a field that is **managed** by Fleet (i.e., the field
                        **is specified ** in the hub cluster manifest), consider one of the following actions:
                        * set the field in the member cluster to be of the same value as that in the hub cluster
                          manifest.
                        * update the hub cluster manifest so that its field value matches with that in the member
                          cluster.
                        * switch to the Always action, which will allow Fleet to overwrite the field with the
                          value in the hub cluster manifest.

                        If a diff has been found in a field that is **not managed** by Fleet (i.e., the field
                        **is not specified** in the hub cluster manifest), consider one of the following actions:
                        * remove the field from the member cluster.
                        * update the hub cluster manifest so that the field is included in the hub cluster manifest.

                        If appropriate, you may also delete the object from the member cluster; Fleet will recreate
                        it using the hub cluster manifest.

                      * Never: with this action, Fleet will not apply a hub cluster manifest to the member
                        clusters if there is a corresponding pre-existing resource. However, if a manifest
                        has never been applied yet; or it has a corresponding resource which Fleet has assumed
                        ownership, apply op will still be executed.

                        This is the safest option; one will have to remove the pre-existing resources (so that
                        Fleet can re-create them) or switch to a different
                        WhenToTakeOver option before Fleet starts processing the corresponding hub cluster
                        manifests.

                        If you prefer Fleet stop processing all manifests, use this option along with the
                        ReportDiff apply strategy type. This setup would instruct Fleet to touch nothing
                        on the member cluster side but still report configuration differences between the
                        hub cluster and member clusters. Fleet will not give up ownership
                        that it has already assumed though.
                    enum:
                    - Always
                    - IfNoDiff
                    - Never
                    type: string
                type: object
              conditions:
                description: |-
                  Conditions is an array of current observed conditions for StagedUpdateRun.
                  Known conditions are "Initialized", "Progressing", "Succeeded".
                items:
                  description: Condition contains details for one aspect of the current
                    state of this API Resource.
                  properties:
                    lastTransitionTime:
                      description: |-
                        lastTransitionTime is the last time the condition transitioned from one status to another.
                        This should be when the underlying condition changed.  If that is not known, then using the time when the API field changed is acceptable.
                      format: date-time
                      type: string
                    message:
                      description: |-
                        message is a human readable message indicating details about the transition.
                        This may be an empty string.
                      maxLength: 32768
                      type: string
                    observedGeneration:
                      description: |-
                        observedGeneration represents the .metadata.generation that the condition was set based upon.
                        For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
                        with respect to the current state of the instance.
                      format: int64
                      minimum: 0
                      type: integer
                    reason:
                      description: |-
                        reason contains a programmatic identifier indicating the reason for the condition's last transition.
                        Producers of specific condition types may define expected values and meanings for this field,
                        and whether the values are considered a guaranteed API.
                        The value should be a CamelCase string.
                        This field may not be empty.
                      maxLength: 1024
                      minLength: 1
                      pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                      type: string
                    status:
                      description: status of the condition, one of True, False, Unknown.
                      enum:
                      - "True"
                      - "False"
                      - Unknown
                      type: string
                    type:
                      description: type of condition in CamelCase or in foo.example.com/CamelCase.
                      maxLength: 316
                      pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
                      type: string
                  required:
                  - lastTransitionTime
                  - message
                  - reason
                  - status
                  - type
                  type: object
                type: array
                x-kubernetes-list-map-keys:
                - type
                x-kubernetes-list-type: map
              deletionStageStatus:
                description: |-
                  DeletionStageStatus lists the current status of the deletion stage. The deletion stage
                  removes all the resources from the clusters that are not selected by the
                  current policy after all the update stages are completed.
                properties:
                  afterStageTaskStatus:
                    description: |-
                      The status of the post-update tasks associated with the current stage.
                      Empty if the stage has not finished updating all the clusters.
                    items:
                      properties:
                        approvalRequestName:
                          description: |-
                            The name of the approval request object that is created for this stage.
                            Only valid if the AfterStageTaskType is Approval.
                          type: string
                        conditions:
                          description: |-
                            Conditions is an array of current observed conditions for the specific type of post-update task.
                            Known conditions are "ApprovalRequestCreated", "WaitTimeElapsed", and "ApprovalRequestApproved".
                          items:
                            description: Condition contains details for one aspect
                              of the current state of this API Resource.
                            properties:
                              lastTransitionTime:
                                description: |-
                                  lastTransitionTime is the last time the condition transitioned from one status to another.
                                  This should be when the underlying condition changed.  If that is not known, then using the time when the API field changed is acceptable.
                                format: date-time
                                type: string
                              message:
                                description: |-
                                  message is a human readable message indicating details about the transition.
                                  This may be an empty string.
                                maxLength: 32768
                                type: string
                              observedGeneration:
                                description: |-
                                  observedGeneration represents the .metadata.generation that the condition was set based upon.
                                  For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
                                  with respect to the current state of the instance.
                                format: int64
                                minimum: 0
                                type: integer
                              reason:
                                description: |-
                                  reason contains a programmatic identifier indicating the reason for the condition's last transition.
                                  Producers of specific condition types may define expected values and meanings for this field,
                                  and whether the values are considered a guaranteed API.
                                  The value should be a CamelCase string.
                                  This field may not be empty.
                                maxLength: 1024
                                minLength: 1
                                pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                                type: string
                              status:
                                description: status of the condition, one of True,
                                  False, Unknown.
                                enum:
                                - "True"
                                - "False"
                                - Unknown
                                type: string
                              type:
                                description: type of condition in CamelCase or in
                                  foo.example.com/CamelCase.
                                maxLength: 316
                                pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
                                type: string
                            required:
                            - lastTransitionTime
                            - message
                            - reason
                            - status
                            - type
                            type: object
                          type: array
                          x-kubernetes-list-map-keys:
                          - type
                          x-kubernetes-list-type: map
                        type:
                          description: The type of the post-update task.
                          enum:
                          - TimedWait
                          - Approval
                          type: string
                      required:
                      - type
                      type: object
                    maxItems: 2
                    type: array
                  clusters:
                    description: The list of each cluster's updating status in this
                      stage.
                    items:
                      description: ClusterUpdatingStatus defines the status of the
                        update run on a cluster.
                      properties:
                        clusterName:
                          description: The name of the cluster.
                          type: string
                        clusterResourceOverrideSnapshots:
                          description: |-
                            ClusterResourceOverrides contains a list of applicable ClusterResourceOverride snapshot names
                            associated with the cluster.
                            The list is computed at the beginning of the update run and not updated during the update run.
                            The list is empty if there are no cluster overrides associated with the cluster.
                          items:
                            type: string
                          type: array
                        conditions:
                          description: |-
                            Conditions is an array of current observed conditions for clusters. Empty if the cluster has not started updating.
                            Known conditions are "Started", "Succeeded".
                          items:
                            description: Condition contains details for one aspect
                              of the current state of this API Resource.
                            properties:
                              lastTransitionTime:
                                description: |-
                                  lastTransitionTime is the last time the condition transitioned from one status to another.
                                  This should be when the underlying condition changed.  If that is not known, then using the time when the API field changed is acceptable.
                                format: date-time
                                type: string
                              message:
                                description: |-
                                  message is a human readable message indicating details about the transition.
                                  This may be an empty string.
                                maxLength: 32768
                                type: string
                              observedGeneration:
                                description: |-
                                  observedGeneration represents the .metadata.generation that the condition was set based upon.
                                  For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
                                  with respect to the current state of the instance.
                                format: int64
                                minimum: 0
                                type: integer
                              reason:
                                description: |-
                                  reason contains a programmatic identifier indicating the reason for the condition's last transition.
                                  Producers of specific condition types may define expected values and meanings for this field,
                                  and whether the values are considered a guaranteed API.
                                  The value should be a CamelCase string.
                                  This field may not be empty.
                                maxLength: 1024
                                minLength: 1
                                pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                                type: string
                              status:
                                description: status of the condition, one of True,
                                  False, Unknown.
                                enum:
                                - "True"
                                - "False"
                                - Unknown
                                type: string
                              type:
                                description: type of condition in CamelCase or in
                                  foo.example.com/CamelCase.
                                maxLength: 316
                                pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
                                type: string
                            required:
                            - lastTransitionTime
                            - message
                            - reason
                            - status
                            - type
                            type: object
                          type: array
                          x-kubernetes-list-map-keys:
                          - type
                          x-kubernetes-list-type: map
                        resourceOverrideSnapshots:
                          description: |-
                            ResourceOverrideSnapshots is a list of ResourceOverride snapshots associated with the cluster.
                            The list is computed at the beginning of the update run and not updated during the update run.
                            The list is empty if there are no resource overrides associated with the cluster.
                          items:
                            description: NamespacedName comprises a resource name,
                              with a mandatory namespace.
                            properties:
                              name:
                                description: Name is the name of the namespaced scope
                                  resource.
                                type: string
                              namespace:
                                description: Namespace is namespace of the namespaced
                                  scope resource.
                                type: string
                            required:
                            - name
                            - namespace
                            type: object
                          type: array
                      required:
                      - clusterName
                      type: object
                    type: array
                  conditions:
                    description: |-
                      Conditions is an array of current observed updating conditions for the stage. Empty if the stage has not started updating.
                      Known conditions are "Progressing", "Succeeded".
                    items:
                      description: Condition contains details for one aspect of the
                        current state of this API Resource.
                      properties:
                        lastTransitionTime:
                          description: |-
                            lastTransitionTime is the last time the condition transitioned from one status to another.
                            This should be when the underlying condition changed.  If that is not known, then using the time when the API field changed is acceptable.
                          format: date-time
                          type: string
                        message:
                          description: |-
                            message is a human readable message indicating details about the transition.
                            This may be an empty string.
                          maxLength: 32768
                          type: string
                        observedGeneration:
                          description: |-
                            observedGeneration represents the .metadata.generation that the condition was set based upon.
                            For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
                            with respect to the current state of the instance.
                          format: int64
                          minimum: 0
                          type: integer
                        reason:
                          description: |-
                            reason contains a programmatic identifier indicating the reason for the condition's last transition.
                            Producers of specific condition types may define expected values and meanings for this field,
                            and whether the values are considered a guaranteed API.
                            The value should be a CamelCase string.
                            This field may not be empty.
                          maxLength: 1024
                          minLength: 1
                          pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                          type: string
                        status:
                          description: status of the condition, one of True, False,
                            Unknown.
                          enum:
                          - "True"
                          - "False"
                          - Unknown
                          type: string
                        type:
                          description: type of condition in CamelCase or in foo.example.com/CamelCase.
                          maxLength: 316
                          pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
                          type: string
                      required:
                      - lastTransitionTime
                      - message
                      - reason
                      - status
                      - type
                      type: object
                    type: array
                    x-kubernetes-list-map-keys:
                    - type
                    x-kubernetes-list-type: map
                  endTime:
                    description: The time when the update finished on the stage. Empty
                      if the stage has not started updating.
                    format: date-time
                    type: string
                  stageName:
                    description: The name of the stage.
                    type: string
                  startTime:
                    description: The time when the update started on the stage. Empty
                      if the stage has not started updating.
                    format: date-time
                    type: string
                required:
                - clusters
                - stageName
                type: object
              policyObservedClusterCount:
                description: |-
                  PolicyObservedClusterCount records the number of observed clusters in the policy snapshot.
                  It is recorded at the beginning of the update run from the policy snapshot object.
                  If the `ObservedClusterCount` value is updated during the update run, the update run is abandoned.
                type: integer
              policySnapshotIndexUsed:
                description: |-
                  PolicySnapShotIndexUsed records the policy snapshot index of the ClusterResourcePlacement (CRP) that
                  the update run is based on. The index represents the latest policy snapshot at the start of the update run.
                  If a newer policy snapshot is detected after the run starts, the staged update run is abandoned.
                  The scheduler must identify all clusters that meet the current policy before the update run begins.
                  All clusters involved in the update run are selected from the list of clusters scheduled by the CRP according
                  to the current policy.
                type: string
              stagedUpdateStrategySnapshot:
                description: |-
                  StagedUpdateStrategySnapshot is the snapshot of the StagedUpdateStrategy used for the update run.
                  The snapshot is immutable during the update run.
                  The strategy is applied to the list of clusters scheduled by the CRP according to the current policy.
                  The update run fails to initialize if the strategy fails to produce a valid list of stages where each selected
                  cluster is included in exactly one stage.
                properties:
                  stages:
                    description: Stage specifies the configuration for each update
                      stage.
                    items:
                      description: |-
                        StageConfig describes a single update stage.
                        The clusters in each stage are updated sequentially.
                        The update stops if any of the updates fail.
                      properties:
                        afterStageTasks:
                          description: |-
                            The collection of tasks that each stage needs to complete successfully before moving to the next stage.
                            Each task is executed in parallel and there cannot be more than one task of the same type.
                          items:
                            description: AfterStageTask is the collection of post-stage
                              tasks that ALL need to be completed before moving to
                              the next stage.
                            properties:
                              type:
                                description: The type of the after-stage task.
                                enum:
                                - TimedWait
                                - Approval
                                type: string
                              waitTime:
                                description: The time to wait after all the clusters
                                  in the current stage complete the update before
                                  moving to the next stage.
                                pattern: ^0|([0-9]+(\.[0-9]+)?(s|m|h))+$
                                type: string
                            required:
                            - type
                            type: object
                          maxItems: 2
                          type: array
                        labelSelector:
                          description: |-
                            LabelSelector is a label query over all the joined member clusters. Clusters matching the query are selected
                            for this stage. There cannot be overlapping clusters between stages when the stagedUpdateRun is created.
                            If the label selector is absent, the stage includes all the selected clusters.
                          properties:
                            matchExpressions:
                              description: matchExpressions is a list of label selector
                                requirements. The requirements are ANDed.
                              items:
                                description: |-
                                  A label selector requirement is a selector that contains values, a key, and an operator that
                                  relates the key and values.
                                properties:
                                  key:
                                    description: key is the label key that the selector
                                      applies to.
                                    type: string
                                  operator:
                                    description: |-
                                      operator represents a key's relationship to a set of values.
                                      Valid operators are In, NotIn, Exists and DoesNotExist.
                                    type: string
                                  values:
                                    description: |-
                                      values is an array of string values. If the operator is In or NotIn,
                                      the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                      the values array must be empty. This array is replaced during a strategic
                                      merge patch.
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                required:
                                - key
                                - operator
                                type: object
                              type: array
                              x-kubernetes-list-type: atomic
                            matchLabels:
                              additionalProperties:
                                type: string
                              description: |-
                                matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                map is equivalent to an element of matchExpressions, whose key field is "key", the
                                operator is "In", and the values array contains only "value". The requirements are ANDed.
                              type: object
                          type: object
                          x-kubernetes-map-type: atomic
                        name:
                          description: The name of the stage. This MUST be unique
                            within the same StagedUpdateStrategy.
                          maxLength: 63
                          pattern: ^[a-z0-9]+$
                          type: string
                        sortingLabelKey:
                          description: |-
                            The label key used to sort the selected clusters.
                            The clusters within the stage are updated sequentially following the rule below:
                              - primary: Ascending order based on the value of the label key, interpreted as integers if present.
                              - secondary: Ascending order based on the name of the cluster if the label key is absent or the label value is the same.
                          type: string
                      required:
                      - name
                      type: object
                    maxItems: 31
                    type: array
                required:
                - stages
                type: object
              stagesStatus:
                description: |-
                  StagesStatus lists the current updating status of each stage.
                  The list is empty if the update run is not started or failed to initialize.
                items:
                  description: StageUpdatingStatus defines the status of the update
                    run in a stage.
                  properties:
                    afterStageTaskStatus:
                      description: |-
                        The status of the post-update tasks associated with the current stage.
                        Empty if the stage has not finished updating all the clusters.
                      items:
                        properties:
                          approvalRequestName:
                            description: |-
                              The name of the approval request object that is created for this stage.
                              Only valid if the AfterStageTaskType is Approval.
                            type: string
                          conditions:
                            description: |-
                              Conditions is an array of current observed conditions for the specific type of post-update task.
                              Known conditions are "ApprovalRequestCreated", "WaitTimeElapsed", and "ApprovalRequestApproved".
                            items:
                              description: Condition contains details for one aspect
                                of the current state of this API Resource.
                              properties:
                                lastTransitionTime:
                                  description: |-
                                    lastTransitionTime is the last time the condition transitioned from one status to another.
                                    This should be when the underlying condition changed.  If that is not known, then using the time when the API field changed is acceptable.
                                  format: date-time
                                  type: string
                                message:
                                  description: |-
                                    message is a human readable message indicating details about the transition.
                                    This may be an empty string.
                                  maxLength: 32768
                                  type: string
                                observedGeneration:
                                  description: |-
                                    observedGeneration represents the .metadata.generation that the condition was set based upon.
                                    For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
                                    with respect to the current state of the instance.
                                  format: int64
                                  minimum: 0
                                  type: integer
                                reason:
                                  description: |-
                                    reason contains a programmatic identifier indicating the reason for the condition's last transition.
                                    Producers of specific condition types may define expected values and meanings for this field,
                                    and whether the values are considered a guaranteed API.
                                    The value should be a CamelCase string.
                                    This field may not be empty.
                                  maxLength: 1024
                                  minLength: 1
                                  pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                                  type: string
                                status:
                                  description: status of the condition, one of True,
                                    False, Unknown.
                                  enum:
                                  - "True"
                                  - "False"
                                  - Unknown
                                  type: string
                                type:
                                  description: type of condition in CamelCase or in
                                    foo.example.com/CamelCase.
                                  maxLength: 316
                                  pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
                                  type: string
                              required:
                              - lastTransitionTime
                              - message
                              - reason
                              - status
                              - type
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - type
                            x-kubernetes-list-type: map
                          type:
                            description: The type of the post-update task.
                            enum:
                            - TimedWait
                            - Approval
                            type: string
                        required:
                        - type
                        type: object
                      maxItems: 2
                      type: array
                    clusters:
                      description: The list of each cluster's updating status in this
                        stage.
                      items:
                        description: ClusterUpdatingStatus defines the status of the
                          update run on a cluster.
                        properties:
                          clusterName:
                            description: The name of the cluster.
                            type: string
                          clusterResourceOverrideSnapshots:
                            description: |-
                              ClusterResourceOverrides contains a list of applicable ClusterResourceOverride snapshot names
                              associated with the cluster.
                              The list is computed at the beginning of the update run and not updated during the update run.
                              The list is empty if there are no cluster overrides associated with the cluster.
                            items:
                              type: string
                            type: array
                          conditions:
                            description: |-
                              Conditions is an array of current observed conditions for clusters. Empty if the cluster has not started updating.
                              Known conditions are "Started", "Succeeded".
                            items:
                              description: Condition contains details for one aspect
                                of the current state of this API Resource.
                              properties:
                                lastTransitionTime:
                                  description: |-
                                    lastTransitionTime is the last time the condition transitioned from one status to another.
                                    This should be when the underlying condition changed.  If that is not known, then using the time when the API field changed is acceptable.
                                  format: date-time
                                  type: string
                                message:
                                  description: |-
                                    message is a human readable message indicating details about the transition.
                                    This may be an empty string.
                                  maxLength: 32768
                                  type: string
                                observedGeneration:
                                  description: |-
                                    observedGeneration represents the .metadata.generation that the condition was set based upon.
                                    For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
                                    with respect to the current state of the instance.
                                  format: int64
                                  minimum: 0
                                  type: integer
                                reason:
                                  description: |-
                                    reason contains a programmatic identifier indicating the reason for the condition's last transition.
                                    Producers of specific condition types may define expected values and meanings for this field,
                                    and whether the values are considered a guaranteed API.
                                    The value should be a CamelCase string.
                                    This field may not be empty.
                                  maxLength: 1024
                                  minLength: 1
                                  pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                                  type: string
                                status:
                                  description: status of the condition, one of True,
                                    False, Unknown.
                                  enum:
                                  - "True"
                                  - "False"
                                  - Unknown
                                  type: string
                                type:
                                  description: type of condition in CamelCase or in
                                    foo.example.com/CamelCase.
                                  maxLength: 316
                                  pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
                                  type: string
                              required:
                              - lastTransitionTime
                              - message
                              - reason
                              - status
                              - type
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - type
                            x-kubernetes-list-type: map
                          resourceOverrideSnapshots:
                            description: |-
                              ResourceOverrideSnapshots is a list of ResourceOverride snapshots associated with the cluster.
                              The list is computed at the beginning of the update run and not updated during the update run.
                              The list is empty if there are no resource overrides associated with the cluster.
                            items:
                              description: NamespacedName comprises a resource name,
                                with a mandatory namespace.
                              properties:
                                name:
                                  description: Name is the name of the namespaced
                                    scope resource.
                                  type: string
                                namespace:
                                  description: Namespace is namespace of the namespaced
                                    scope resource.
                                  type: string
                              required:
                              - name
                              - namespace
                              type: object
                            type: array
                        required:
                        - clusterName
                        type: object
                      type: array
                    conditions:
                      description: |-
                        Conditions is an array of current observed updating conditions for the stage. Empty if the stage has not started updating.
                        Known conditions are "Progressing", "Succeeded".
                      items:
                        description: Condition contains details for one aspect of
                          the current state of this API Resource.
                        properties:
                          lastTransitionTime:
                            description: |-
                              lastTransitionTime is the last time the condition transitioned from one status to another.
                              This should be when the underlying condition changed.  If that is not known, then using the time when the API field changed is acceptable.
                            format: date-time
                            type: string
                          message:
                            description: |-
                              message is a human readable message indicating details about the transition.
                              This may be an empty string.
                            maxLength: 32768
                            type: string
                          observedGeneration:
                            description: |-
                              observedGeneration represents the .metadata.generation that the condition was set based upon.
                              For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
                              with respect to the current state of the instance.
                            format: int64
                            minimum: 0
                            type: integer
                          reason:
                            description: |-
                              reason contains a programmatic identifier indicating the reason for the condition's last transition.
                              Producers of specific condition types may define expected values and meanings for this field,
                              and whether the values are considered a guaranteed API.
                              The value should be a CamelCase string.
                              This field may not be empty.
                            maxLength: 1024
                            minLength: 1
                            pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                            type: string
                          status:
                            description: status of the condition, one of True, False,
                              Unknown.
                            enum:
                            - "True"
                            - "False"
                            - Unknown
                            type: string
                          type:
                            description: type of condition in CamelCase or in foo.example.com/CamelCase.
                            maxLength: 316
                            pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
                            type: string
                        required:
                        - lastTransitionTime
                        - message
                        - reason
                        - status
                        - type
                        type: object
                      type: array
                      x-kubernetes-list-map-keys:
                      - type
                      x-kubernetes-list-type: map
                    endTime:
                      description: The time when the update finished on the stage.
                        Empty if the stage has not started updating.
                      format: date-time
                      type: string
                    stageName:
                      description: The name of the stage.
                      type: string
                    startTime:
                      description: The time when the update started on the stage.
                        Empty if the stage has not started updating.
                      format: date-time
                      type: string
                  required:
                  - clusters
                  - stageName
                  type: object
                type: array
            type: object
        required:
        - spec
        type: object
        x-kubernetes-validations:
        - message: metadata.name max length is 127
          rule: size(self.metadata.name) < 128
    served: true
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



config/crd/bases/placement.kubernetes-fleet.io_clusterstagedupdateruns.yaml [198:1098]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                        Use ComparisonOption and WhenToApply settings to control when an apply op can be executed.

                      * ReportDiff: Fleet will compare the desired state of a resource as kept in the hub cluster
                        with its current state (if applicable) on the member cluster side, and report any
                        differences. No actual apply ops would be executed, and resources will be left alone as they
                        are on the member clusters.

                        If configuration differences are found on a resource, Fleet will consider this as an apply
                        error, which might block rollout depending on the specified rollout strategy.

                        Use ComparisonOption setting to control how the difference is calculated.

                      ClientSideApply and ServerSideApply apply strategies only work when Fleet can assume
                      ownership of a resource (e.g., the resource is created by Fleet, or Fleet has taken over
                      the resource). See the comments on the WhenToTakeOver field for more information.
                      ReportDiff apply strategy, however, will function regardless of Fleet's ownership
                      status. One may set up a CRP with the ReportDiff strategy and the Never takeover option,
                      and this will turn Fleet into a detection tool that reports only configuration differences
                      but do not touch any resources on the member cluster side.

                      For a comparison between the different strategies and usage examples, refer to the
                      Fleet documentation.
                    enum:
                    - ClientSideApply
                    - ServerSideApply
                    - ReportDiff
                    type: string
                  whenToApply:
                    default: Always
                    description: |-
                      WhenToApply controls when Fleet would apply the manifests on the hub cluster to the member
                      clusters.

                      Available options are:

                      * Always: with this option, Fleet will periodically apply hub cluster manifests
                        on the member cluster side; this will effectively overwrite any change in the fields
                        managed by Fleet (i.e., specified in the hub cluster manifest). This is the default
                        option.

                        Note that this option would revert any ad-hoc changes made on the member cluster side in
                        the managed fields; if you would like to make temporary edits on the member cluster side
                        in the managed fields, switch to IfNotDrifted option. Note that changes in unmanaged
                        fields will be left alone; if you use the FullDiff compare option, such changes will
                        be reported as drifts.

                      * IfNotDrifted: with this option, Fleet will stop applying hub cluster manifests on
                        clusters that have drifted from the desired state; apply ops would still continue on
                        the rest of the clusters. Drifts are calculated using the ComparisonOption,
                        as explained in the corresponding field.

                        Use this option if you would like Fleet to detect drifts in your multi-cluster setup.
                        A drift occurs when an agent makes an ad-hoc change on the member cluster side that
                        makes affected resources deviate from its desired state as kept in the hub cluster;
                        and this option grants you an opportunity to view the drift details and take actions
                        accordingly. The drift details will be reported in the CRP status.

                        To fix a drift, you may:

                        * revert the changes manually on the member cluster side
                        * update the hub cluster manifest; this will trigger Fleet to apply the latest revision
                          of the manifests, which will overwrite the drifted fields
                          (if they are managed by Fleet)
                        * switch to the Always option; this will trigger Fleet to apply the current revision
                          of the manifests, which will overwrite the drifted fields (if they are managed by Fleet).
                        * if applicable and necessary, delete the drifted resources on the member cluster side; Fleet
                          will attempt to re-create them using the hub cluster manifests
                    enum:
                    - Always
                    - IfNotDrifted
                    type: string
                  whenToTakeOver:
                    default: Always
                    description: |-
                      WhenToTakeOver determines the action to take when Fleet applies resources to a member
                      cluster for the first time and finds out that the resource already exists in the cluster.

                      This setting is most relevant in cases where you would like Fleet to manage pre-existing
                      resources on a member cluster.

                      Available options include:

                      * Always: with this action, Fleet will apply the hub cluster manifests to the member
                        clusters even if the affected resources already exist. This is the default action.

                        Note that this might lead to fields being overwritten on the member clusters, if they
                        are specified in the hub cluster manifests.

                      * IfNoDiff: with this action, Fleet will apply the hub cluster manifests to the member
                        clusters if (and only if) pre-existing resources look the same as the hub cluster manifests.

                        This is a safer option as pre-existing resources that are inconsistent with the hub cluster
                        manifests will not be overwritten; Fleet will ignore them until the inconsistencies
                        are resolved properly: any change you make to the hub cluster manifests would not be
                        applied, and if you delete the manifests or even the ClusterResourcePlacement itself
                        from the hub cluster, these pre-existing resources would not be taken away.

                        Fleet will check for inconsistencies in accordance with the ComparisonOption setting. See also
                        the comments on the ComparisonOption field for more information.

                        If a diff has been found in a field that is **managed** by Fleet (i.e., the field
                        **is specified ** in the hub cluster manifest), consider one of the following actions:
                        * set the field in the member cluster to be of the same value as that in the hub cluster
                          manifest.
                        * update the hub cluster manifest so that its field value matches with that in the member
                          cluster.
                        * switch to the Always action, which will allow Fleet to overwrite the field with the
                          value in the hub cluster manifest.

                        If a diff has been found in a field that is **not managed** by Fleet (i.e., the field
                        **is not specified** in the hub cluster manifest), consider one of the following actions:
                        * remove the field from the member cluster.
                        * update the hub cluster manifest so that the field is included in the hub cluster manifest.

                        If appropriate, you may also delete the object from the member cluster; Fleet will recreate
                        it using the hub cluster manifest.

                      * Never: with this action, Fleet will not apply a hub cluster manifest to the member
                        clusters if there is a corresponding pre-existing resource. However, if a manifest
                        has never been applied yet; or it has a corresponding resource which Fleet has assumed
                        ownership, apply op will still be executed.

                        This is the safest option; one will have to remove the pre-existing resources (so that
                        Fleet can re-create them) or switch to a different
                        WhenToTakeOver option before Fleet starts processing the corresponding hub cluster
                        manifests.

                        If you prefer Fleet stop processing all manifests, use this option along with the
                        ReportDiff apply strategy type. This setup would instruct Fleet to touch nothing
                        on the member cluster side but still report configuration differences between the
                        hub cluster and member clusters. Fleet will not give up ownership
                        that it has already assumed though.
                    enum:
                    - Always
                    - IfNoDiff
                    - Never
                    type: string
                type: object
              conditions:
                description: |-
                  Conditions is an array of current observed conditions for StagedUpdateRun.
                  Known conditions are "Initialized", "Progressing", "Succeeded".
                items:
                  description: Condition contains details for one aspect of the current
                    state of this API Resource.
                  properties:
                    lastTransitionTime:
                      description: |-
                        lastTransitionTime is the last time the condition transitioned from one status to another.
                        This should be when the underlying condition changed.  If that is not known, then using the time when the API field changed is acceptable.
                      format: date-time
                      type: string
                    message:
                      description: |-
                        message is a human readable message indicating details about the transition.
                        This may be an empty string.
                      maxLength: 32768
                      type: string
                    observedGeneration:
                      description: |-
                        observedGeneration represents the .metadata.generation that the condition was set based upon.
                        For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
                        with respect to the current state of the instance.
                      format: int64
                      minimum: 0
                      type: integer
                    reason:
                      description: |-
                        reason contains a programmatic identifier indicating the reason for the condition's last transition.
                        Producers of specific condition types may define expected values and meanings for this field,
                        and whether the values are considered a guaranteed API.
                        The value should be a CamelCase string.
                        This field may not be empty.
                      maxLength: 1024
                      minLength: 1
                      pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                      type: string
                    status:
                      description: status of the condition, one of True, False, Unknown.
                      enum:
                      - "True"
                      - "False"
                      - Unknown
                      type: string
                    type:
                      description: type of condition in CamelCase or in foo.example.com/CamelCase.
                      maxLength: 316
                      pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
                      type: string
                  required:
                  - lastTransitionTime
                  - message
                  - reason
                  - status
                  - type
                  type: object
                type: array
                x-kubernetes-list-map-keys:
                - type
                x-kubernetes-list-type: map
              deletionStageStatus:
                description: |-
                  DeletionStageStatus lists the current status of the deletion stage. The deletion stage
                  removes all the resources from the clusters that are not selected by the
                  current policy after all the update stages are completed.
                properties:
                  afterStageTaskStatus:
                    description: |-
                      The status of the post-update tasks associated with the current stage.
                      Empty if the stage has not finished updating all the clusters.
                    items:
                      properties:
                        approvalRequestName:
                          description: |-
                            The name of the approval request object that is created for this stage.
                            Only valid if the AfterStageTaskType is Approval.
                          type: string
                        conditions:
                          description: |-
                            Conditions is an array of current observed conditions for the specific type of post-update task.
                            Known conditions are "ApprovalRequestCreated", "WaitTimeElapsed", and "ApprovalRequestApproved".
                          items:
                            description: Condition contains details for one aspect
                              of the current state of this API Resource.
                            properties:
                              lastTransitionTime:
                                description: |-
                                  lastTransitionTime is the last time the condition transitioned from one status to another.
                                  This should be when the underlying condition changed.  If that is not known, then using the time when the API field changed is acceptable.
                                format: date-time
                                type: string
                              message:
                                description: |-
                                  message is a human readable message indicating details about the transition.
                                  This may be an empty string.
                                maxLength: 32768
                                type: string
                              observedGeneration:
                                description: |-
                                  observedGeneration represents the .metadata.generation that the condition was set based upon.
                                  For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
                                  with respect to the current state of the instance.
                                format: int64
                                minimum: 0
                                type: integer
                              reason:
                                description: |-
                                  reason contains a programmatic identifier indicating the reason for the condition's last transition.
                                  Producers of specific condition types may define expected values and meanings for this field,
                                  and whether the values are considered a guaranteed API.
                                  The value should be a CamelCase string.
                                  This field may not be empty.
                                maxLength: 1024
                                minLength: 1
                                pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                                type: string
                              status:
                                description: status of the condition, one of True,
                                  False, Unknown.
                                enum:
                                - "True"
                                - "False"
                                - Unknown
                                type: string
                              type:
                                description: type of condition in CamelCase or in
                                  foo.example.com/CamelCase.
                                maxLength: 316
                                pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
                                type: string
                            required:
                            - lastTransitionTime
                            - message
                            - reason
                            - status
                            - type
                            type: object
                          type: array
                          x-kubernetes-list-map-keys:
                          - type
                          x-kubernetes-list-type: map
                        type:
                          description: The type of the post-update task.
                          enum:
                          - TimedWait
                          - Approval
                          type: string
                      required:
                      - type
                      type: object
                    maxItems: 2
                    type: array
                  clusters:
                    description: The list of each cluster's updating status in this
                      stage.
                    items:
                      description: ClusterUpdatingStatus defines the status of the
                        update run on a cluster.
                      properties:
                        clusterName:
                          description: The name of the cluster.
                          type: string
                        clusterResourceOverrideSnapshots:
                          description: |-
                            ClusterResourceOverrides contains a list of applicable ClusterResourceOverride snapshot names
                            associated with the cluster.
                            The list is computed at the beginning of the update run and not updated during the update run.
                            The list is empty if there are no cluster overrides associated with the cluster.
                          items:
                            type: string
                          type: array
                        conditions:
                          description: |-
                            Conditions is an array of current observed conditions for clusters. Empty if the cluster has not started updating.
                            Known conditions are "Started", "Succeeded".
                          items:
                            description: Condition contains details for one aspect
                              of the current state of this API Resource.
                            properties:
                              lastTransitionTime:
                                description: |-
                                  lastTransitionTime is the last time the condition transitioned from one status to another.
                                  This should be when the underlying condition changed.  If that is not known, then using the time when the API field changed is acceptable.
                                format: date-time
                                type: string
                              message:
                                description: |-
                                  message is a human readable message indicating details about the transition.
                                  This may be an empty string.
                                maxLength: 32768
                                type: string
                              observedGeneration:
                                description: |-
                                  observedGeneration represents the .metadata.generation that the condition was set based upon.
                                  For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
                                  with respect to the current state of the instance.
                                format: int64
                                minimum: 0
                                type: integer
                              reason:
                                description: |-
                                  reason contains a programmatic identifier indicating the reason for the condition's last transition.
                                  Producers of specific condition types may define expected values and meanings for this field,
                                  and whether the values are considered a guaranteed API.
                                  The value should be a CamelCase string.
                                  This field may not be empty.
                                maxLength: 1024
                                minLength: 1
                                pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                                type: string
                              status:
                                description: status of the condition, one of True,
                                  False, Unknown.
                                enum:
                                - "True"
                                - "False"
                                - Unknown
                                type: string
                              type:
                                description: type of condition in CamelCase or in
                                  foo.example.com/CamelCase.
                                maxLength: 316
                                pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
                                type: string
                            required:
                            - lastTransitionTime
                            - message
                            - reason
                            - status
                            - type
                            type: object
                          type: array
                          x-kubernetes-list-map-keys:
                          - type
                          x-kubernetes-list-type: map
                        resourceOverrideSnapshots:
                          description: |-
                            ResourceOverrideSnapshots is a list of ResourceOverride snapshots associated with the cluster.
                            The list is computed at the beginning of the update run and not updated during the update run.
                            The list is empty if there are no resource overrides associated with the cluster.
                          items:
                            description: NamespacedName comprises a resource name,
                              with a mandatory namespace.
                            properties:
                              name:
                                description: Name is the name of the namespaced scope
                                  resource.
                                type: string
                              namespace:
                                description: Namespace is namespace of the namespaced
                                  scope resource.
                                type: string
                            required:
                            - name
                            - namespace
                            type: object
                          type: array
                      required:
                      - clusterName
                      type: object
                    type: array
                  conditions:
                    description: |-
                      Conditions is an array of current observed updating conditions for the stage. Empty if the stage has not started updating.
                      Known conditions are "Progressing", "Succeeded".
                    items:
                      description: Condition contains details for one aspect of the
                        current state of this API Resource.
                      properties:
                        lastTransitionTime:
                          description: |-
                            lastTransitionTime is the last time the condition transitioned from one status to another.
                            This should be when the underlying condition changed.  If that is not known, then using the time when the API field changed is acceptable.
                          format: date-time
                          type: string
                        message:
                          description: |-
                            message is a human readable message indicating details about the transition.
                            This may be an empty string.
                          maxLength: 32768
                          type: string
                        observedGeneration:
                          description: |-
                            observedGeneration represents the .metadata.generation that the condition was set based upon.
                            For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
                            with respect to the current state of the instance.
                          format: int64
                          minimum: 0
                          type: integer
                        reason:
                          description: |-
                            reason contains a programmatic identifier indicating the reason for the condition's last transition.
                            Producers of specific condition types may define expected values and meanings for this field,
                            and whether the values are considered a guaranteed API.
                            The value should be a CamelCase string.
                            This field may not be empty.
                          maxLength: 1024
                          minLength: 1
                          pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                          type: string
                        status:
                          description: status of the condition, one of True, False,
                            Unknown.
                          enum:
                          - "True"
                          - "False"
                          - Unknown
                          type: string
                        type:
                          description: type of condition in CamelCase or in foo.example.com/CamelCase.
                          maxLength: 316
                          pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
                          type: string
                      required:
                      - lastTransitionTime
                      - message
                      - reason
                      - status
                      - type
                      type: object
                    type: array
                    x-kubernetes-list-map-keys:
                    - type
                    x-kubernetes-list-type: map
                  endTime:
                    description: The time when the update finished on the stage. Empty
                      if the stage has not started updating.
                    format: date-time
                    type: string
                  stageName:
                    description: The name of the stage.
                    type: string
                  startTime:
                    description: The time when the update started on the stage. Empty
                      if the stage has not started updating.
                    format: date-time
                    type: string
                required:
                - clusters
                - stageName
                type: object
              policyObservedClusterCount:
                description: |-
                  PolicyObservedClusterCount records the number of observed clusters in the policy snapshot.
                  It is recorded at the beginning of the update run from the policy snapshot object.
                  If the `ObservedClusterCount` value is updated during the update run, the update run is abandoned.
                type: integer
              policySnapshotIndexUsed:
                description: |-
                  PolicySnapShotIndexUsed records the policy snapshot index of the ClusterResourcePlacement (CRP) that
                  the update run is based on. The index represents the latest policy snapshot at the start of the update run.
                  If a newer policy snapshot is detected after the run starts, the staged update run is abandoned.
                  The scheduler must identify all clusters that meet the current policy before the update run begins.
                  All clusters involved in the update run are selected from the list of clusters scheduled by the CRP according
                  to the current policy.
                type: string
              stagedUpdateStrategySnapshot:
                description: |-
                  StagedUpdateStrategySnapshot is the snapshot of the StagedUpdateStrategy used for the update run.
                  The snapshot is immutable during the update run.
                  The strategy is applied to the list of clusters scheduled by the CRP according to the current policy.
                  The update run fails to initialize if the strategy fails to produce a valid list of stages where each selected
                  cluster is included in exactly one stage.
                properties:
                  stages:
                    description: Stage specifies the configuration for each update
                      stage.
                    items:
                      description: |-
                        StageConfig describes a single update stage.
                        The clusters in each stage are updated sequentially.
                        The update stops if any of the updates fail.
                      properties:
                        afterStageTasks:
                          description: |-
                            The collection of tasks that each stage needs to complete successfully before moving to the next stage.
                            Each task is executed in parallel and there cannot be more than one task of the same type.
                          items:
                            description: AfterStageTask is the collection of post-stage
                              tasks that ALL need to be completed before moving to
                              the next stage.
                            properties:
                              type:
                                description: The type of the after-stage task.
                                enum:
                                - TimedWait
                                - Approval
                                type: string
                              waitTime:
                                description: The time to wait after all the clusters
                                  in the current stage complete the update before
                                  moving to the next stage.
                                pattern: ^0|([0-9]+(\.[0-9]+)?(s|m|h))+$
                                type: string
                            required:
                            - type
                            type: object
                          maxItems: 2
                          type: array
                        labelSelector:
                          description: |-
                            LabelSelector is a label query over all the joined member clusters. Clusters matching the query are selected
                            for this stage. There cannot be overlapping clusters between stages when the stagedUpdateRun is created.
                            If the label selector is absent, the stage includes all the selected clusters.
                          properties:
                            matchExpressions:
                              description: matchExpressions is a list of label selector
                                requirements. The requirements are ANDed.
                              items:
                                description: |-
                                  A label selector requirement is a selector that contains values, a key, and an operator that
                                  relates the key and values.
                                properties:
                                  key:
                                    description: key is the label key that the selector
                                      applies to.
                                    type: string
                                  operator:
                                    description: |-
                                      operator represents a key's relationship to a set of values.
                                      Valid operators are In, NotIn, Exists and DoesNotExist.
                                    type: string
                                  values:
                                    description: |-
                                      values is an array of string values. If the operator is In or NotIn,
                                      the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                      the values array must be empty. This array is replaced during a strategic
                                      merge patch.
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                required:
                                - key
                                - operator
                                type: object
                              type: array
                              x-kubernetes-list-type: atomic
                            matchLabels:
                              additionalProperties:
                                type: string
                              description: |-
                                matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                map is equivalent to an element of matchExpressions, whose key field is "key", the
                                operator is "In", and the values array contains only "value". The requirements are ANDed.
                              type: object
                          type: object
                          x-kubernetes-map-type: atomic
                        name:
                          description: The name of the stage. This MUST be unique
                            within the same StagedUpdateStrategy.
                          maxLength: 63
                          pattern: ^[a-z0-9]+$
                          type: string
                        sortingLabelKey:
                          description: |-
                            The label key used to sort the selected clusters.
                            The clusters within the stage are updated sequentially following the rule below:
                              - primary: Ascending order based on the value of the label key, interpreted as integers if present.
                              - secondary: Ascending order based on the name of the cluster if the label key is absent or the label value is the same.
                          type: string
                      required:
                      - name
                      type: object
                    maxItems: 31
                    type: array
                required:
                - stages
                type: object
              stagesStatus:
                description: |-
                  StagesStatus lists the current updating status of each stage.
                  The list is empty if the update run is not started or failed to initialize.
                items:
                  description: StageUpdatingStatus defines the status of the update
                    run in a stage.
                  properties:
                    afterStageTaskStatus:
                      description: |-
                        The status of the post-update tasks associated with the current stage.
                        Empty if the stage has not finished updating all the clusters.
                      items:
                        properties:
                          approvalRequestName:
                            description: |-
                              The name of the approval request object that is created for this stage.
                              Only valid if the AfterStageTaskType is Approval.
                            type: string
                          conditions:
                            description: |-
                              Conditions is an array of current observed conditions for the specific type of post-update task.
                              Known conditions are "ApprovalRequestCreated", "WaitTimeElapsed", and "ApprovalRequestApproved".
                            items:
                              description: Condition contains details for one aspect
                                of the current state of this API Resource.
                              properties:
                                lastTransitionTime:
                                  description: |-
                                    lastTransitionTime is the last time the condition transitioned from one status to another.
                                    This should be when the underlying condition changed.  If that is not known, then using the time when the API field changed is acceptable.
                                  format: date-time
                                  type: string
                                message:
                                  description: |-
                                    message is a human readable message indicating details about the transition.
                                    This may be an empty string.
                                  maxLength: 32768
                                  type: string
                                observedGeneration:
                                  description: |-
                                    observedGeneration represents the .metadata.generation that the condition was set based upon.
                                    For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
                                    with respect to the current state of the instance.
                                  format: int64
                                  minimum: 0
                                  type: integer
                                reason:
                                  description: |-
                                    reason contains a programmatic identifier indicating the reason for the condition's last transition.
                                    Producers of specific condition types may define expected values and meanings for this field,
                                    and whether the values are considered a guaranteed API.
                                    The value should be a CamelCase string.
                                    This field may not be empty.
                                  maxLength: 1024
                                  minLength: 1
                                  pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                                  type: string
                                status:
                                  description: status of the condition, one of True,
                                    False, Unknown.
                                  enum:
                                  - "True"
                                  - "False"
                                  - Unknown
                                  type: string
                                type:
                                  description: type of condition in CamelCase or in
                                    foo.example.com/CamelCase.
                                  maxLength: 316
                                  pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
                                  type: string
                              required:
                              - lastTransitionTime
                              - message
                              - reason
                              - status
                              - type
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - type
                            x-kubernetes-list-type: map
                          type:
                            description: The type of the post-update task.
                            enum:
                            - TimedWait
                            - Approval
                            type: string
                        required:
                        - type
                        type: object
                      maxItems: 2
                      type: array
                    clusters:
                      description: The list of each cluster's updating status in this
                        stage.
                      items:
                        description: ClusterUpdatingStatus defines the status of the
                          update run on a cluster.
                        properties:
                          clusterName:
                            description: The name of the cluster.
                            type: string
                          clusterResourceOverrideSnapshots:
                            description: |-
                              ClusterResourceOverrides contains a list of applicable ClusterResourceOverride snapshot names
                              associated with the cluster.
                              The list is computed at the beginning of the update run and not updated during the update run.
                              The list is empty if there are no cluster overrides associated with the cluster.
                            items:
                              type: string
                            type: array
                          conditions:
                            description: |-
                              Conditions is an array of current observed conditions for clusters. Empty if the cluster has not started updating.
                              Known conditions are "Started", "Succeeded".
                            items:
                              description: Condition contains details for one aspect
                                of the current state of this API Resource.
                              properties:
                                lastTransitionTime:
                                  description: |-
                                    lastTransitionTime is the last time the condition transitioned from one status to another.
                                    This should be when the underlying condition changed.  If that is not known, then using the time when the API field changed is acceptable.
                                  format: date-time
                                  type: string
                                message:
                                  description: |-
                                    message is a human readable message indicating details about the transition.
                                    This may be an empty string.
                                  maxLength: 32768
                                  type: string
                                observedGeneration:
                                  description: |-
                                    observedGeneration represents the .metadata.generation that the condition was set based upon.
                                    For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
                                    with respect to the current state of the instance.
                                  format: int64
                                  minimum: 0
                                  type: integer
                                reason:
                                  description: |-
                                    reason contains a programmatic identifier indicating the reason for the condition's last transition.
                                    Producers of specific condition types may define expected values and meanings for this field,
                                    and whether the values are considered a guaranteed API.
                                    The value should be a CamelCase string.
                                    This field may not be empty.
                                  maxLength: 1024
                                  minLength: 1
                                  pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                                  type: string
                                status:
                                  description: status of the condition, one of True,
                                    False, Unknown.
                                  enum:
                                  - "True"
                                  - "False"
                                  - Unknown
                                  type: string
                                type:
                                  description: type of condition in CamelCase or in
                                    foo.example.com/CamelCase.
                                  maxLength: 316
                                  pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
                                  type: string
                              required:
                              - lastTransitionTime
                              - message
                              - reason
                              - status
                              - type
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - type
                            x-kubernetes-list-type: map
                          resourceOverrideSnapshots:
                            description: |-
                              ResourceOverrideSnapshots is a list of ResourceOverride snapshots associated with the cluster.
                              The list is computed at the beginning of the update run and not updated during the update run.
                              The list is empty if there are no resource overrides associated with the cluster.
                            items:
                              description: NamespacedName comprises a resource name,
                                with a mandatory namespace.
                              properties:
                                name:
                                  description: Name is the name of the namespaced
                                    scope resource.
                                  type: string
                                namespace:
                                  description: Namespace is namespace of the namespaced
                                    scope resource.
                                  type: string
                              required:
                              - name
                              - namespace
                              type: object
                            type: array
                        required:
                        - clusterName
                        type: object
                      type: array
                    conditions:
                      description: |-
                        Conditions is an array of current observed updating conditions for the stage. Empty if the stage has not started updating.
                        Known conditions are "Progressing", "Succeeded".
                      items:
                        description: Condition contains details for one aspect of
                          the current state of this API Resource.
                        properties:
                          lastTransitionTime:
                            description: |-
                              lastTransitionTime is the last time the condition transitioned from one status to another.
                              This should be when the underlying condition changed.  If that is not known, then using the time when the API field changed is acceptable.
                            format: date-time
                            type: string
                          message:
                            description: |-
                              message is a human readable message indicating details about the transition.
                              This may be an empty string.
                            maxLength: 32768
                            type: string
                          observedGeneration:
                            description: |-
                              observedGeneration represents the .metadata.generation that the condition was set based upon.
                              For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
                              with respect to the current state of the instance.
                            format: int64
                            minimum: 0
                            type: integer
                          reason:
                            description: |-
                              reason contains a programmatic identifier indicating the reason for the condition's last transition.
                              Producers of specific condition types may define expected values and meanings for this field,
                              and whether the values are considered a guaranteed API.
                              The value should be a CamelCase string.
                              This field may not be empty.
                            maxLength: 1024
                            minLength: 1
                            pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                            type: string
                          status:
                            description: status of the condition, one of True, False,
                              Unknown.
                            enum:
                            - "True"
                            - "False"
                            - Unknown
                            type: string
                          type:
                            description: type of condition in CamelCase or in foo.example.com/CamelCase.
                            maxLength: 316
                            pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
                            type: string
                        required:
                        - lastTransitionTime
                        - message
                        - reason
                        - status
                        - type
                        type: object
                      type: array
                      x-kubernetes-list-map-keys:
                      - type
                      x-kubernetes-list-type: map
                    endTime:
                      description: The time when the update finished on the stage.
                        Empty if the stage has not started updating.
                      format: date-time
                      type: string
                    stageName:
                      description: The name of the stage.
                      type: string
                    startTime:
                      description: The time when the update started on the stage.
                        Empty if the stage has not started updating.
                      format: date-time
                      type: string
                  required:
                  - clusters
                  - stageName
                  type: object
                type: array
            type: object
        required:
        - spec
        type: object
        x-kubernetes-validations:
        - message: metadata.name max length is 127
          rule: size(self.metadata.name) < 128
    served: true
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



