| 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 |
| 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 %} |
| {% endfor %} |
| |