# 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: solr.apache.org/v1beta1
kind: SolrCloud
metadata:
  name: example
spec:
  dataStorage:
    persistent:
      reclaimPolicy: Delete
      pvcTemplate:
        spec:
          resources:
            requests:
              storage: "5Gi"
    backupRestoreOptions:
      volume:
        persistentVolumeClaim:
          claimName: "pvc-test"
  replicas: 3
  solrImage:
    tag: 8.7.0
  solrJavaMem: "-Xms1g -Xmx3g"
  customSolrKubeOptions:
    podOptions:
      resources:
        limits:
          memory: "1G"
        requests:
          cpu: "65m"
          memory: "156Mi"
  zookeeperRef:
    provided:
      chroot: "/this/will/be/auto/created"
      persistence:
        spec:
          storageClassName: "hostpath"
          resources:
            requests:
              storage: "5Gi"
      replicas: 1
      zookeeperPodPolicy:
        resources:
          limits:
            memory: "1G"
          requests:
            cpu: "65m"
            memory: "156Mi"
  solrOpts: "-Dsolr.autoSoftCommit.maxTime=10000"
  solrGCTune: "-XX:SurvivorRatio=4 -XX:TargetSurvivorRatio=90 -XX:MaxTenuringThreshold=8"
