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

tosca_definitions_version: tosca_simple_yaml_1_0
imports:
  - custom_types/rcordsubscriber.yaml
  - custom_types/bandwidthprofile.yaml

description: Pre-provsion a subscriber

topology_template:
  node_templates:

    high_speed_bp:
      type: tosca.nodes.BandwidthProfile
      properties:
         air: 10000
         cbs: 60536
         cir: 64000
         ebs: 5000
         eir: 64000
         name: Bronze

    # Pre-provision the subscriber the subscriber
    onf_subscriber_2:
      type: tosca.nodes.RCORDSubscriber
      properties:
        name: Sub_ALPHe3d1cfde
        status: pre-provisioned
        c_tag: 112
        s_tag: 111
        onu_device: ALPHe3d1cfde
        nas_port_id : "PON 1/1/04/1:1.1.1"
        circuit_id: foo2
        remote_id: bar2
        tech_profile_id: 64
      requirements:
        - upstream_bps:
            node: high_speed_bp
            relationship: tosca.relationships.BelongsToOne
        - downstream_bps:
            node: high_speed_bp
            relationship: tosca.relationships.BelongsToOne

    onf_subscriber_3:
      type: tosca.nodes.RCORDSubscriber
      properties:
        name: Sub_ISKT71e80080
        status: pre-provisioned
        c_tag: 113
        s_tag: 111
        onu_device: ISKT71e80080
        nas_port_id : "PON 1/1/05/1:1.1.1"
        circuit_id: foo3
        remote_id: bar3
        tech_profile_id: 64
      requirements:
        - upstream_bps:
            node: high_speed_bp
            relationship: tosca.relationships.BelongsToOne
        - downstream_bps:
            node: high_speed_bp
            relationship: tosca.relationships.BelongsToOne

    onf_subscriber_4:
      type: tosca.nodes.RCORDSubscriber
      properties:
        name: Sub_ALPHe3d1cfac
        status: pre-provisioned
        c_tag: 111
        s_tag: 111
        onu_device: ALPHe3d1cfac
        nas_port_id : "PON 1/1/05/1:1.1.1"
        circuit_id: foo3
        remote_id: bar3
        tech_profile_id: 64
      requirements:
        - upstream_bps:
            node: high_speed_bp
            relationship: tosca.relationships.BelongsToOne
        - downstream_bps:
            node: high_speed_bp
            relationship: tosca.relationships.BelongsToOne
