
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.7.0
  creationTimestamp: null
  name: batchreleases.rollouts.kruise.io
spec:
  group: rollouts.kruise.io
  names:
    kind: BatchRelease
    listKind: BatchReleaseList
    plural: batchreleases
    singular: batchrelease
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .spec.targetReference.workloadRef.kind
          name: KIND
          type: string
        - jsonPath: .status.phase
          name: PHASE
          type: string
        - jsonPath: .status.canaryStatus.currentBatch
          name: BATCH
          type: integer
        - jsonPath: .status.canaryStatus.batchState
          name: BATCH-STATE
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: AGE
          type: date
      name: v1alpha1
      schema:
        openAPIV3Schema:
          properties:
            apiVersion:
              description: 'APIVersion defines the versioned schema of this representation
              of an object. Servers should convert recognized schemas to the latest
              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
              type: string
            kind:
              description: 'Kind is a string value representing the REST resource this
              object represents. Servers may infer this from the endpoint the client
              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
              type: string
            metadata:
              type: object
            spec:
              description: BatchReleaseSpec defines how to describe an update between
                different compRevision
              properties:
                releasePlan:
                  description: ReleasePlan is the details on how to rollout the resources
                  properties:
                    batchPartition:
                      description: All pods in the batches up to the batchPartition
                        (included) will have the target resource specification while
                        the rest still is the stable revision. This is designed for
                        the operators to manually rollout. Default is nil, which means
                        no partition and will release all batches. BatchPartition start
                        from 0.
                      format: int32
                      type: integer
                    batches:
                      description: 'Batches is the details on each batch of the ReleasePlan.
                      Users can specify their batch plan in this field, such as: batches:
                      - canaryReplicas: 1  # batches 0 - canaryReplicas: 2  # batches
                      1 - canaryReplicas: 5  # batches 2 Not that these canaryReplicas
                      should be a non-decreasing sequence.'
                      items:
                        description: ReleaseBatch is used to describe how each batch
                          release should be
                        properties:
                          canaryReplicas:
                            anyOf:
                              - type: integer
                              - type: string
                            description: 'CanaryReplicas is the number of upgraded pods
                            that should have in this batch. it can be an absolute
                            number (ex: 5) or a percentage of workload replicas. batches[i].canaryReplicas
                            should less than or equal to batches[j].canaryReplicas
                            if i < j.'
                            x-kubernetes-int-or-string: true
                        required:
                          - canaryReplicas
                        type: object
                      type: array
                    failureThreshold:
                      anyOf:
                        - type: integer
                        - type: string
                      description: FailureThreshold indicates how many failed pods can
                        be tolerated in all upgraded pods. Only when FailureThreshold
                        are satisfied, Rollout can enter ready state. If FailureThreshold
                        is nil, Rollout will use the MaxUnavailable of workload as its
                        FailureThreshold. Defaults to nil.
                      x-kubernetes-int-or-string: true
                    finalizingPolicy:
                      description: FinalizingPolicy define the behavior of controller
                        when phase enter Finalizing Defaults to "Immediate"
                      type: string
                    rolloutID:
                      description: RolloutID indicates an id for each rollout progress
                      type: string
                  type: object
                targetReference:
                  description: TargetRef contains the GVK and name of the workload that
                    we need to upgrade to.
                  properties:
                    workloadRef:
                      description: WorkloadRef contains enough information to let you
                        identify a workload for Rollout Batch release of the bypass
                      properties:
                        apiVersion:
                          description: API Version of the referent
                          type: string
                        kind:
                          description: Kind of the referent
                          type: string
                        name:
                          description: Name of the referent
                          type: string
                      required:
                        - apiVersion
                        - kind
                        - name
                      type: object
                  type: object
              required:
                - releasePlan
                - targetReference
              type: object
            status:
              description: BatchReleaseStatus defines the observed state of a release
                plan
              properties:
                canaryStatus:
                  description: CanaryStatus describes the state of the canary rollout.
                  properties:
                    batchReadyTime:
                      description: BatchReadyTime is the ready timestamp of the current
                        batch or the last batch. This field is updated once a batch
                        ready, and the batches[x].pausedSeconds relies on this field
                        to calculate the real-time duration.
                      format: date-time
                      type: string
                    batchState:
                      description: CurrentBatchState indicates the release state of
                        the current batch.
                      type: string
                    currentBatch:
                      description: The current batch the rollout is working on/blocked,
                        it starts from 0
                      format: int32
                      type: integer
                    noNeedUpdateReplicas:
                      description: the number of pods that no need to rollback in rollback
                        scene.
                      format: int32
                      type: integer
                    updatedReadyReplicas:
                      description: UpdatedReadyReplicas is the number upgraded Pods
                        that have a Ready Condition.
                      format: int32
                      type: integer
                    updatedReplicas:
                      description: UpdatedReplicas is the number of upgraded Pods.
                      format: int32
                      type: integer
                  required:
                    - currentBatch
                  type: object
                collisionCount:
                  description: Count of hash collisions for creating canary Deployment.
                    The controller uses this field as a collision avoidance mechanism
                    when it needs to create the name for the newest canary Deployment.
                  format: int32
                  type: integer
                conditions:
                  description: Conditions represents the observed process state of each
                    phase during executing the release plan.
                  items:
                    description: RolloutCondition describes the state of a rollout at
                      a certain point.
                    properties:
                      lastTransitionTime:
                        description: Last time the condition transitioned from one status
                          to another.
                        format: date-time
                        type: string
                      lastUpdateTime:
                        description: The last time this condition was updated.
                        format: date-time
                        type: string
                      message:
                        description: A human readable message indicating details about
                          the transition.
                        type: string
                      reason:
                        description: The reason for the condition's last transition.
                        type: string
                      status:
                        description: Phase of the condition, one of True, False, Unknown.
                        type: string
                      type:
                        description: Type of rollout condition.
                        type: string
                    required:
                      - message
                      - reason
                      - status
                      - type
                    type: object
                  type: array
                observedGeneration:
                  description: ObservedGeneration is the most recent generation observed
                    for this BatchRelease. It corresponds to this BatchRelease's generation,
                    which is updated on mutation by the API Server, and only if BatchRelease
                    Spec was changed, its generation will increase 1.
                  format: int64
                  type: integer
                observedReleasePlanHash:
                  description: ObservedReleasePlanHash is a hash code of observed itself
                    spec.releasePlan.
                  type: string
                observedRolloutID:
                  description: ObservedRolloutID is the most recent rollout-id observed
                    for this BatchRelease. If RolloutID was changed, we will restart
                    to roll out from batch 0, to ensure the batch-id and rollout-id
                    labels of Pods are correct.
                  type: string
                observedWorkloadReplicas:
                  description: ObservedWorkloadReplicas is observed replicas of target
                    referenced workload. This field is designed to deal with scaling
                    event during rollout, if this field changed, it means that the workload
                    is scaling during rollout.
                  format: int32
                  type: integer
                phase:
                  description: Phase is the release plan phase, which indicates the
                    current state of release plan state machine in BatchRelease controller.
                  type: string
                stableRevision:
                  description: StableRevision is the pod-template-hash of stable revision
                    pod template.
                  type: string
                updateRevision:
                  description: UpdateRevision is the pod-template-hash of update revision
                    pod template.
                  type: string
              type: object
          type: object
      served: true
      storage: true
      subresources:
        status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
