---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.16.3
  name: restores.cloud.pingcap.com
spec:
  group: cloud.pingcap.com
  names:
    categories:
    - infra-api
    kind: Restore
    listKind: RestoreList
    plural: restores
    singular: restore
  preserveUnknownFields: false
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .spec.clusterName
      name: Cluster
      type: string
    - jsonPath: .spec.from.backup
      name: From
      type: string
    - jsonPath: .status.phase
      name: PHASE
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: AGE
      type: date
    name: v1
    schema:
      openAPIV3Schema:
        description: Restore is the Schema for the restores 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: RestoreSpec defines the desired state of Restore
            properties:
              clusterName:
                description: |-
                  ClusterName specifies the name of the target cluster where data is restored to,
                  the cluster must exist in the same namespace with Restore
                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
                type: object
              env:
                description: Env adds environment variables to restore 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:
                              description: |-
                                Name of the referent.
                                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:
                              description: |-
                                Name of the referent.
                                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
              from:
                description: From specified where the backup data locates
                properties:
                  PiTRRestoredTS:
                    description: |-
                      PiTRRestoredTS is the PiTR restored ts.
                      it is used when LogBackup is specified
                    type: string
                  backup:
                    description: |-
                      Backup is the name of the target Backup object, if this field is specified,
                      the backup data will be retrieved from the Backup job.
                      The Backup must exist in the same namespace if specified.
                    type: string
                  bucket:
                    description: |-
                      (Deprecated) RestoreBucketInfo is the bucket info of the backup data
                      it is used in the case that the restore with workflow
                      Please use Region, SnapshotBackupStorage and LogBackupStorage fields instead
                    properties:
                      backupPrefix:
                        description: BackupPrefix is the prefix of the backup file.
                        type: string
                      cloudProvider:
                        description: CloudProvider is the cloud provider of the bucket
                        type: string
                      logBackupPrefix:
                        description: LogBackupPrefix is the prefix of the log backup
                          file.
                        type: string
                      name:
                        description: Name is the name of the bucket
                        type: string
                      region:
                        description: Region is the region of the bucket
                        type: string
                    type: object
                  logBackup:
                    description: |-
                      LogBackup represents to execute PiTR
                      it is the name of Backup object with Log mode
                      its usage is same as Backup field
                    type: string
                  logBackupStorage:
                    description: LogBackupStorage is the log backup bucket storage
                    type: string
                  region:
                    description: Region is the region of the backup bucket
                    type: string
                  snapshotBackupStorage:
                    description: SnapshotBackupStorage is the snapshot backup bucket
                      storage
                    type: string
                required:
                - backup
                type: object
              instanceType:
                description: InstanceType specifies the instance type required by
                  restore pod
                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 --filters=xxx
                items:
                  type: string
                type: array
              resourceRequirements:
                description: ResourceRequirements manage resources(cpu,memory) of
                  restore 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
                      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
            required:
            - clusterName
            - from
            type: object
          status:
            description: RestoreStatus defines the observed state of Restore
            properties:
              phase:
                description: Phase denotes the current restore progress
                type: string
              progresses:
                items:
                  properties:
                    lastTransitionTime:
                      description: LastTransitionTime is the update time
                      format: date-time
                      nullable: true
                      type: string
                    progress:
                      description: Progress is the restore progress percentage value
                      format: int32
                      type: integer
                    step:
                      description: Step is the step name of progress
                      type: string
                  type: object
                type: array
            required:
            - phase
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
