---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.16.5
  labels:
    component: velero
  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.
                    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: {}
