---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.17.3
  name: backups.postgresql.cnpg.io
spec:
  group: postgresql.cnpg.io
  names:
    kind: Backup
    listKind: BackupList
    plural: backups
    singular: backup
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
        - jsonPath: .spec.cluster.name
          name: Cluster
          type: string
        - jsonPath: .spec.method
          name: Method
          type: string
        - jsonPath: .status.phase
          name: Phase
          type: string
        - jsonPath: .status.error
          name: Error
          type: string
      name: v1
      schema:
        openAPIV3Schema:
          description: A Backup resource is a request for a PostgreSQL backup by
            the user.
          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: |-
                Specification of the desired behavior of the backup.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
              properties:
                cluster:
                  description: The cluster to backup
                  properties:
                    name:
                      description: Name of the referent.
                      type: string
                  required:
                    - name
                  type: object
                method:
                  default: barmanObjectStore
                  description: |-
                    The backup method to be used, possible options are `barmanObjectStore`,
                    `volumeSnapshot` or `plugin`. Defaults to: `barmanObjectStore`.
                  enum:
                    - barmanObjectStore
                    - volumeSnapshot
                    - plugin
                  type: string
                online:
                  description: |-
                    Whether the default type of backup with volume snapshots is
                    online/hot (`true`, default) or offline/cold (`false`)
                    Overrides the default setting specified in the cluster field '.spec.backup.volumeSnapshot.online'
                  type: boolean
                onlineConfiguration:
                  description: |-
                    Configuration parameters to control the online/hot backup with volume snapshots
                    Overrides the default settings specified in the cluster '.backup.volumeSnapshot.onlineConfiguration' stanza
                  properties:
                    immediateCheckpoint:
                      description: |-
                        Control whether the I/O workload for the backup initial checkpoint will
                        be limited, according to the `checkpoint_completion_target` setting on
                        the PostgreSQL server. If set to true, an immediate checkpoint will be
                        used, meaning PostgreSQL will complete the checkpoint as soon as
                        possible. `false` by default.
                      type: boolean
                    waitForArchive:
                      default: true
                      description: |-
                        If false, the function will return immediately after the backup is completed,
                        without waiting for WAL to be archived.
                        This behavior is only useful with backup software that independently monitors WAL archiving.
                        Otherwise, WAL required to make the backup consistent might be missing and make the backup useless.
                        By default, or when this parameter is true, pg_backup_stop will wait for WAL to be archived when archiving is
                        enabled.
                        On a standby, this means that it will wait only when archive_mode = always.
                        If write activity on the primary is low, it may be useful to run pg_switch_wal on the primary in order to trigger
                        an immediate segment switch.
                      type: boolean
                  type: object
                pluginConfiguration:
                  description: Configuration parameters passed to the plugin 
                    managing this backup
                  properties:
                    name:
                      description: Name is the name of the plugin managing this 
                        backup
                      type: string
                    parameters:
                      additionalProperties:
                        type: string
                      description: |-
                        Parameters are the configuration parameters passed to the backup
                        plugin for this backup
                      type: object
                  required:
                    - name
                  type: object
                target:
                  description: |-
                    The policy to decide which instance should perform this backup. If empty,
                    it defaults to `cluster.spec.backup.target`.
                    Available options are empty string, `primary` and `prefer-standby`.
                    `primary` to have backups run always on primary instances,
                    `prefer-standby` to have backups run preferably on the most updated
                    standby, if available.
                  enum:
                    - primary
                    - prefer-standby
                  type: string
              required:
                - cluster
              type: object
            status:
              description: |-
                Most recently observed status of the backup. This data may not be up to
                date. Populated by the system. Read-only.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
              properties:
                azureCredentials:
                  description: The credentials to use to upload data to Azure 
                    Blob Storage
                  properties:
                    connectionString:
                      description: The connection string to be used
                      properties:
                        key:
                          description: The key to select
                          type: string
                        name:
                          description: Name of the referent.
                          type: string
                      required:
                        - key
                        - name
                      type: object
                    inheritFromAzureAD:
                      description: Use the Azure AD based authentication without
                        providing explicitly the keys.
                      type: boolean
                    storageAccount:
                      description: The storage account where to upload data
                      properties:
                        key:
                          description: The key to select
                          type: string
                        name:
                          description: Name of the referent.
                          type: string
                      required:
                        - key
                        - name
                      type: object
                    storageKey:
                      description: |-
                        The storage account key to be used in conjunction
                        with the storage account name
                      properties:
                        key:
                          description: The key to select
                          type: string
                        name:
                          description: Name of the referent.
                          type: string
                      required:
                        - key
                        - name
                      type: object
                    storageSasToken:
                      description: |-
                        A shared-access-signature to be used in conjunction with
                        the storage account name
                      properties:
                        key:
                          description: The key to select
                          type: string
                        name:
                          description: Name of the referent.
                          type: string
                      required:
                        - key
                        - name
                      type: object
                  type: object
                backupId:
                  description: The ID of the Barman backup
                  type: string
                backupLabelFile:
                  description: Backup label file content as returned by Postgres
                    in case of online (hot) backups
                  format: byte
                  type: string
                backupName:
                  description: The Name of the Barman backup
                  type: string
                beginLSN:
                  description: The starting xlog
                  type: string
                beginWal:
                  description: The starting WAL
                  type: string
                commandError:
                  description: The backup command output in case of error
                  type: string
                commandOutput:
                  description: Unused. Retained for compatibility with old 
                    versions.
                  type: string
                destinationPath:
                  description: |-
                    The path where to store the backup (i.e. s3://bucket/path/to/folder)
                    this path, with different destination folders, will be used for WALs
                    and for data. This may not be populated in case of errors.
                  type: string
                encryption:
                  description: Encryption method required to S3 API
                  type: string
                endLSN:
                  description: The ending xlog
                  type: string
                endWal:
                  description: The ending WAL
                  type: string
                endpointCA:
                  description: |-
                    EndpointCA store the CA bundle of the barman endpoint.
                    Useful when using self-signed certificates to avoid
                    errors with certificate issuer and barman-cloud-wal-archive.
                  properties:
                    key:
                      description: The key to select
                      type: string
                    name:
                      description: Name of the referent.
                      type: string
                  required:
                    - key
                    - name
                  type: object
                endpointURL:
                  description: |-
                    Endpoint to be used to upload data to the cloud,
                    overriding the automatic endpoint discovery
                  type: string
                error:
                  description: The detected error
                  type: string
                googleCredentials:
                  description: The credentials to use to upload data to Google 
                    Cloud Storage
                  properties:
                    applicationCredentials:
                      description: The secret containing the Google Cloud 
                        Storage JSON file with the credentials
                      properties:
                        key:
                          description: The key to select
                          type: string
                        name:
                          description: Name of the referent.
                          type: string
                      required:
                        - key
                        - name
                      type: object
                    gkeEnvironment:
                      description: |-
                        If set to true, will presume that it's running inside a GKE environment,
                        default to false.
                      type: boolean
                  type: object
                instanceID:
                  description: Information to identify the instance where the 
                    backup has been taken from
                  properties:
                    ContainerID:
                      description: The container ID
                      type: string
                    podName:
                      description: The pod name
                      type: string
                  type: object
                method:
                  description: The backup method being used
                  type: string
                online:
                  description: Whether the backup was online/hot (`true`) or 
                    offline/cold (`false`)
                  type: boolean
                phase:
                  description: The last backup status
                  type: string
                pluginMetadata:
                  additionalProperties:
                    type: string
                  description: A map containing the plugin metadata
                  type: object
                s3Credentials:
                  description: The credentials to use to upload data to S3
                  properties:
                    accessKeyId:
                      description: The reference to the access key id
                      properties:
                        key:
                          description: The key to select
                          type: string
                        name:
                          description: Name of the referent.
                          type: string
                      required:
                        - key
                        - name
                      type: object
                    inheritFromIAMRole:
                      description: Use the role based authentication without 
                        providing explicitly the keys.
                      type: boolean
                    region:
                      description: The reference to the secret containing the 
                        region name
                      properties:
                        key:
                          description: The key to select
                          type: string
                        name:
                          description: Name of the referent.
                          type: string
                      required:
                        - key
                        - name
                      type: object
                    secretAccessKey:
                      description: The reference to the secret access key
                      properties:
                        key:
                          description: The key to select
                          type: string
                        name:
                          description: Name of the referent.
                          type: string
                      required:
                        - key
                        - name
                      type: object
                    sessionToken:
                      description: The references to the session key
                      properties:
                        key:
                          description: The key to select
                          type: string
                        name:
                          description: Name of the referent.
                          type: string
                      required:
                        - key
                        - name
                      type: object
                  type: object
                serverName:
                  description: |-
                    The server name on S3, the cluster name is used if this
                    parameter is omitted
                  type: string
                snapshotBackupStatus:
                  description: Status of the volumeSnapshot backup
                  properties:
                    elements:
                      description: The elements list, populated with the 
                        gathered volume snapshots
                      items:
                        description: BackupSnapshotElementStatus is a volume 
                          snapshot that is part of a volume snapshot method 
                          backup
                        properties:
                          name:
                            description: Name is the snapshot resource name
                            type: string
                          tablespaceName:
                            description: |-
                              TablespaceName is the name of the snapshotted tablespace. Only set
                              when type is PG_TABLESPACE
                            type: string
                          type:
                            description: Type is tho role of the snapshot in the
                              cluster, such as PG_DATA, PG_WAL and PG_TABLESPACE
                            type: string
                        required:
                          - name
                          - type
                        type: object
                      type: array
                  type: object
                startedAt:
                  description: When the backup was started
                  format: date-time
                  type: string
                stoppedAt:
                  description: When the backup was terminated
                  format: date-time
                  type: string
                tablespaceMapFile:
                  description: Tablespace map file content as returned by 
                    Postgres in case of online (hot) backups
                  format: byte
                  type: string
              type: object
          required:
            - metadata
            - spec
          type: object
      served: true
      storage: true
      subresources:
        status: {}
