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

imports:
  - custom_types/addresspool.yaml
  - custom_types/addressmanagerservice.yaml
  - custom_types/addressmanagerserviceinstance.yaml
  - custom_types/network.yaml
  - custom_types/networktemplate.yaml
  - custom_types/serviceinstance.yaml
  - custom_types/serviceinstancelink.yaml
  - custom_types/site.yaml
  - custom_types/slice.yaml

description: public network config, generated by rcord profile

topology_template:
  node_templates:

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

    {{ site_name }}_public:
      description: This slice exists solely to own the public network
      type: tosca.nodes.Slice
      properties:
        network: noauto
        name: {{ site_name }}_public
      requirements:
        - site:
            node: {{ site_name }}
            relationship: tosca.relationships.BelongsToOne

# Address Manager service, fully created in cord-services.yaml.j2
    service#addressmanager:
      type: tosca.nodes.AddressManagerService
      properties:
        name: addressmanager
        must-exist: true

# public network
    public_template:
      type: tosca.nodes.NetworkTemplate
      properties:
        name: public_template
        visibility: public
        translation: none
        vtn_kind: PUBLIC

    public:
      type: tosca.nodes.Network
      properties:
        name: public
        permit_all_slices: true
        subnet: {{ addresspool_public_cidr }}
        # ip_version: 4
      requirements:
        - template:
            node: public_template
            relationship: tosca.relationships.BelongsToOne
        - owner:
            node: {{ site_name }}_public
            relationship: tosca.relationships.BelongsToOne

# Created in cord-services.yaml.j2
    addresses_public:
      type: tosca.nodes.AddressPool
      properties:
        name: addresses_public
        must-exist: true

    AddressManagerServiceInstancePublicNetwork:
      type: tosca.nodes.AddressManagerServiceInstance
      requirements:
        - owner:
            node: service#addressmanager
            relationship: tosca.relationships.BelongsToOne
        - address_pool:
            node: addresses_public
            relationship: tosca.relationships.BelongsToOne
      properties:
        name: AM_public_net

    public_to_address_manager:
      type: tosca.nodes.ServiceInstanceLink
      requirements:
        - provider_service_instance:
            node: AddressManagerServiceInstancePublicNetwork
            relationship: tosca.relationships.BelongsToOne
        - subscriber_network:
            node: public
            relationship: tosca.relationships.BelongsToOne

