# Copyright © 2017 Amdocs, Bell Canada
#
# Licensed 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.

#{{ if not .Values.disableAaiSearchDataService }}
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: aai-search-data-service
  namespace: "{{ .Values.nsPrefix }}"
spec:
  replicas: {{ .Values.searchDataServiceReplicas }}
  selector:
    matchLabels:
      app: search-data-service
  template:
    metadata:
      labels:
        app: search-data-service
      name: aai-search-data-service
    spec:
      containers:
      - name: search-data-service
        image: "{{ .Values.image.searchDataImage }}:{{ .Values.image.searchDataVersion }}"
        imagePullPolicy: {{ .Values.pullPolicy }}
        env:
        - name: CONFIG_HOME
          value: /opt/app/search-data-service/config/
        - name: KEY_STORE_PASSWORD
          value: OBF:1y0q1uvc1uum1uvg1pil1pjl1uuq1uvk1uuu1y10
        - name: KEY_MANAGER_PASSWORD
          value: OBF:1y0q1uvc1uum1uvg1pil1pjl1uuq1uvk1uuu1y10
        volumeMounts:
        - mountPath: /etc/localtime
          name: localtime
          readOnly: true
        - mountPath: /opt/app/search-data-service/config/filter-config.json
          subPath: filter-config.json
          name: aai-search-data-service-config
        - mountPath: /opt/app/search-data-service/config/elastic-search.properties
          subPath: elastic-search.properties
          name: aai-search-data-service-config
        - mountPath: /opt/app/search-data-service/config/analysis-config.json
          subPath: filter-config.json
          name: aai-search-data-service-config
        - mountPath: /opt/app/search-data-service/config/auth/tomcat_keystore
          subPath: tomcat_keystore
          name: aai-search-data-service-auth-config
        - mountPath: /opt/app/search-data-service/config/auth/search_policy.json
          subPath: search_policy.json
          name: aai-search-data-search-policy-config
        - mountPath: /var/log/onap
          name: aai-search-data-service-logs
        - mountPath: /opt/app/search-data-service/bundleconfig/etc/logback.xml
          name: aai-search-data-service-log-conf
          subPath: logback.xml
        ports:
        - containerPort: 9509
        readinessProbe:
          tcpSocket:
            port: 9509
          initialDelaySeconds: 5
          periodSeconds: 10
      - name: filebeat-onap-aai-search
        image: {{ .Values.image.filebeat }}
        imagePullPolicy: {{ .Values.pullPolicy }}
        volumeMounts:
        - mountPath: /usr/share/filebeat/filebeat.yml
          subPath: filebeat.yml
          name: filebeat-conf
        - mountPath: /var/log/onap
          name: aai-search-data-service-logs
        - mountPath: /usr/share/filebeat/data
          name: aai-search-data-service-filebeat
      volumes:
      - name: localtime
        hostPath:
          path: /etc/localtime
      - name: aai-search-data-service-config
        configMap:
          name: aai-search-data-configmap
      - name: aai-search-data-service-auth-config
        secret:
          secretName: aai-search-data-keystone-secret
      - name: aai-search-data-search-policy-config
        configMap:
          name: aai-search-policy-configmap
      - name: filebeat-conf
        configMap:
          name: aai-filebeat-configmap
      - name: aai-search-data-service-logs
        emptyDir: {}
      - name: aai-search-data-service-filebeat
        emptyDir: {}
      - name: aai-search-data-service-log-conf
        configMap:
         name: aai-search-data-service-log-configmap
      restartPolicy: Always
      imagePullSecrets:
      - name: "{{ .Values.nsPrefix }}-docker-registry-key"
#{{ end }}
