# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    operator.solr.apache.org/version: v0.9.1
    argocd.argoproj.io/sync-options: Replace=true
    controller-gen.kubebuilder.io/version: v0.16.4
  name: solrbackups.solr.apache.org
spec:
  group: solr.apache.org
  names:
    kind: SolrBackup
    listKind: SolrBackupList
    plural: solrbackups
    singular: solrbackup
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: Solr Cloud
      jsonPath: .spec.solrCloud
      name: Cloud
      type: string
    - description: Most recent time the backup started
      jsonPath: .status.startTimestamp
      name: Started
      type: date
    - description: Whether the most recent backup has finished
      jsonPath: .status.finished
      name: Finished
      type: boolean
    - description: Whether the most recent backup was successful
      jsonPath: .status.successful
      name: Successful
      type: boolean
    - description: Next scheduled time for a recurrent backup
      format: date-time
      jsonPath: .status.nextScheduledTime
      name: NextBackup
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1beta1
    schema:
      openAPIV3Schema:
        description: SolrBackup is the Schema for the solrbackups 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: SolrBackupSpec defines the desired state of SolrBackup
            properties:
              collections:
                description: The list of collections to backup.
                items:
                  type: string
                type: array
              location:
                description: The location to store the backup in the specified backup
                  repository.
                type: string
              recurrence:
                description: |-
                  Set this backup to be taken recurrently, with options for scheduling and storage.

                  NOTE: This is only supported for Solr Clouds version 8.9+, as it uses the incremental backup API.
                properties:
                  disabled:
                    default: false
                    description: Disable the recurring backups. Note this will not
                      affect any currently-running backup.
                    type: boolean
                  maxSaved:
                    default: 5
                    description: |-
                      Define the number of backup points to save for this backup at any given time.
                      The oldest backups will be deleted if too many exist when a backup is taken.
                      If not provided, this defaults to 5.
                    minimum: 1
                    type: integer
                  schedule:
                    description: |-
                      Perform a backup on the given schedule, in CRON format.

                      Multiple CRON syntaxes are supported
                        - Standard CRON (e.g. "CRON_TZ=Asia/Seoul 0 6 * * ?")
                        - Predefined Schedules (e.g. "@yearly", "@weekly", "@daily", etc.)
                        - Intervals (e.g. "@every 10h30m")

                      For more information please check this reference:
                      https://pkg.go.dev/github.com/robfig/cron/v3?utm_source=godoc#hdr-CRON_Expression_Format
                    type: string
                required:
                - schedule
                type: object
              repositoryName:
                description: |-
                  The name of the repository to use for the backup.  Defaults to "legacy_local_repository" if not specified (the
                  auto-configured repository for legacy singleton volumes).
                maxLength: 100
                minLength: 1
                pattern: '[a-zA-Z0-9]([-_a-zA-Z0-9]*[a-zA-Z0-9])?'
                type: string
              solrCloud:
                description: A reference to the SolrCloud to create a backup for
                maxLength: 63
                minLength: 1
                pattern: '[a-z0-9]([-a-z0-9]*[a-z0-9])?'
                type: string
            required:
            - solrCloud
            type: object
          status:
            description: SolrBackupStatus defines the observed state of SolrBackup
            properties:
              collectionBackupStatuses:
                description: The status of each collection's backup progress
                items:
                  description: CollectionBackupStatus defines the progress of a Solr
                    Collection's backup
                  properties:
                    asyncBackupStatus:
                      description: The status of the asynchronous backup call to solr
                      type: string
                    backupName:
                      description: BackupName of this collection's backup in Solr
                      type: string
                    collection:
                      description: Solr Collection name
                      type: string
                    finishTimestamp:
                      description: Time that the collection backup finished at
                      format: date-time
                      type: string
                    finished:
                      description: Whether the backup has finished
                      type: boolean
                    inProgress:
                      description: Whether the collection is being backed up
                      type: boolean
                    startTimestamp:
                      description: Time that the collection backup started at
                      format: date-time
                      type: string
                    successful:
                      description: Whether the backup was successful
                      type: boolean
                  required:
                  - collection
                  type: object
                type: array
              finishTimestamp:
                description: The time that this backup was finished
                format: date-time
                type: string
              finished:
                description: Whether the backup has finished
                type: boolean
              history:
                description: The status history of recurring backups
                items:
                  description: IndividualSolrBackupStatus defines the observed state
                    of a single issued SolrBackup
                  properties:
                    collectionBackupStatuses:
                      description: The status of each collection's backup progress
                      items:
                        description: CollectionBackupStatus defines the progress of
                          a Solr Collection's backup
                        properties:
                          asyncBackupStatus:
                            description: The status of the asynchronous backup call
                              to solr
                            type: string
                          backupName:
                            description: BackupName of this collection's backup in
                              Solr
                            type: string
                          collection:
                            description: Solr Collection name
                            type: string
                          finishTimestamp:
                            description: Time that the collection backup finished
                              at
                            format: date-time
                            type: string
                          finished:
                            description: Whether the backup has finished
                            type: boolean
                          inProgress:
                            description: Whether the collection is being backed up
                            type: boolean
                          startTimestamp:
                            description: Time that the collection backup started at
                            format: date-time
                            type: string
                          successful:
                            description: Whether the backup was successful
                            type: boolean
                        required:
                        - collection
                        type: object
                      type: array
                    finishTimestamp:
                      description: The time that this backup was finished
                      format: date-time
                      type: string
                    finished:
                      description: Whether the backup has finished
                      type: boolean
                    solrVersion:
                      description: Version of the Solr being backed up
                      type: string
                    startTimestamp:
                      description: The time that this backup was initiated
                      format: date-time
                      type: string
                    successful:
                      description: Whether the backup was successful
                      type: boolean
                  type: object
                type: array
              nextScheduledTime:
                description: The scheduled time for the next backup to occur
                format: date-time
                type: string
              solrVersion:
                description: Version of the Solr being backed up
                type: string
              startTimestamp:
                description: The time that this backup was initiated
                format: date-time
                type: string
              successful:
                description: Whether the backup was successful
                type: boolean
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}