blob: 88ab8d1f1301c52d99dbf7430f3b31551382e3c9 [file] [log] [blame]
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'] %}
{% if 'ipv4' in hostvars[node]['ansible_' ~ compute_external_interface] %}
{% set node_interface = hostvars[node]['ansible_' ~ compute_external_interface] %}
# Compute node, fully defined in compute-nodes.yaml
{{ hostvars[node]['ansible_hostname'] }}:
type: tosca.nodes.Node
properties:
no-delete: true
no-create: true
no-update: true
# VTN bridgeId field for node {{ hostvars[node]['ansible_hostname'] }}
{{ hostvars[node]['ansible_hostname'] }}_bridgeId_tag:
type: tosca.nodes.Tag
properties:
name: bridgeId
value: of:0000{{ node_interface['macaddress'] | hwaddr('bare') }}
requirements:
- target:
node: {{ hostvars[node]['ansible_hostname'] }}
relationship: tosca.relationships.TagsObject
- service:
node: service#ONOS_CORD
relationship: tosca.relationships.MemberOfService
# VTN dataPlaneIntf field for node {{ hostvars[node]['ansible_hostname'] }}
{{ hostvars[node]['ansible_hostname'] }}_dataPlaneIntf_tag:
type: tosca.nodes.Tag
properties:
name: dataPlaneIntf
value: fabric
requirements:
- target:
node: {{ hostvars[node]['ansible_hostname'] }}
relationship: tosca.relationships.TagsObject
- service:
node: service#ONOS_CORD
relationship: tosca.relationships.MemberOfService
# VTN dataPlaneIp field for node {{ hostvars[node]['ansible_hostname'] }}
{{ hostvars[node]['ansible_hostname'] }}_dataPlaneIp_tag:
type: tosca.nodes.Tag
properties:
name: dataPlaneIp
value: {{ ( node_interface['ipv4']['address'] ~ '/' ~ node_interface['ipv4']['netmask'] ) | ipaddr('cidr') }}
requirements:
- target:
node: {{ hostvars[node]['ansible_hostname'] }}
relationship: tosca.relationships.TagsObject
- service:
node: service#ONOS_CORD
relationship: tosca.relationships.MemberOfService
{% if use_management_hosts %}
# VTN management interface field for node {{ hostvars[node]['ansible_hostname'] }}
{{ hostvars[node]['ansible_hostname'] }}_hostManagementIface_tag:
type: tosca.nodes.Tag
properties:
name: hostManagementIface
value: {{ vtn_management_host_net_interface }}
requirements:
- target:
node: {{ hostvars[node]['ansible_hostname'] }}
relationship: tosca.relationships.TagsObject
- service:
node: service#ONOS_CORD
relationship: tosca.relationships.MemberOfService
{% endif %}
{% if use_fabric %}
# Fabric location field for node {{ hostvars[node]['ansible_hostname'] }}
{{ hostvars[node]['ansible_hostname'] }}_location_tag:
type: tosca.nodes.Tag
properties:
name: location
value: of:0000000000000001/1
requirements:
- target:
node: {{ hostvars[node]['ansible_hostname'] }}
relationship: tosca.relationships.TagsObject
- service:
node: service#ONOS_Fabric
relationship: tosca.relationships.MemberOfService
{% endif %}
{% endif %}
{% endfor %}