{{- /*
# Copyright 2019-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.
*/ -}}
{{ tuple "accelleran-cbrs-nats" . | include "accelleran-cbrs-common.service_account" }}
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: accelleran-cbrs-nats
  labels:
{{ tuple "accelleran-cbrs-nats" . | include "accelleran-cbrs-common.metadata_labels" | indent 4 }}
spec:
  selector:
    matchLabels:
{{ tuple "accelleran-cbrs-nats" . | include "accelleran-cbrs-common.metadata_labels" | indent 6 }}
  serviceName: accelleran-cbrs-nats
  template:
    metadata:
      labels:
{{ tuple "accelleran-cbrs-nats" . | include "accelleran-cbrs-common.metadata_labels" | indent 8 }}
    spec:
    {{- if .Values.nodeSelectors.enabled }}
      nodeSelector:
        {{ .Values.nodeSelectors.accelleranCBRSCommon.label }}: {{ .Values.nodeSelectors.accelleranCBRSCommon.value }}
    {{- end }}
      serviceAccountName: accelleran-cbrs-nats
      containers:
      - name: nats
        image: {{ .Values.images.tags.nats }}
        imagePullPolicy: {{ .Values.images.pullPolicy }}
        command: ["/entrypoint.sh"]
        args: ["/usr/bin/gnatsd",  "-c",  "/etc/gnatsd.conf" ]
        {{- if .Values.resources.enabled }}
        resources:
{{ toYaml .Values.resources.accelleranCBRSCommon | indent 10 }}
        {{- end }}
