apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    api-approved.openshift.io: https://github.com/openshift/api/pull/1482
    include.release.openshift.io/ibm-cloud-managed: "true"
    include.release.openshift.io/self-managed-high-availability: "true"
    include.release.openshift.io/single-node-developer: "true"
    release.openshift.io/feature-set: TechPreviewNoUpgrade
  name: backups.config.openshift.io
spec:
  group: config.openshift.io
  names:
    kind: Backup
    listKind: BackupList
    plural: backups
    singular: backup
  scope: Cluster
  versions:
  - name: v1alpha1
    schema:
      openAPIV3Schema:
        description: "Backup provides configuration for performing backups of the
          openshift cluster. \n Compatibility level 4: No compatibility is provided,
          the API can change at any point for any reason. These capabilities should
          not be used by applications needing long term support."
        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: spec holds user settable values for configuration
            properties:
              etcd:
                description: etcd specifies the configuration for periodic backups
                  of the etcd cluster
                properties:
                  pvcName:
                    description: PVCName specifies the name of the PersistentVolumeClaim
                      (PVC) which binds a PersistentVolume where the etcd backup files
                      would be saved The PVC itself must always be created in the
                      "openshift-etcd" namespace If the PVC is left unspecified ""
                      then the platform will choose a reasonable default location
                      to save the backup. In the future this would be backups saved
                      across the control-plane master nodes.
                    type: string
                  retentionPolicy:
                    description: RetentionPolicy defines the retention policy for
                      retaining and deleting existing backups.
                    properties:
                      retentionNumber:
                        description: RetentionNumber configures the retention policy
                          based on the number of backups
                        properties:
                          maxNumberOfBackups:
                            description: MaxNumberOfBackups defines the maximum number
                              of backups to retain. If the existing number of backups
                              saved is equal to MaxNumberOfBackups then the oldest
                              backup will be removed before a new backup is initiated.
                            minimum: 1
                            type: integer
                        required:
                        - maxNumberOfBackups
                        type: object
                      retentionSize:
                        description: RetentionSize configures the retention policy
                          based on the size of backups
                        properties:
                          maxSizeOfBackupsGb:
                            description: MaxSizeOfBackupsGb defines the total size
                              in GB of backups to retain. If the current total size
                              backups exceeds MaxSizeOfBackupsGb then the oldest backup
                              will be removed before a new backup is initiated.
                            minimum: 1
                            type: integer
                        required:
                        - maxSizeOfBackupsGb
                        type: object
                      retentionType:
                        allOf:
                        - enum:
                          - RetentionNumber
                          - RetentionSize
                        - enum:
                          - ""
                          - RetentionNumber
                          - RetentionSize
                        description: RetentionType sets the type of retention policy.
                          Currently, the only valid policies are retention by number
                          of backups (RetentionNumber), by the size of backups (RetentionSize).
                          More policies or types may be added in the future. Empty
                          string means no opinion and the platform is left to choose
                          a reasonable default which is subject to change without
                          notice. The current default is RetentionNumber with 15 backups
                          kept.
                        type: string
                    required:
                    - retentionType
                    type: object
                  schedule:
                    description: 'Schedule defines the recurring backup schedule in
                      Cron format every 2 hours: 0 */2 * * * every day at 3am: 0 3
                      * * * Empty string means no opinion and the platform is left
                      to choose a reasonable default which is subject to change without
                      notice. The current default is "no backups", but will change
                      in the future.'
                    pattern: ^(@(annually|yearly|monthly|weekly|daily|hourly))|(\*|(?:\*|(?:[0-9]|(?:[1-5][0-9])))\/(?:[0-9]|(?:[1-5][0-9]))|(?:[0-9]|(?:[1-5][0-9]))(?:(?:\-[0-9]|\-(?:[1-5][0-9]))?|(?:\,(?:[0-9]|(?:[1-5][0-9])))*))
                      (\*|(?:\*|(?:\*|(?:[0-9]|1[0-9]|2[0-3])))\/(?:[0-9]|1[0-9]|2[0-3])|(?:[0-9]|1[0-9]|2[0-3])(?:(?:\-(?:[0-9]|1[0-9]|2[0-3]))?|(?:\,(?:[0-9]|1[0-9]|2[0-3]))*))
                      (\*|(?:[1-9]|(?:[12][0-9])|3[01])(?:(?:\-(?:[1-9]|(?:[12][0-9])|3[01]))?|(?:\,(?:[1-9]|(?:[12][0-9])|3[01]))*))
                      (\*|(?:[1-9]|1[012]|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)(?:(?:\-(?:[1-9]|1[012]|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))?|(?:\,(?:[1-9]|1[012]|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))*))
                      (\*|(?:[0-6]|SUN|MON|TUE|WED|THU|FRI|SAT)(?:(?:\-(?:[0-6]|SUN|MON|TUE|WED|THU|FRI|SAT))?|(?:\,(?:[0-6]|SUN|MON|TUE|WED|THU|FRI|SAT))*))$
                    type: string
                  timeZone:
                    description: The time zone name for the given schedule, see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones.
                      If not specified, this will default to the time zone of the
                      kube-controller-manager process. See https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/#time-zones
                    pattern: ^([A-Za-z_]+([+-]*0)*|[A-Za-z_]+(\/[A-Za-z_]+){1,2})(\/GMT[+-]\d{1,2})?$
                    type: string
                type: object
            required:
            - etcd
            type: object
          status:
            description: status holds observed values from the cluster. They may not
              be overridden.
            type: object
        required:
        - spec
        type: object
    served: true
    storage: true
    subresources:
      status: {}
