
---
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
                  patchPodTemplateMetadata:
                    description: PatchPodTemplateMetadata indicates patch configuration(e.g.
                      labels, annotations) to the canary deployment podTemplateSpec.metadata
                      only support for canary deployment
                    properties:
                      annotations:
                        additionalProperties:
                          type: string
                        description: annotations
                        type: object
                      labels:
                        additionalProperties:
                          type: string
                        description: labels
                        type: object
                    type: object
                  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: []
