{#
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/xos.yaml
   - custom_types/vee.yaml
   - custom_types/veg.yaml

topology_template:
  node_templates:

# site, fully created in deployment.yaml
    {{ site_name }}:
      type: tosca.nodes.Site
      properties:
        no-delete: true
        no-create: true
        no-update: true
# vsg slice, volt service, fully created in cord-services.yaml
    {{ site_name }}_veg:
      type: tosca.nodes.Slice
      properties:
        no-delete: true
        no-create: true
        no-update: true

    service#vee:
      type: tosca.nodes.VEEService
      properties:
        no-delete: true
        no-create: true
        no-update: true

    service#vrouter:
      type: tosca.nodes.VRouterService
      properties:
        no-delete: true
        no-create: true
        no-update: true

    service#veg:
      type: tosca.nodes.VEGService
      requirements:
      properties:
        no-delete: true
        no-create: true
        no-update: true

# Test subscriber

    # Let's add a user who can be administrator of the household
    johndoe@myhouse.com:
      type: tosca.nodes.User
      properties:
        password: letmein
        firstname: john
        lastname: doe
      requirements:
        - site:
            node: {{ site_name }}
            relationship: tosca.relationships.MemberOfSite
        - dependency:
            node: {{ site_name }}_veg
            relationship: tosca.relationships.DependsOn

    # Subscribers require a service in 4.0, so make sure we have an ecordlocal service.
    # FIXME: Move to a different tosca recipe?
    service#ecordlocal:
      type: tosca.nodes.Service

    # A subscriber
    My Enterprise:
      type: tosca.nodes.Tenant
      properties:
        service_specific_id: 123
      requirements:
        - provider_service:
            node: service#ecordlocal
            relationship: tosca.relationships.MemberOfService

    My vEG:
      type: tosca.nodes.VEGTenant
      properties:
        service_specific_id: 123
      requirements:
        - provider_service:
            node: service#veg
            relationship: tosca.relationships.MemberOfService
        - subscriber_tenant:
            node: My vEE
            relationship: tosca.relationships.BelongsToTenant

    My vEE:
      type: tosca.nodes.VEEServiceInstance
      properties:
        service_specific_id: 123
        s_tag: 123
        c_tag: 123
      requirements:
        - provider_service:
            node: service#vee
            relationship: tosca.relationships.MemberOfService
        - subscriber:
            node: My Enterprise
            relationship: tosca.relationships.BelongsToSubscriber
#        - dependency:
#            node: {{ site_name }}_veg
#            relationship: tosca.relationships.DependsOn
