# 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: v2
name: solr-operator
description: The Solr Operator enables easy management of Solr resources within Kubernetes.
version: 0.4.0-prerelease
appVersion: v0.4.0-prerelease
kubeVersion: ">= 1.16.0-0"
home: https://solr.apache.org/operator
sources:
  - https://github.com/apache/solr-operator
keywords:
  - solr
  - apache
  - search
  - lucene
  - operator
maintainers:
  - name: Solr Dev Community
    email: dev@solr.apache.org
  - name: Houston Putman
    email: houston@apache.org
icon: https://solr.apache.org/theme/images/identity/Solr_Logo_on_white.png
dependencies:
  - name: 'zookeeper-operator'
    version: 0.2.9
    repository: https://charts.pravega.io
    condition: zookeeper-operator.install
annotations:
  artifacthub.io/operator: "true"
  artifacthub.io/operatorCapabilities: Seamless Upgrades
  artifacthub.io/prerelease: "true"
  artifacthub.io/recommendations: |
    - url: https://artifacthub.io/packages/helm/apache-solr/solr
  artifacthub.io/links: |
    - name: "Tutorials"
      url: https://solr.apache.org/operator/resources#tutorials
  artifacthub.io/signKey: |
    fingerprint: <fingerprint>
    url: https://dist.apache.org/repos/dist/release/solr/KEYS
  # Add change log for a single release here.
  # Allowed syntax is described at: https://artifacthub.io/docs/topics/annotations/helm/#example
  artifacthub.io/changes: |
    - kind: added
      description: Ability to schedule automatic restarts
      links:
        - name: Github Issue
          url: https://github.com/apache/solr-operator/issues/281
        - name: Github PR
          url: https://github.com/apache/solr-operator/pull/279
    - kind: removed
      description: "Removed deprecated Solr Operator Helm chart option `useZkOperator`, use `zookeeper-operator.use` instead"
      links:
        - name: Github Issue
          url: https://github.com/apache/solr-operator/issues/286
        - name: Github PR
          url: https://github.com/apache/solr-operator/pull/288
        - name: Deprecating Github PR
          url: https://github.com/apache/solr-operator/pull/231
    - kind: changed
      description: Default Solr Version upgraded to 8.9, does not affect existing clouds
      links:
        - name: Github Issue
          url: https://github.com/apache/solr-operator/issues/285
        - name: Github PR
          url: https://github.com/apache/solr-operator/pull/287
    - kind: added
      description: Customize serviceAccountName for SolrCloud and SolrPrometheusExporter
      links:
        - name: Github Issue
          url: https://github.com/apache/solr-operator/issues/264
        - name: Github PR
          url: https://github.com/apache/solr-operator/pull/283
    - kind: added
      description: Introduced ephemeral option for Zookeeper storage
      links:
        - name: Github Issue
          url: https://github.com/apache/solr-operator/issues/259
        - name: Github PR
          url: https://github.com/apache/solr-operator/pull/284
    - kind: security
      description: Changed Solr Operator base Docker image to reduce vulnerabilities.
      links:
        - name: Github Issue
          url: https://github.com/apache/solr-operator/issues/294
        - name: Github PR
          url: https://github.com/apache/solr-operator/pull/295
    - kind: added
      description: Ability to customize probes for PrometheusExporter
      links:
        - name: Github Issue
          url: https://github.com/apache/solr-operator/issues/282
        - name: Github PR
          url: https://github.com/apache/solr-operator/pull/297
    - kind: security
      description: Remove users role from the all permission in the initial security.json
      links:
        - name: Github Issue
          url: https://github.com/apache/solr-operator/issues/274
        - name: Github PR
          url: https://github.com/apache/solr-operator/pull/299
    - kind: fixed
      description: Grant access to the /admin/zookeeper/status path to the k8s role in the initial security.json
      links:
        - name: Github Issue
          url: https://github.com/apache/solr-operator/issues/289
        - name: Github PR
          url: https://github.com/apache/solr-operator/pull/299
  artifacthub.io/images: |
    - name: solr-operator
      image: apache/solr-operator:v0.4.0-prerelease
  artifacthub.io/crds: |
    - kind: SolrCloud
      version: v1beta1
      name: solrcloud.solr.apache.org
      displayName: Solr Cloud
      description: A distributed Solr Cloud cluster
    - kind: SolrPrometheusExporter
      version: v1beta1
      name: solrprometheusexporter.solr.apache.org
      displayName: Solr Prometheus Exporter
      description: A Prometheus metrics exporter for Solr
    - kind: SolrBackup
      version: v1beta1
      name: solrbackup.solr.apache.org
      displayName: Solr Backup
      description: A backup mechanism for Solr
  artifacthub.io/crdsExamples: |
    - apiVersion: solr.apache.org/v1beta1
      kind: SolrCloud
      metadata:
        name: example
      spec:
        dataStorage:
          persistent:
            reclaimPolicy: Delete
            pvcTemplate:
              spec:
                resources:
                  requests:
                    storage: "20Gi"
        replicas: 3
        solrImage:
          tag: 8.7.0
        solrJavaMem: "-Xms4g -Xmx4g"
        customSolrKubeOptions:
          podOptions:
            resources:
              requests:
                memory: "6G"
        zookeeperRef:
          provided:
            replicas: 3
        solrOpts: "-Dsolr.autoSoftCommit.maxTime=10000"
        solrGCTune: "-XX:SurvivorRatio=4 -XX:TargetSurvivorRatio=90 -XX:MaxTenuringThreshold=8"
    - apiVersion: solr.apache.org/v1beta1
      kind: SolrPrometheusExporter
      metadata:
        name: example
      spec:
        solrReference:
          cloud:
            name: "example"
        numThreads: 4
        image:
          tag: 8.7.0
