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

description: Configures VTN networking for OpenStack compute nodes

topology_template:
  node_templates:

# VTN ONOS app, fully defined in vtn-service.yaml
    service#ONOS_CORD:
      type: tosca.nodes.ONOSService
      properties:
        no-delete: true
        no-create: true
        no-update: true

{% if use_fabric %}
# Fabric, fully defined in fabric.yaml
    service#ONOS_Fabric:
      type: tosca.nodes.ONOSService
      properties:
        no-delete: true
        no-create: true
        no-update: true
{% endif %}

# VTN networking for OpenStack Compute Nodes
{% for node in groups['compute'] %}
{% for ext_if in compute_external_interfaces %}
{% set ansible_ext_if = 'ansible_' ~ ext_if | regex_replace('\W', '_') %}
{% if hostvars[node][ansible_ext_if] is defined and 'ipv4' in hostvars[node][ansible_ext_if] %}
{% set node_interface = hostvars[node][ansible_ext_if] %}

# Compute node: {{ node }}, with interface {{ ansible_ext_if }}
    {{ hostvars[node]['ansible_hostname'] }}:
      type: tosca.nodes.Node
      properties:
        no-delete: true
        no-create: true
        bridgeId: of:0000{{ node_interface['macaddress'] | hwaddr('bare') }}
        dataPlaneIntf: fabric
        dataPlaneIp: {{ ( node_interface['ipv4']['address'] ~ '/' ~ node_interface['ipv4']['netmask'] ) | ipaddr('cidr') }}
{% if use_management_hosts %}
        hostManagementIface: {{ vtn_management_host_net_interface }}
{% endif %}
    
{% endif %}
{% endfor %}
{% endfor %}

