From 6c2e68a545d5f2bc52e45352d2e96889fafdae04 Mon Sep 17 00:00:00 2001
From: Doug Szumski <doug@stackhpc.com>
Date: Fri, 20 Jul 2018 11:45:40 +0100
Subject: [PATCH] Support configuring tunnel network

Support configuring a separate tunnel network for tenant
overlay network traffic.

Change-Id: I74274823d6fe3a42aabcca00c8cd20e1abb3d219
Story: 2003054
Task: 23091
---
 ansible/group_vars/all/compute                              | 3 ++-
 ansible/group_vars/all/controllers                          | 3 ++-
 ansible/group_vars/all/network                              | 3 +++
 ansible/kolla-ansible.yml                                   | 1 +
 ansible/roles/kolla-ansible/defaults/main.yml               | 1 +
 ansible/roles/kolla-ansible/templates/globals.yml.j2        | 2 +-
 ansible/roles/kolla-ansible/tests/test-defaults.yml         | 2 ++
 ansible/roles/kolla-ansible/tests/test-extras.yml           | 2 ++
 dev/dev-vagrant.yml                                         | 1 +
 doc/source/configuration/network.rst                        | 6 ++++++
 etc/kayobe/networks.yml                                     | 3 +++
 ...support_configuring_tunnel_network-1646eef887d72abf.yaml | 4 ++++
 12 files changed, 28 insertions(+), 3 deletions(-)
 create mode 100644 releasenotes/notes/support_configuring_tunnel_network-1646eef887d72abf.yaml

diff --git a/ansible/group_vars/all/compute b/ansible/group_vars/all/compute
index 6e186963..3d780bb7 100644
--- a/ansible/group_vars/all/compute
+++ b/ansible/group_vars/all/compute
@@ -18,7 +18,8 @@ compute_network_interfaces: >
 compute_default_network_interfaces: >
   {{ ([admin_oc_net_name,
        internal_net_name,
-       storage_net_name] +
+       storage_net_name,
+       tunnel_net_name] +
       (external_net_names if kolla_enable_neutron_provider_networks | bool else [])) | unique | list }}
 
 # List of extra networks to which compute nodes are attached.
diff --git a/ansible/group_vars/all/controllers b/ansible/group_vars/all/controllers
index 360d9dba..bc3812d1 100644
--- a/ansible/group_vars/all/controllers
+++ b/ansible/group_vars/all/controllers
@@ -32,7 +32,8 @@ controller_extra_network_interfaces: []
 
 # List of network interfaces to which network nodes are attached.
 controller_network_host_network_interfaces: >
