{{- /*
# Copyright 2020-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/v1
kind: Deployment
metadata:
  name: wowza
  labels:
{{ tuple "wowza" . | include "phylo.metadata_labels" | indent 4 }}
spec:
  replicas: {{ .Values.config.wowza.replica }}
  selector:
    matchLabels:
{{ tuple "wowza" . | include "phylo.metadata_labels" | indent 6 }}
  template:
    metadata:
      labels:
{{ tuple "wowza" . | include "phylo.metadata_labels" | indent 8 }}
    spec:
    {{- if .Values.nodeSelectors.enabled }}
      nodeSelector:
        {{ .Values.nodeSelectors.wowza.label }}: {{ .Values.nodeSelectors.wowza.value }}
    {{- end }}
      containers:
      - name: wowza
        image: {{ .Values.images.tags.wowza }}
        imagePullPolicy: {{ .Values.images.pullPolicy }}
      {{- if .Values.resources.enabled }}
        resources:
{{ toYaml .Values.resources.wowza | indent 10 }}
      {{- end }}
        volumeMounts:
        - mountPath: /usr/local/WowzaStreamingEngine/data
          name: wowza
      volumes:
        - name: wowza
          emptyDir: {}
