#
# 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: v1
kind: ConfigMap
metadata:
    name: bookie-config
data:
    PULSAR_MEM: "\" -Xms512m -Xmx512m -XX:MaxDirectMemorySize=1g\""
    dbStorage_writeCacheMaxSizeMb: "256" # Write cache size (direct memory)
    dbStorage_readAheadCacheMaxSizeMb: "256" # Read cache size (direct memory)
    zkServers: zk-0.zookeeper,zk-1.zookeeper,zk-2.zookeeper
    statsProviderClass: org.apache.bookkeeper.stats.PrometheusMetricsProvider
---

## BookKeeper servers need to access the local disks and the pods
## cannot be moved across different nodes.
## For this reason, we run BK as a daemon set, one for each node in the
## cluster, unless restricted by label selectors
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
    name: bookie
    labels:
        app: pulsar
        component: bookkeeper
spec:
    template:
        metadata:
            labels:
                app: pulsar
                component: bookkeeper
                # Specify cluster to allow aggregation by cluster in
                # the metrics
                cluster: us-central
            annotations:
                prometheus.io/scrape: "true"
                prometheus.io/port: "8000"

        spec:
            containers:
              - name: bookie
                image: apachepulsar/pulsar:latest
                command: ["sh", "-c"]
                args:
                  - >
                    bin/apply-config-from-env.py conf/bookkeeper.conf &&
                    bin/apply-config-from-env.py conf/pulsar_env.sh &&
                    bin/pulsar bookie
                ports:
                  - containerPort: 3181
                    name: client
                envFrom:
                  - configMapRef:
                        name: bookie-config
                env:
                  - name: advertisedAddress
                    valueFrom:
                        fieldRef:
                            fieldPath: status.hostIP

                volumeMounts:
                  - name: journal-disk
                    mountPath: /pulsar/data/bookkeeper/journal
                  - name: ledgers-disk
                    mountPath: /pulsar/data/bookkeeper/ledgers

                # bin/bookkeeper shell bookiesanity

            initContainers:
                # The first time, initialize BK metadata in zookeeper
                 # Otherwise ignore error if it's already there
              - name: bookie-metaformat
                image: apachepulsar/pulsar:latest
                command: ["sh", "-c"]
                args:
                  - >
                    bin/apply-config-from-env.py conf/bookkeeper.conf &&
                    bin/bookkeeper shell metaformat --nonInteractive || true;
                envFrom:
                  - configMapRef:
                        name: bookie-config

            volumes:
                # Mount local disks
              - name: journal-disk
                hostPath:
                    path: /mnt/disks/ssd0
              - name: ledgers-disk
                hostPath:
                    path: /mnt/disks/ssd1

---

##
## Define the Bookie headless service
## In practice, in this case, it is only useful to have a view of
## all the bookie pods that are present
##
apiVersion: v1
kind: Service
metadata:
    name: bookkeeper
    labels:
        app: pulsar
        component: bookkeeper
spec:
    ports:
      - port: 3181
        name: server
    clusterIP: None
    selector:
        app: pulsar
        component: bookkeeper

---
##
## Run BookKeeper auto-recovery from a different set of containers
## Auto-Recovery makes sure to restore the replication factor when any bookie
## crashes and it's not recovering on its own.
##
apiVersion: apps/v1beta1
kind: Deployment
metadata:
    name: bookie-autorecovery
spec:
    replicas: 2
    template:
        metadata:
            labels:
                app: pulsar
                component: bookkeeper-replication
        spec:
            containers:
              - name: replication-worker
                image: apachepulsar/pulsar:latest
                command: ["sh", "-c"]
                args:
                  - >
                    bin/apply-config-from-env.py conf/bookkeeper.conf &&
                    bin/bookkeeper autorecovery
                envFrom:
                  - configMapRef:
                        name: bookie-config
                env:
                    ## Configure for lower mem usage
                  - name: PULSAR_MEM
                    value: "\" -Xmx256m \""
                  - name: PULSAR_GC
                    value: "\"  \""
