---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.16.3
  name: backups.cloud.pingcap.com
spec:
  group: cloud.pingcap.com
  names:
    categories:
    - infra-api
    kind: Backup
    listKind: BackupList
    plural: backups
    singular: backup
  preserveUnknownFields: false
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .spec.clusterName
      name: Cluster
      type: string
    - jsonPath: .status.phase
      name: PHASE
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: AGE
      type: date
    name: v1
    schema:
      openAPIV3Schema:
        description: Backup is the Schema for the backups API
        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: BackupSpec defines the desired state of Backup
            properties:
              accountRef:
                description: |-
                  Attach the account ref into the backup when it is created
                  Now we use the account same with the network
                properties:
                  name:
                    type: string
                type: object
              clean_policy:
                description: CleanPolicy indicates how to clean backup
                type: string
              clusterName:
                description: ClusterName is the target cluster name, target cluster
                  must exist in the same namespace as backup
                type: string
              commitTS:
                description: |-
                  CommitTs is the commit ts of the backup, snapshot ts for snapshot backup or start ts for log backup.
                  Format supports TSO or datetime, e.g. '400036290571534337', '2018-05-11 01:42:23'.
                  Default is current timestamp.
                type: string
              configuration:
                description: |-
                  Configuration is the configuration passed from dataflow
                  it is used to replace gitops
                properties:
                  baseImage:
                    description: BaseImage of the component
                    type: string
                  config:
                    description: Config is the default configuration of component
                    type: string
                  tag:
                    description: Tag is component image tag
                    type: string
                  tikvImage:
                    description: TiKVImage is the custom TiKV image
                    type: string
                  tikvVersion:
                    description: TiKVVersion is the custom TiKV version
                    type: string
                type: object
              env:
                description: Env adds environment variables to backup pod
                items:
                  description: EnvVar represents an environment variable present in
                    a Container.
                  properties:
                    name:
                      description: Name of the environment variable. Must be a C_IDENTIFIER.
                      type: string
                    value:
                      description: |-
                        Variable references $(VAR_NAME) are expanded
                        using the previously defined environment variables in the container and
                        any service environment variables. If a variable cannot be resolved,
                        the reference in the input string will be unchanged. Double $$ are reduced
                        to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.
                        "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)".
                        Escaped references will never be expanded, regardless of whether the variable
                        exists or not.
                        Defaults to "".
                      type: string
                    valueFrom:
                      description: Source for the environment variable's value. Cannot
                        be used if value is not empty.
                      properties:
                        configMapKeyRef:
                          description: Selects a key of a ConfigMap.
                          properties:
                            key:
                              description: The key to select.
                              type: string
                            name:
                              default: ""
                              description: |-
                                Name of the referent.
                                This field is effectively required, but due to backwards compatibility is
                                allowed to be empty. Instances of this type with an empty value here are
                                almost certainly wrong.
                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                              type: string
                            optional:
                              description: Specify whether the ConfigMap or its key
                                must be defined
                              type: boolean
                          required:
                          - key
                          type: object
                          x-kubernetes-map-type: atomic
                        fieldRef:
                          description: |-
                            Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['<KEY>']`, `metadata.annotations['<KEY>']`,
                            spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.
                          properties:
                            apiVersion:
                              description: Version of the schema the FieldPath is
                                written in terms of, defaults to "v1".
                              type: string
                            fieldPath:
                              description: Path of the field to select in the specified
                                API version.
                              type: string
                          required:
                          - fieldPath
                          type: object
                          x-kubernetes-map-type: atomic
                        resourceFieldRef:
                          description: |-
                            Selects a resource of the container: only resources limits and requests
                            (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.
                          properties:
                            containerName:
                              description: 'Container name: required for volumes,
                                optional for env vars'
                              type: string
                            divisor:
                              anyOf:
                              - type: integer
                              - type: string
                              description: Specifies the output format of the exposed
                                resources, defaults to "1"
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            resource:
                              description: 'Required: resource to select'
                              type: string
                          required:
                          - resource
                          type: object
                          x-kubernetes-map-type: atomic
                        secretKeyRef:
                          description: Selects a key of a secret in the pod's namespace
                          properties:
                            key:
                              description: The key of the secret to select from.  Must
                                be a valid secret key.
                              type: string
                            name:
                              default: ""
                              description: |-
                                Name of the referent.
                                This field is effectively required, but due to backwards compatibility is
                                allowed to be empty. Instances of this type with an empty value here are
                                almost certainly wrong.
                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                              type: string
                            optional:
                              description: Specify whether the Secret or its key must
                                be defined
                              type: boolean
                          required:
                          - key
                          type: object
                          x-kubernetes-map-type: atomic
                      type: object
                  required:
                  - name
                  type: object
                type: array
              instanceType:
                description: InstanceType specifies the instance type required by
                  backup pod
                type: string
              logStop:
                description: LogStop indicates that will stop the log backup.
                type: boolean
              logTruncateUntil:
                description: |-
                  LogTruncateUntil is log backup truncate until timestamp.
                  Format supports TSO or datetime, e.g. '400036290571534337', '2018-05-11 01:42:23'.
                type: string
              mode:
                description: Mode is the backup mode, such as snapshot backup or log
                  backup.
                type: string
              nodeRole:
                description: NodeRole is the aws role or gcp service account that
                  the br node uses
                type: string
              options:
                description: Options is the parameters list of br, like --backupts=xxx
                items:
                  type: string
                type: array
              resourceRequirements:
                description: ResourceRequirements manage resources(cpu,memory) of
                  backup pod
                properties:
                  claims:
                    description: |-
                      Claims lists the names of resources, defined in spec.resourceClaims,
                      that are used by this container.

                      This is an alpha field and requires enabling the
                      DynamicResourceAllocation feature gate.

                      This field is immutable. It can only be set for containers.
                    items:
                      description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                      properties:
                        name:
                          description: |-
                            Name must match the name of one entry in pod.spec.resourceClaims of
                            the Pod where this field is used. It makes that resource available
                            inside a container.
                          type: string
                        request:
                          description: |-
                            Request is the name chosen for a request in the referenced claim.
                            If empty, everything from the claim is made available, otherwise
                            only the result of this request.
                          type: string
                      required:
                      - name
                      type: object
                    type: array
                    x-kubernetes-list-map-keys:
                    - name
                    x-kubernetes-list-type: map
                  limits:
                    additionalProperties:
                      anyOf:
                      - type: integer
                      - type: string
                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                      x-kubernetes-int-or-string: true
                    description: |-
                      Limits describes the maximum amount of compute resources allowed.
                      More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                    type: object
                  requests:
                    additionalProperties:
                      anyOf:
                      - type: integer
                      - type: string
                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                      x-kubernetes-int-or-string: true
                    description: |-
                      Requests describes the minimum amount of compute resources required.
                      If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                      otherwise to an implementation-defined value. Requests cannot exceed Limits.
                      More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                    type: object
                type: object
              storage:
                description: Storage is the target storage address, use s3 uri. like
                  gs://xxxx
                type: string
              tableFilter:
                description: TableFilter means table filter expression for 'db.table'
                  matching.
                items:
                  type: string
                type: array
            required:
            - clusterName
            type: object
          status:
            description: BackupStatus defines the observed state of Backup
            properties:
              backupPath:
                description: BackupPath is the location of the backup.
                type: string
              backupSize:
                description: BackupSize is the physical storage size taken by the
                  backup assets
                format: int64
                type: integer
              backupTS:
                description: BackupTS is the snapshot timestamp for snapshot backup
                  or start timestamp for log backup
                type: string
              bucketName:
                description: BucketName is the object store path of this backup
                type: string
              fromProvider:
                description: |-
                  FromProvider encodes the provider specific status of
                  the backup, e.g. target shoot name of the backup
                nullable: true
                type: object
                x-kubernetes-embedded-resource: true
                x-kubernetes-preserve-unknown-fields: true
              logCheckpointTs:
                description: LogCheckpointTs is the ts of log backup process
                type: string
              logSubCommandStatuses:
                additionalProperties:
                  description: LogSubCommandStatus is the log backup subcommand's
                    status.
                  properties:
                    command:
                      description: Command is the log backup subcommand.
                      type: string
                    conditions:
                      items:
                        description: BackupCondition describes the observed state
                          of a Backup at a certain point.
                        properties:
                          command:
                            type: string
                          lastTransitionTime:
                            format: date-time
                            nullable: true
                            type: string
                          message:
                            type: string
                          reason:
                            type: string
                          status:
                            type: string
                          type:
                            description: BackupConditionType represents a valid condition
                              of a Backup.
                            type: string
                        required:
                        - status
                        - type
                        type: object
                      nullable: true
                      type: array
                    logTruncatingUntil:
                      description: LogTruncatingUntil is log backup truncate until
                        timestamp which is used to mark the truncate command.
                      type: string
                    phase:
                      description: Phase is the command current phase.
                      type: string
                    timeCompleted:
                      description: TimeCompleted is the time at which the command
                        was completed.
                      format: date-time
                      nullable: true
                      type: string
                    timeStarted:
                      description: TimeStarted is the time at which the command was
                        started.
                      format: date-time
                      nullable: true
                      type: string
                  type: object
                description: LogSubCommandStatuses is the detail status of log backup
                  subcommands, record each command separately, but only record the
                  last command.
                type: object
              logTruncateUntil:
                description: LogTruncateUntil is log backup truncate until timestamp
                  which will be the same as Spec.LogTruncateUntil when truncate is
                  complete
                type: string
              phase:
                description: Phase denotes current backup progress
                type: string
            required:
            - phase
            type: object
        required:
        - spec
        type: object
    served: true
    storage: true
    subresources:
      status: {}
