---
# Source: openwhisk/templates/couchdb-pod.yaml
#
# 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: apps/v1
kind: Deployment
metadata:
  name: nuvolaris-couchdb
  labels:
    name: nuvolaris-couchdb
    heritage: "Helm"
    release: "nuvolaris"
    chart: "openwhisk-1.0.1"
    app: nuvolaris-openwhisk
spec:
  replicas: 1
  selector:
    matchLabels:
      name: nuvolaris-couchdb
  strategy:
    type: "Recreate"
  template:
    metadata:
      labels:
        name: nuvolaris-couchdb
        heritage: "Helm"
        release: "nuvolaris"
        chart: "openwhisk-1.0.1"
        app: nuvolaris-openwhisk
    spec:
      restartPolicy: Always
      affinity:
        # prefer to not run on an invoker node (only prefer because of single node clusters)
        nodeAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 100
            preference:
              matchExpressions:
              - key: openwhisk-role
                operator: NotIn
                values:
                - invoker
          - weight: 80
            preference:
              matchExpressions:
              - key: openwhisk-role
                operator: In
                values:
                - core
        # Fault tolerance: prevent multiple instances of nuvolaris-couchdb from running on the same node
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchExpressions:
              - key: name
                operator: In
                values:
                - nuvolaris-couchdb
            topologyKey: "kubernetes.io/hostname"
      tolerations:
        - key: "openwhisk-role"
          operator: "Equal"
          value: core
          effect: "NoSchedule"

      
      containers:
      - name: couchdb
        image: "apache/couchdb:2.3"
        imagePullPolicy: "IfNotPresent"
        ports:
        - name: couchdb
          containerPort: 5984
        env:
        - name: "COUCHDB_USER"
          valueFrom:
            secretKeyRef:
              name: nuvolaris-db.auth
              key: db_username
        - name: "COUCHDB_PASSWORD"
          valueFrom:
            secretKeyRef:
              name: nuvolaris-db.auth
              key: db_password
        - name: "NODENAME"
          value: "couchdb0"
#        volumeMounts:
#          - name: database-storage
#            mountPath: /opt/couchdb/data
#      volumes:
#        - name: database-storage
#          persistentVolumeClaim:
#            claimName: nuvolaris-couchdb-pvc