-  {{ ([public_net_name] +
+  {{ ([public_net_name,
+       tunnel_net_name] +
       external_net_names) | unique | list }}
 
 ###############################################################################
diff --git a/ansible/group_vars/all/network b/ansible/group_vars/all/network
index affb8ffd..0646b3cb 100644
--- a/ansible/group_vars/all/network
+++ b/ansible/group_vars/all/network
@@ -40,6 +40,9 @@ public_net_name: >
      if external_net_names | length > 0 else
      None }}
 
+# Name of the network used by Neutron to carry tenant overlay network traffic.
+tunnel_net_name: "{{ internal_net_name }}"
+
 # Name of the network used to carry storage data traffic.
 storage_net_name: 'storage_net'
 
diff --git a/ansible/kolla-ansible.yml b/ansible/kolla-ansible.yml
index e495a934..56343ca4 100644
--- a/ansible/kolla-ansible.yml
+++ b/ansible/kolla-ansible.yml
@@ -65,6 +65,7 @@
             kolla_provision_interface: "{{ provision_wl_net_name | net_interface(controller_host) | replace('-', '_') }}"
             kolla_inspector_dnsmasq_interface: "{{ inspection_net_name | net_interface(controller_host) | replace('-', '_') }}"
             kolla_dns_interface: "{{ public_net_name | net_interface(controller_host) | replace('-', '_') }}"
+            kolla_tunnel_interface: "{{ tunnel_net_name | net_interface(controller_host) | replace('-', '_') }}"
 
         - name: Validate controller Kolla Ansible network configuration
           fail:
diff --git a/ansible/roles/kolla-ansible/defaults/main.yml b/ansible/roles/kolla-ansible/defaults/main.yml
index abbdc28a..cbd5e558 100644
--- a/ansible/roles/kolla-ansible/defaults/main.yml
+++ b/ansible/roles/kolla-ansible/defaults/main.yml
@@ -143,6 +143,7 @@ kolla_api_interface:
 kolla_storage_interface:
 kolla_cluster_interface:
 kolla_dns_interface:
+kolla_tunnel_interface:
 
 # This is the raw interface given to neutron as its external network port. Even
 # though an IP address can exist on this interface, it will be unusable in most
diff --git a/ansible/roles/kolla-ansible/templates/globals.yml.j2 b/ansible/roles/kolla-ansible/templates/globals.yml.j2
index 472cb6d7..445ed53b 100644
--- a/ansible/roles/kolla-ansible/templates/globals.yml.j2
+++ b/ansible/roles/kolla-ansible/templates/globals.yml.j2
@@ -102,7 +102,7 @@ kolla_external_vip_interface: "{{ kolla_external_vip_interface }}"
 storage_interface: "{{ kolla_storage_interface }}"
 cluster_interface: "{{ kolla_cluster_interface }}"
 dns_interface: "{{ kolla_dns_interface }}"
-# NOTE: tunnel_interface is unused.
+tunnel_interface: "{{ kolla_tunnel_interface }}"
 
 # This is the raw interface given to neutron as its external network port. Even
 # though an IP address can exist on this interface, it will be unusable in most
diff --git a/ansible/roles/kolla-ansible/tests/test-defaults.yml b/ansible/roles/kolla-ansible/tests/test-defaults.yml
index 8a66d484..8067afe6 100644
--- a/ansible/roles/kolla-ansible/tests/test-defaults.yml
+++ b/ansible/roles/kolla-ansible/tests/test-defaults.yml
@@ -44,6 +44,7 @@
             kolla_bifrost_network_interface: "eth8"
             kolla_provision_interface: "eth9"
             kolla_inspector_dnsmasq_interface: "eth10"
+            kolla_tunnel_interface: "eth11"
             kolla_enable_tls_external: False
             kolla_enable_grafana: False
             kolla_external_fqdn_cert: "fake-cert"
@@ -91,6 +92,7 @@
               neutron_bridge_name: "br0,br1"
               bifrost_network_interface: "eth8"
               ironic_dnsmasq_interface: "eth10"
+              tunnel_interface: "eth11"
               neutron_plugin_agent: "openvswitch"
               kolla_enable_tls_external: False
               kolla_external_fqdn_cert: "fake-cert"
diff --git a/ansible/roles/kolla-ansible/tests/test-extras.yml b/ansible/roles/kolla-ansible/tests/test-extras.yml
index be579663..50b142f8 100644
--- a/ansible/roles/kolla-ansible/tests/test-extras.yml
+++ b/ansible/roles/kolla-ansible/tests/test-extras.yml
@@ -49,6 +49,7 @@
             kolla_bifrost_network_interface: "eth8"
             kolla_provision_interface: "eth9"
             kolla_inspector_dnsmasq_interface: "eth10"
+            kolla_tunnel_interface: "eth11"
             kolla_neutron_ml2_type_drivers:
               - "fake-ml2-type-1"
               - "fake-ml2-type-2"
@@ -186,6 +187,7 @@
               neutron_bridge_name: "br0,br1"
               bifrost_network_interface: "eth8"
               ironic_dnsmasq_interface: "eth10"
+              tunnel_interface: "eth11"
               neutron_plugin_agent: "openvswitch"
               kolla_enable_tls_external: False
               kolla_external_fqdn_cert: "fake-cert"
diff --git a/dev/dev-vagrant.yml b/dev/dev-vagrant.yml
index dbf149c1..97ed653f 100644
--- a/dev/dev-vagrant.yml
+++ b/dev/dev-vagrant.yml
@@ -27,6 +27,7 @@ oob_wl_net_name: aio
 provision_wl_net_name: aio
 internal_net_name: aio
 public_net_name: aio
+tunnel_net_name: aio
 external_net_name: aio
 storage_net_name: aio
 storage_mgmt_net_name: aio
diff --git a/doc/source/configuration/network.rst b/doc/source/configuration/network.rst
index b5957356..58ec1ec8 100644
--- a/doc/source/configuration/network.rst
+++ b/doc/source/configuration/network.rst
@@ -420,6 +420,9 @@ Internal network (``internal_net_name``)
     Name of the network used to expose the internal OpenStack API endpoints.
 Public network (``public_net_name``)
     Name of the network used to expose the public OpenStack API endpoints.
+Tunnel network (``tunnel_net_name``)
+    Name of the network used by Neutron to carry tenant overlay network
+    traffic.
 External networks (``external_net_names``, deprecated: ``external_net_name``)
     List of names of networks used to provide external network access via
     Neutron. If ``external_net_name`` is defined, ``external_net_names``
@@ -450,6 +453,7 @@ To configure network roles in a system with two networks, ``example1`` and
    provision_wl_net_name: example2
    internal_net_name: example2
    public_net_name: example2
+   tunnel_net_name: example2
    external_net_name: example2
    storage_net_name: example2
    storage_mgmt_net_name: example2
@@ -661,6 +665,7 @@ attached to the following networks:
 
 * public network
 * external network
+* tunnel network
 
 This list may be extended by setting ``controller_extra_network_interfaces`` to a
 list of names of additional networks to attach.  Alternatively, the list may be
@@ -692,6 +697,7 @@ By default, virtualised compute hosts are attached to the following networks:
 * overcloud admin network
 * internal network
 * storage network
+* tunnel network
 
 This list may be extended by setting ``compute_extra_network_interfaces`` to a
 list of names of additional networks to attach.  Alternatively, the list may be
diff --git a/etc/kayobe/networks.yml b/etc/kayobe/networks.yml
index fdc1420e..4062c6f5 100644
--- a/etc/kayobe/networks.yml
+++ b/etc/kayobe/networks.yml
@@ -36,6 +36,9 @@
 # Name of the network used to expose the public OpenStack API endpoints.
 #public_net_name:
 
+# Name of the network used by Neutron to carry tenant overlay network traffic.
+#tunnel_net_name:
+
 # Name of the network used to carry storage data traffic.
 #storage_net_name:
 
diff --git a/releasenotes/notes/support_configuring_tunnel_network-1646eef887d72abf.yaml b/releasenotes/notes/support_configuring_tunnel_network-1646eef887d72abf.yaml
new file mode 100644
index 00000000..14be9320
--- /dev/null
+++ b/releasenotes/notes/support_configuring_tunnel_network-1646eef887d72abf.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - Support configuring tunnel network and interface for VM to VM
+    communication.
-- 
GitLab