# 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
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
          			}
          		}
          	]
          }
