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

{{- $onucount := (.Values.numOnus|int)}}
{{- range $i, $junk := until (.Values.numOlts|int) }}
{{- range $j, $junk1 := until ($onucount) }}
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: onu{{ $i }}-{{ $j }}
  namespace: {{ $.Values.global.namespace }}
spec:
   replicas: 1
   template:
     metadata:
       labels:
         app: ponsim
         onu: onu{{ $i }}-{{ $j }}
       annotations:
         cni: "calico,pon{{ $i }}.{{ $j }}"
     spec:
       affinity:
        podAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 100
            podAffinityTerm:
              labelSelector:
                matchExpressions:
                - key: rg
                  operator: In
                  values:
                  - rg{{ $i }}-{{ $j }}
              topologyKey: kubernetes.io/hostname
       containers:
         - name: onu{{ $i }}-{{ $j }}
           image: "{{ $.Values.global.registry }}{{ $.Values.images.onu.repository }}:{{ tpl $.Values.images.onu.tag $ }}"
           imagePullPolicy: {{ $.Values.images.onu.pullPolicy }}
           env:
             - name: POD_IP
               valueFrom:
                 fieldRef:
                   fieldPath: status.podIP
             - name: NAMESPACE
               valueFrom:
                 fieldRef:
                   fieldPath: metadata.namespace
           args:
             - "/app/ponsim"
             - "-device_type"
             - "ONU"
             - "-parent_addr"
             - "olt{{ $i }}"
             - "-grpc_port"
             - "50061"
             - "-internal_if"
             - "eth0"
             - "-external_if"
             - "eth1"
             - "-promiscuous"
{{- if not $.Values.legacyPonsim }}
             - "-serial_number"
             - "PSMO{{ printf "%04d%04d" $i $j }}"
{{- end }}
{{- end }}

           ports:
            - containerPort: 50061
              name: grpc-port
{{- end }}
