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

tosca_definitions_version: tosca_simple_yaml_1_0
imports:
  - custom_types/oltdevice.yaml
  - custom_types/onudevice.yaml
  - custom_types/ponport.yaml
  - custom_types/voltservice.yaml
  {{- if $.Values.bandwidthProfiles }}
  - custom_types/technologyprofile.yaml
  {{- end }}
description: Create a simulated OLT Device in VOLTHA
topology_template:
  node_templates:

    service#volt:
      type: tosca.nodes.VOLTService
      properties:
        name: volt
        must-exist: true

{{- range $i, $junk := until (.Values.numOlts|int) }}

    olt{{ $i }}_device:
      type: tosca.nodes.OLTDevice
      properties:
        name: PONSIM OLT {{ $i }}
        device_type: ponsim_olt
        host: olt{{ $i }}.voltha.svc
        port: 50060
        switch_datapath_id: of:0000000000000001
        switch_port: "{{ add 2 $i }}"
        outer_tpid: "0x8100"
{{- if $.Values.bandwidthProfiles }}
        technology: xgspon
{{- end }}
{{- if $.Values.legacyPonsim }}
        dp_id: of:0000aabbccddeeff
{{- else }}
        dp_id: {{ index $.Values.oltDpids $i }}
{{- end }}
        uplink: "2"
      requirements:
        - volt_service:
            node: service#volt
            relationship: tosca.relationships.BelongsToOne

    olt{{ $i }}_pon_port:
      type: tosca.nodes.PONPort
      properties:
        name: olt{{ $i }}pon0
        port_no: 1
      requirements:
        - olt_device:
            node: olt{{ $i }}_device
            relationship: tosca.relationships.BelongsToOne
{{- end }}

{{- if $.Values.bandwidthProfiles }}
    technologyProfile:
      type: tosca.nodes.TechnologyProfile
      properties:
        profile_id: 64
        technology: xgspon
        profile_value: >
          {}
{{- end }}
