---
# Copyright 2018-present Open Networking Foundation
#
# 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.

apiVersion: apps/v1beta2
kind: Deployment
metadata:
  name: {{ template "onos.fullname" . }}
  namespace: {{ .Values.namespace }}
  labels:
    app: {{ template "onos.name" . }}
    chart: {{ template "onos.chart" . }}
    release: {{ .Release.Name }}
    heritage: {{ .Release.Service }}
{{- if .Values.xos_service_label }}
    xos_service: {{ .Values.xos_service_label }}
{{- end }}
spec:
  replicas: {{ .Values.replicaCount }}
  selector:
    matchLabels:
      app: {{ template "onos.name" . }}
      release: {{ .Release.Name }}
  template:
    metadata:
      labels:
        app: {{ template "onos.name" . }}
        release: {{ .Release.Name }}
{{- if .Values.xos_service_label }}
        xos_service: {{ .Values.xos_service_label }}
{{- end }}
    spec:
      serviceAccount: {{ .Values.serviceAccountName }}
      serviceAccountName: {{ .Values.serviceAccountName }}
      containers:
        - name: {{ .Chart.Name }}
          image:  "{{ .Values.global.registry }}{{ .Values.images.onos.repository }}:{{ tpl .Values.images.onos.tag . }}"
          imagePullPolicy: {{ .Values.images.onos.pullPolicy }}
          command: ["./root/files/onos-1.7.0.cemturker/bin/onos-service", "server", "debug"]
          env:
{{ toYaml .Values.onos_env | indent 12 }}
          ports:
            - name: ovsdb
              containerPort: {{ .Values.services.ovsdb.port }}
            - name: openflow
              containerPort: {{ .Values.services.openflow.port }}
            - name: ssh
              containerPort: {{ .Values.services.ssh.port }}
            - name: ui
              containerPort: {{ .Values.services.ui.port }}
            - name: cluster
              containerPort: {{ .Values.services.cluster.port }}
            - name: debugger
              containerPort: {{ .Values.services.debugger.port }}
            - name: port22
              containerPort: {{ .Values.services.port22.port }}
            - name: port9876
              containerPort: {{ .Values.services.port9876.port }}
            - name: port4010
              containerPort: {{ .Values.services.port4010.port }}
          resources:
{{ toYaml .Values.resources | indent 12 }}
          volumeMounts:
            - name: node-key
              mountPath: /root/vtn
              readOnly: true
            - name: onos-logs-cfg
              mountPath: /root/onos/apache-karaf-3.0.8/etc/org.ops4j.pax.logging.cfg
              subPath: org.ops4j.pax.logging.cfg
            - name: onos-logs
              mountPath: /root/onos/apache-karaf-3.0.8/data/log
{{- if .Values.log_agent.enabled }}
        - name: {{ .Chart.Name }}-log-agent
          image: "{{ .Values.global.registry }}{{ .Values.images.log_agent.repository }}:{{ .Values.images.log_agent.tag }}"
          imagePullPolicy: {{ .Values.images.log_agent.pullPolicy }}
          args: [ "-c", "/conf/filebeat.yml", "-e" ]
          env:
            - name: POD_NAMESPACE
              valueFrom:
                fieldRef:
                  fieldPath: metadata.namespace
            - name: NODE_NAME
              valueFrom:
                fieldRef:
                  fieldPath: spec.nodeName
          volumeMounts:
            - name: onos-logs
              mountPath: /onos_logs
            - name: progran-log-agent-configmap-volume
              mountPath: /conf
{{- end }}
      volumes:
        - name: node-key
          secret:
            secretName: node-key
            defaultMode: 256
            optional: true
        - name: onos-logs-cfg
          configMap:
            name: onos-progran
            items:
              - key: logCfg
                path: org.ops4j.pax.logging.cfg
        - name: onos-logs
          emptyDir: {}
{{- if .Values.log_agent.enabled }}
        - name: progran-log-agent-configmap-volume
          configMap:
            name: progran-log-agent-configmap
            items:
              - key: config
                path: filebeat.yml
{{- end }}
{{- with .Values.nodeSelector }}
      nodeSelector:
{{ toYaml . | indent 8 }}
    {{- end }}
    {{- with .Values.affinity }}
      affinity:
{{ toYaml . | indent 8 }}
    {{- end }}
    {{- with .Values.tolerations }}
      tolerations:
{{ toYaml . | indent 8 }}
    {{- end }}
{{- if .Values.log_agent.enabled }}
{{- include "onos.progran-log-agent-configmap" . }}
{{- end }}

