# 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.

---
apiVersion: v1
kind: Service
metadata:
  name: adapter-simulated-olt
  namespace: {{ .Release.Namespace }}
spec:
  clusterIP: None
  selector:
    app: adapter-simulated-olt

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: adapter-simulated-olt
  namespace: {{ .Release.Namespace }}
spec:
  replicas: {{ .Values.replicas.adapter_simulated_olt }}
  selector:
    matchLabels:
      app: adapter-simulated-olt
  template:
    metadata:
      labels:
        app: adapter-simulated-olt
      annotations:
        cni: "calico"
    spec:
      containers:
        - name: adapter-simulated-olt
          image: {{ .Values.registry }}{{ .Values.images.adapter_simulated_olt.repository }}:{{ tpl .Values.images.adapter_simulated_olt.tag . }}
          imagePullPolicy: {{ .Values.images.adapter_simulated_olt.pullPolicy }}
          env:
            - name: NAMESPACE
              value: {{ quote .Release.Namespace }}
            - name: ETCD_SERVICE
              value: "{{ .Values.services.etcd.service }}"
            - name: ETCD_SERVICE_PORT
              value: "{{ .Values.services.etcd.port }}"
            - name: ADAPTER_KAFKA_SERVICE
              value: "{{ .Values.services.kafka.adapter.service }}"
            - name: ADAPTER_KAFKA_SERVICE_PORT
              value: "{{ .Values.services.kafka.adapter.port }}"
            - name: CLUSTER_KAFKA_SERVICE
              value: "{{ .Values.services.kafka.cluster.service }}"
            - name: CLUSTER_KAFKA_SERVICE_PORT
              value: "{{ .Values.services.kafka.cluster.port }}"
          args:
            - "/app/simulated_olt"
            - "-kafka_adapter_host=$(ADAPTER_KAFKA_SERVICE)"
            - "-kafka_adapter_port=$(ADAPTER_KAFKA_SERVICE_PORT)"
            - "-kafka_cluster_host=$(CLUSTER_KAFKA_SERVICE)"
            - "-kafka_cluster_port=$(CLUSTER_KAFKA_SERVICE_PORT)"
            - "-core_topic=rwcore"
            - "-simulator_topic=simulated_olt"
            - "-kv_store_host=$(ETCD_SERVICE)"
            - "-kv_store_port=$(ETCD_SERVICE_PORT)"
            - "-onu_number=100"
---
apiVersion: v1
kind: Service
metadata:
  name: adapter-simulated-onu
  namespace: {{ .Release.Namespace }}
spec:
  clusterIP: None
  selector:
    app: adapter-simulated-onu

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: adapter-simulated-onu
  namespace: {{ .Release.Namespace }}
spec:
  replicas: {{ .Values.replicas.adapter_simulated_onu }}
  selector:
    matchLabels:
      app: adapter-simulated-onu
  template:
    metadata:
      labels:
        app: adapter-simulated-onu
      annotations:
        cni: "calico"
    spec:
      containers:
        - name: adapter-simulated-onu
          image: {{ .Values.registry }}{{ .Values.images.adapter_simulated_onu.repository }}:{{ tpl .Values.images.adapter_simulated_onu.tag . }}
          imagePullPolicy: {{ .Values.images.adapter_simulated_onu.pullPolicy }}
          env:
            - name: NAMESPACE
              value: {{ quote .Release.Namespace }}
            - name: ETCD_SERVICE
              value: "{{ .Values.services.etcd.service }}"
            - name: ETCD_SERVICE_PORT
              value: "{{ .Values.services.etcd.port }}"
            - name: ADAPTER_KAFKA_SERVICE
              value: "{{ .Values.services.kafka.adapter.service }}"
            - name: ADAPTER_KAFKA_SERVICE_PORT
              value: "{{ .Values.services.kafka.adapter.port }}"
            - name: CLUSTER_KAFKA_SERVICE
              value: "{{ .Values.services.kafka.cluster.service }}"
            - name: CLUSTER_KAFKA_SERVICE_PORT
              value: "{{ .Values.services.kafka.cluster.port }}"
          args:
            - "/app/simulated_onu"
            - "-kafka_adapter_host=$(ADAPTER_KAFKA_SERVICE)"
            - "-kafka_adapter_port=$(ADAPTER_KAFKA_SERVICE_PORT)"
            - "-kafka_cluster_host=$(CLUSTER_KAFKA_SERVICE)"
            - "-kafka_cluster_port=$(CLUSTER_KAFKA_SERVICE_PORT)"
            - "-core_topic=rwcore"
            - "-kv_store_host=$(ETCD_SERVICE)"
            - "-kv_store_port=$(ETCD_SERVICE_PORT)"
            - "-simulator_topic=simulated_onu"
