# 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-subscriber.yaml http://10.90.0.101: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
