# Copyright 2017-2023 Open Networking Foundation (ONF) and the ONF Contributors
#
# 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 @bbwf-subscriber.yaml http://192.168.100.1:30007/run

tosca_definitions_version: tosca_simple_yaml_1_0
imports:
  - custom_types/rcordsubscriber.yaml

description: Pre-provsion subscribers

topology_template:
  node_templates:

    # EdgeCore OLT subscribers
    edgecore_alpha_subscriber:
      type: tosca.nodes.RCORDSubscriber
      properties:
        name: Sub_ALPHe3d1cee9
        status: pre-provisioned
        c_tag: 11
        s_tag: 111
        onu_device: ALPHe3d1cee9
        nas_port_id : "PON 1/1/03/1:1.1.1"
        circuit_id: edgecore_alpha_circuit
        remote_id: edgecore_alpha_remote

    edgecore_iskratel_subscriber:
      type: tosca.nodes.RCORDSubscriber
      properties:
        name: Sub_ISKT71e81130
        status: pre-provisioned
        c_tag: 12
        s_tag: 111
        onu_device: ISKT71e81130
        nas_port_id : "PON 1/1/04/1:1.1.1"
        circuit_id: edgecore_iskratel_circuit
        remote_id: edgecore_iskratel_remote

    # Adtran OLT subscribers
    adtran_subscriber_1:
      type: tosca.nodes.RCORDSubscriber
      properties:
        name: Sub_ADTN17510028
        status: pre-provisioned
        c_tag: 21
        s_tag: 222
        onu_device: ADTN17510028
        nas_port_id : "PON 1/1/05/1:1.1.1"
        circuit_id: adtran_sub1_circuit
        remote_id: adtran_sub1_remote

    # adtran_subscriber_2:
    #   type: tosca.nodes.RCORDSubscriber
    #   properties:
    #     name: Sub_ADTN16180345
    #     status: pre-provisioned
    #     c_tag: 22
    #     s_tag: 222
    #     onu_device: ADTN16180345
    #     nas_port_id : "PON 1/1/05/1:1.1.1"
    #     circuit_id: adtran_sub2_circuit
    #     remote_id: adtran_sub2_remote

    # CIG OLT subscribers
    cig_subscriber_1:
      type: tosca.nodes.RCORDSubscriber
      properties:
        name: Sub_CIGG18a00002
        status: pre-provisioned
        c_tag: 31
        s_tag: 333
        onu_device: CIGG18a00002
        nas_port_id : "PON 1/1/05/1:1.1.1"
        circuit_id: cig_sub1_circuit
        remote_id: cig_sub1_remote

    # Iskratel XGS-PON OLT subscribers
    iskratelx_subscriber_1:
      type: tosca.nodes.RCORDSubscriber
      properties:
        name: Sub_ISKT71e81070
        status: pre-provisioned
        c_tag: 41
        s_tag: 444
        onu_device: ISKT71e81070
        nas_port_id : "PON 1/1/05/1:1.1.1"
        circuit_id: iskx_sub1_circuit
        remote_id: iskx_sub1_remote

    # iskratelx_subscriber_2:
    #   type: tosca.nodes.RCORDSubscriber
    #   properties:
    #     name: Sub_ISKT71e81071
    #     status: pre-provisioned
    #     c_tag: 42
    #     s_tag: 444
    #     onu_device: ISKT71e81071
    #     nas_port_id : "PON 1/1/05/1:1.1.1"
    #     circuit_id: iskx_sub2_circuit
    #     remote_id: iskx_sub2_remote

    # Iskratel GPON OLT subscribers
    iskratelg_subscriber_1:
      type: tosca.nodes.RCORDSubscriber
      properties:
        name: Sub_ISKT45f2c688
        status: pre-provisioned
        c_tag: 51
        s_tag: 555
        onu_device: ISKT45f2c688
        nas_port_id : "PON 1/1/05/1:1.1.1"
        circuit_id: iskg_sub1_circuit
        remote_id: iskg_sub1_remote

    # iskratelg_subscriber_2:
    #   type: tosca.nodes.RCORDSubscriber
    #   properties:
    #     name: Sub_ISKT45f2bd61
    #     status: pre-provisioned
    #     c_tag: 52
    #     s_tag: 555
    #     onu_device: ISKT45f2bd61
    #     nas_port_id : "PON 1/1/05/1:1.1.1"
    #     circuit_id: iskg_sub2_circuit
    #     remote_id: iskg_sub2_remote

    # iskratelg_subscriber_3:
    #   type: tosca.nodes.RCORDSubscriber
    #   properties:
    #     name: Sub_ISKT45f2c1e4
    #     status: pre-provisioned
    #     c_tag: 53
    #     s_tag: 555
    #     onu_device: ISKT45f2c1e4
    #     nas_port_id : "PON 1/1/05/1:1.1.1"
    #     circuit_id: iskg_sub3_circuit
    #     remote_id: iskg_sub3_remote
