
{#
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.
#}


tosca_definitions_version: tosca_simple_yaml_1_0

description: Creates a CORD test subscriber, created by platform-install

imports:
  - custom_types/oltdevice.yaml
  - custom_types/ponport.yaml
  - custom_types/rcordsubscriber.yaml
  - custom_types/serviceinstancelink.yaml
  - custom_types/site.yaml
  - custom_types/slice.yaml
  - custom_types/user.yaml
  - custom_types/voltservice.yaml

topology_template:
  node_templates:

    # site, fully created in deployment.yaml
    {{ site_name }}:
      type: tosca.nodes.Site
      properties:
        name: {{ site_name }}
        must-exist: true

    # vsg slice, volt service, fully created in cord-services.yaml
    {{ site_name }}_vsg:
      type: tosca.nodes.Slice
      properties:
        name: {{ site_name }}_vsg
        must-exist: true

    service#volt:
      type: tosca.nodes.VOLTService
      properties:
        name: volt
        must-exist: true

    # Setup an OLT Device
    olt_device:
      type: tosca.nodes.OLTDevice
      properties:
        name: volt-1
        host: 8.8.8.8
        port: 2194
        device_type: simulated_olt
      requirements:
        - volt_service:
            node: service#volt
            relationship: tosca.relationships.BelongsToOne

    pon_port:
      type: tosca.nodes.PONPort
      properties:
        name: volt-port-1
        s_tag: 222
        port_id: "7"
      requirements:
        - olt_device:
            node: olt_device
            relationship: tosca.relationships.BelongsToOne

    onu:
      type: tosca.nodes.ONUDevice
      properties:
        serial_number: BRCM1234
        vendor: Broadcom
        device_type: broadcom_onu
      requirements:
        - pon_port:
            node: pon_port
            relationship: tosca.relationships.BelongsToOne
            
    # A subscriber
    my_house:
      type: tosca.nodes.RCORDSubscriber
      properties:
        name: My House
        service_specific_id: "123"
        firewall_enable: false
        cdn_enable: false
        url_filter_enable: false
        url_filter_level: R
        c_tag: 111
        onu_device: BRCM1234


    # TODO needs to be moved to a new model (now they are JSON encoded)
    # Mom's PC:
    #   type: tosca.nodes.CORDUser
    #   properties:
    #     mac: 01:02:03:04:05:06
    #     level: PG_13
    #   requirements:
    #     - household:
    #         node: My House
    #         relationship: tosca.relationships.SubscriberDevice

    # Dad's PC:
    #   type: tosca.nodes.CORDUser
    #   properties:
    #     mac: 90:E2:BA:82:F9:75
    #     level: PG_13
    #   requirements:
    #     - household:
    #         node: My House
    #         relationship: tosca.relationships.SubscriberDevice

    # Jack's Laptop:
    #   type: tosca.nodes.CORDUser
    #   properties:
    #     mac: 68:5B:35:9D:91:D5
    #     level: PG_13
    #   requirements:
    #     - household:
    #         node: My House
    #         relationship: tosca.relationships.SubscriberDevice

    # Jill's Laptop:
    #   type: tosca.nodes.CORDUser
    #   properties:
    #     mac: 34:36:3B:C9:B6:A6
    #     level: PG_13
    #   requirements:
    #     - household:
    #         node: My House
    #         relationship: tosca.relationships.SubscriberDevice
