# 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-olt.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/technologyprofile.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: ONF OLT
        device_type: openolt
        host: 10.90.0.114
        port: 9191
        switch_datapath_id: of:0000000000000001
        switch_port: "1"
        outer_tpid: "0x8100"
        uplink: "65536"
        nas_id: "NAS_ID"
      requirements:
        - volt_service:
            node: service#volt
            relationship: tosca.relationships.BelongsToOne

    technologyProfile:
      type: tosca.nodes.TechnologyProfile
      properties:
        profile_id: 64
        technology: xgspon
        profile_value: >
          {
          	"name": "4QueueHybridProfileMap1",
          	"profile Type": "XPON",
          	"version": 1.0,
          	"instance_control": {
          		"onu": "multi-instance",
          		"uni": "single-instance",
          		"num_gem_ports": 4,
          		"Max_GEM_Payload_Size": "auto"
          	},
          	"u_s_scheduler": {
          		"additional_bw": "auto",
          		"priority": 0,
          		"weight": 0,
          		"q_sched_policy": "hybrid"
          	},
          	"d_s_scheduler": {
          		"priority": 0,
          		"weight": 0,
          		"q_sched_policy": "hybrid"
          	},
          	"Upstream GEM_Port_attribute_List": [{
          			"pbit_map": "0b00000101",
          			"AES_Encryption": "TRUE",
          			"Scheduling_Policy": "WRR",
          			"Priority_Q": 4,
          			"Weight": 25,
          			"Discard_Policy": "Tail-Drop",
          			"Max_Q_Size": "auto",
          			"Discard_Config": {
          				"Min_Threshold": 0,
          				"Max_Threshold": 0,
          				"Max_Probability": 0
          			}
          		},
          		{
          			"pbit_map": "0b00011010",
          			"AES_Encryption": "TRUE",
          			"Scheduling_Policy": "WRR",
          			"Priority_Q": 3,
          			"Weight": 75,
          			"Discard_Policy": "Tail-Drop",
          			"Max_Q_Size": "auto",
          			"Discard_Config": {
          				"Min_Threshold": 0,
          				"Max_Threshold": 0,
          				"Max_Probability": 0
          			}
          		},
          		{
          			"pbit_map": "0b00100000",
          			"AES_Encryption": "TRUE",
          			"Scheduling_Policy": "Strict-Priority",
          			"Priority_Q": 2,
          			"Weight": 0,
          			"Discard_Policy": "Tail-Drop",
          			"Max_Q_Size": "auto",
          			"Discard_Config": {
          				"Min_Threshold": 0,
          				"Max_Threshold": 0,
          				"Max_Probability": 0
          			}
          		},
          		{
          			"pbit_map": "0b11000000",
          			"AES_Encryption": "TRUE",
          			"Scheduling_Policy": "Strict-Priority",
          			"Priority_Q": 1,
          			"Weight": 0,
          			"Discard_Policy": "Tail-Drop",
          			"Max_Q_Size": "auto",
          			"Discard_Config": {
          				"Min_Threshold": 0,
          				"Max_Threshold": 0,
          				"Max_Probability": 0
          			}
          		}
          	],
          	"Downstream GEM_Port_attribute_List": [{
          			"pbit_map": "0b00000101",
          			"AES_Encryption": "TRUE",
          			"Scheduling_Policy": "WRR",
          			"Priority_Q": 4,
          			"Weight": 10,
          			"Discard_Policy": "Tail-Drop",
          			"Max_Q_Size": "auto",
          			"Discard_Config": {
          				"Min_Threshold": 0,
          				"Max_Threshold": 0,
          				"Max_Probability": 0
          			}
          		},
          		{
          			"pbit_map": "0b00011010",
          			"AES_Encryption": "TRUE",
          			"Scheduling_Policy": "WRR",
          			"Priority_Q": 3,
          			"Weight": 90,
          			"Discard_Policy": "Tail-Drop",
          			"Max_Q_Size": "auto",
          			"Discard_Config": {
          				"Min_Threshold": 0,
          				"Max_Threshold": 0,
          				"Max_Probability": 0
          			}
          		},
          		{
          			"pbit_map": "0b00100000",
          			"AES_Encryption": "TRUE",
          			"Scheduling_Policy": "Strict-Priority",
          			"Priority_Q": 2,
          			"Weight": 0,
          			"Discard_Policy": "Tail-Drop",
          			"Max_Q_Size": "auto",
          			"Discard_Config": {
          				"Min_Threshold": 0,
          				"Max_Threshold": 0,
          				"Max_Probability": 0
          			}
          		},
          		{
          			"pbit_map": "0b11000000",
          			"AES_Encryption": "TRUE",
          			"Scheduling_Policy": "Strict-Priority",
          			"Priority_Q": 1,
          			"Weight": 0,
          			"Discard_Policy": "Tail-Drop",
          			"Max_Q_Size": "auto",
          			"Discard_Config": {
          				"Min_Threshold": 0,
          				"Max_Threshold": 0,
          				"Max_Probability": 0
          			}
          		}
          	]
          }
