---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  labels:
    component: velero
  annotations:
    controller-gen.kubebuilder.io/version: v0.12.0
  name: podvolumerestores.velero.io
spec:
  group: velero.io
  names:
    kind: PodVolumeRestore
    listKind: PodVolumeRestoreList
    plural: podvolumerestores
    singular: podvolumerestore
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: Namespace of the pod containing the volume to be restored
      jsonPath: .spec.pod.namespace
      name: Namespace
      type: string
    - description: Name of the pod containing the volume to be restored
      jsonPath: .spec.pod.name
      name: Pod
      type: string
    - description: The type of the uploader to handle data transfer
      jsonPath: .spec.uploaderType
      name: Uploader Type
      type: string
    - description: Name of the volume to be restored
      jsonPath: .spec.volume
      name: Volume
      type: string
    - description: Pod Volume Restore status such as New/InProgress
      jsonPath: .status.phase
      name: Status
      type: string
    - description: Pod Volume Restore status such as New/InProgress
      format: int64
      jsonPath: .status.progress.totalBytes
      name: TotalBytes
      type: integer
    - description: Pod Volume Restore status such as New/InProgress
      format: int64
      jsonPath: .status.progress.bytesDone
      name: BytesDone
      type: integer
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1
    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: PodVolumeRestoreSpec is the specification for a PodVolumeRestore.
            properties:
              backupStorageLocation:
                description: BackupStorageLocation is the name of the backup storage
                  location where the backup repository is stored.
                type: string
              pod:
                description: Pod is a reference to the pod containing the volume to
                  be restored.
                properties:
                  apiVersion:
                    description: API version of the referent.
                    type: string
                  fieldPath:
                    description: 'If referring to a piece of an object instead of
                      an entire object, this string should contain a valid JSON/Go
                      field access statement, such as desiredState.manifest.containers[2].
                      For example, if the object reference is to a container within
                      a pod, this would take on a value like: "spec.containers{name}"
                      (where "name" refers to the name of the container that triggered
                      the event) or if no container name is specified "spec.containers[2]"
                      (container with index 2 in this pod). This syntax is chosen
                      only to have some well-defined way of referencing a part of
                      an object. TODO: this design is not final and this field is
                      subject to change in the future.'
                    type: string
                  kind:
                    description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
                    type: string
                  name:
                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                    type: string
                  namespace:
                    description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
                    type: string
                  resourceVersion:
                    description: 'Specific resourceVersion to which this reference
                      is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
                    type: string
                  uid:
                    description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
                    type: string
                type: object
                x-kubernetes-map-type: atomic
              repoIdentifier:
                description: RepoIdentifier is the backup repository identifier.
                type: string
              snapshotID:
                description: SnapshotID is the ID of the volume snapshot to be restored.
                type: string
              sourceNamespace:
                description: SourceNamespace is the original namespace for namaspace
                  mapping.
                type: string
              uploaderSettings:
                additionalProperties:
                  type: string
                description: UploaderSettings are a map of key-value pairs that should
                  be applied to the uploader configuration.
                nullable: true
                type: object
              uploaderType:
                description: UploaderType is the type of the uploader to handle the
                  data transfer.
                enum:
                - kopia
                - restic
                - ""
                type: string
              volume:
                description: Volume is the name of the volume within the Pod to be
                  restored.
                type: string
            required:
            - backupStorageLocation
            - pod
            - repoIdentifier
            - snapshotID
            - sourceNamespace
            - volume
            type: object
          status:
            description: PodVolumeRestoreStatus is the current status of a PodVolumeRestore.
            properties:
              completionTimestamp:
                description: CompletionTimestamp records the time a restore was completed.
                  Completion time is recorded even on failed restores. The server's
                  time is used for CompletionTimestamps
                format: date-time
                nullable: true
                type: string
              message:
                description: Message is a message about the pod volume restore's status.
                type: string
              phase:
                description: Phase is the current state of the PodVolumeRestore.
                enum:
                - New
                - InProgress
                - Completed
                - Failed
                type: string
              progress:
                description: Progress holds the total number of bytes of the snapshot
                  and the current number of restored bytes. This can be used to display
                  progress information about the restore operation.
                properties:
                  bytesDone:
                    format: int64
                    type: integer
                  totalBytes:
                    format: int64
                    type: integer
                type: object
              startTimestamp:
                description: StartTimestamp records the time a restore was started.
                  The server's time is used for StartTimestamps
                format: date-time
                nullable: true
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources: {}
