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

# curl -H "xos-username: admin@opencord.org" -H "xos-password: letmein" -X POST --data-binary @onlab-pod1-bbsim.yaml http://10.90.0.101:30007/run

tosca_definitions_version: tosca_simple_yaml_1_0
imports:
  - custom_types/oltdevice.yaml
  - custom_types/onudevice.yaml
  - custom_types/voltservice.yaml
  - custom_types/bngportmapping.yaml
  - custom_types/attworkflowdriverwhitelistentry.yaml
  - custom_types/attworkflowdriverservice.yaml
  - custom_types/rcordsubscriber.yaml
  - custom_types/serviceinstanceattribute.yaml
  - custom_types/onosapp.yaml
description: Create a simulated OLT Device in VOLTHA
topology_template:
  node_templates:

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

    olt_device:
      type: tosca.nodes.OLTDevice
      properties:
        name: BBSIM_OLT
        device_type: bbsimolt
        host: bbsim.voltha.svc
        # host: 10.233.33.1
        port: 50060
        switch_datapath_id: of:0000000000000001
        switch_port: "3"
        outer_tpid: "0x8100"
        uplink: "65536"
        nas_id: "NAS_ID"
      requirements:
        - volt_service:
            node: service#volt
            relationship: tosca.relationships.BelongsToOne

    # POD Config
    bngmapping:
      type: tosca.nodes.BNGPortMapping
      properties:
        s_tag: any
        switch_port: 31

    # DHCP L2 Relay config
    onos_app#dhcpl2relay:
      type: tosca.nodes.ONOSApp
      properties:
        name: dhcpl2relay
        must-exist: true

    dhcpl2relay-config-attr:
      type: tosca.nodes.ServiceInstanceAttribute
      properties:
        name: /onos/v1/network/configuration/apps/org.opencord.dhcpl2relay
        value: >
          {
            "dhcpl2relay" : {
              "useOltUplinkForServerPktInOut" : true
            }
          }
      requirements:
        - service_instance:
            node: onos_app#dhcpl2relay
            relationship: tosca.relationships.BelongsToOne

    # Whitelist
    service#att:
      type: tosca.nodes.AttWorkflowDriverService
      properties:
        name: att-workflow-driver
        must-exist: true

    NONE31323030:
      type: tosca.nodes.AttWorkflowDriverWhiteListEntry
      properties:
        serial_number: NONE00000100
        pon_port_id: 536870913
        device_id: of:0000aabbccddee12
      requirements:
        - owner:
            node: service#att
            relationship: tosca.relationships.BelongsToOne

    # Pre-provision the subscriber
    bbsim_subscriber_1:
      type: tosca.nodes.RCORDSubscriber
      properties:
        name: Sub_NONE00000100
        status: pre-provisioned
        c_tag: 123
        s_tag: 456
        onu_device: NONE00000100
        nas_port_id : "PON 1/1/03/1:1.1.1"
        circuit_id: foo1
        remote_id: bar1