# 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 @edgecore-pod1-subscriber.yaml http://192.168.99.181:30007/run

tosca_definitions_version: tosca_simple_yaml_1_0
imports:
  - custom_types/rcordsubscriber.yaml

description: Pre-provsion a subscriber

topology_template:
  node_templates:

    ISKT71e81130:
      type: tosca.nodes.RCORDSubscriber
      properties:
        name: ISKT71e81130
        status: pre-provisioned
        s_tag: 111
        c_tag: 11
        onu_device: ISKT71e81130
        nas_port_id : "nas-port-id-ISKT71e81130"
        circuit_id: "circuit-id-ISKT71e81130"
        remote_id: "remote-id-ISKT71e81130"

    ISKT71e81050:
      type: tosca.nodes.RCORDSubscriber
      properties:
        name: ISKT71e81050
        status: pre-provisioned
        s_tag: 111
        c_tag: 22
        onu_device: ISKT71e81050
        nas_port_id : "nas-port-id-ISKT71e81050"
        circuit_id: "circuit-id-ISKT71e81050"
        remote_id: "remote-id-ISKT71e81050"

    ISKT71e810c0:
      type: tosca.nodes.RCORDSubscriber
      properties:
        name: ISKT71e810c0
        status: pre-provisioned
        s_tag: 111
        c_tag: 33
        onu_device: ISKT71e810c0
        nas_port_id : "nas-port-id-ISKT71e810c0"
        circuit_id: "circuit-id-ISKT71e810c0"
        remote_id: "remote-id-ISKT71e810c0"

    ALPHe3d1cea3:
      type: tosca.nodes.RCORDSubscriber
      properties:
        name: ALPHe3d1cea3
        status: pre-provisioned
        s_tag: 111
        c_tag: 44
        onu_device: ALPHe3d1cea3
        nas_port_id : "nas-port-id-ALPHe3d1cea3"
        circuit_id: "circuit-id-ALPHe3d1cea3"
        remote_id: "remote-id-ALPHe3d1cea3"

    ALPHe3d1cee9:
      type: tosca.nodes.RCORDSubscriber
      properties:
        name: ALPHe3d1cee9
        status: pre-provisioned
        s_tag: 111
        c_tag: 55
        onu_device: ALPHe3d1cee9
        nas_port_id : "nas-port-id-ALPHe3d1cee9"
        circuit_id: "circuit-id-ALPHe3d1cee9"
        remote_id: "remote-id-ALPHe3d1cee9"
