Skip to content

Commit 513a3b1

Browse files
committed
CI: Configure IP on a linux bridge instead of OVS br-ex
OVS upgrade jobs failed due to assigning an IP on the br-ex interface (which is recycled during OVS upgrade). This change introduces a bridge and veth pair for Neutron to use. Change-Id: Ib3bee6e810fb8d31552d4c72c2a1ccae382c51f0 (cherry picked from commit 3377711)
1 parent 9fbb0d1 commit 513a3b1

File tree

6 files changed

+45
-17
lines changed

6 files changed

+45
-17
lines changed

roles/bridge/tasks/main.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
---
2+
- name: Create bridge
3+
become: true
4+
command: ip link add {{ bridge_name }} type bridge
5+
6+
- name: Bring bridge interface up
7+
become: true
8+
command: ip link set {{ bridge_name }} up
9+
10+
- name: Add member interface to bridge
11+
become: true
12+
command: ip link set {{ bridge_member_name }} master {{ bridge_name }}

roles/veth/tasks/main.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
---
2+
- name: Create veth pair
3+
become: true
4+
command: ip link add {{ veth_pair.0 }} type veth peer name {{ veth_pair.1 }}
5+
6+
- name: Bring veth pair up
7+
become: true
8+
shell: ip link set {{ veth_pair.0 }} up && ip link set {{ veth_pair.1 }} up
9+
10+
- name: Add first veth pair port to bridge
11+
become: true
12+
command: ip link set {{ veth_pair.0 }} master {{ bridge_name }}

tests/init-core-openstack.sh

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,6 @@ function init_runonce {
1313

1414
echo "Initialising OpenStack resources via init-runonce"
1515
KOLLA_DEBUG=1 tools/init-runonce |& gawk '{ print strftime("%F %T"), $0; }' &> /tmp/logs/ansible/init-runonce
16-
17-
echo "Setting address on the external network bridge"
18-
if [[ $SCENARIO == "linuxbridge" ]]; then
19-
# NOTE(yoctozepto): linuxbridge agent manages its bridges by itself
20-
# hence, we need to find the current name of the external network bridge
21-
devname=$(basename $(readlink /sys/class/net/${EXT_NET_SLAVE_DEVICE}/master))
22-
else
23-
devname=br-ex
24-
# NOTE(yoctozepto): ovs virtual interfaces are down (not used) by default
25-
# hence, we need to bring the external network bridge up
26-
sudo ip link set ${devname} up
27-
fi
28-
sudo ip addr add ${EXT_NET_LOCAL_ADDR} dev ${devname}
2916
}
3017

3118

tests/pre.yml

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,25 @@
2020
# because it is enslaved by a bridge
2121
- role: multi-node-vxlan-overlay
2222
vars:
23-
vxlan_interface_name: "{{ neutron_external_interface_name }}"
23+
vxlan_interface_name: "{{ neutron_external_vxlan_interface_name }}"
2424
vxlan_vni: 10001
25+
- role: bridge
26+
vars:
27+
bridge_name: "{{ neutron_external_bridge_name }}"
28+
bridge_member_name: "{{ neutron_external_vxlan_interface_name }}"
29+
# TODO(mnasiadka): Update ipv6 jobs to test ipv6 in Neutron
30+
- role: multi-node-managed-addressing
31+
vars:
32+
managed_interface_name: "{{ neutron_external_bridge_name }}"
33+
managed_network_prefix: "{{ neutron_external_network_prefix }}"
34+
managed_network_prefix_length: "{{ neutron_external_network_prefix_length }}"
35+
managed_network_address_family: "ipv4"
36+
- role: veth
37+
vars:
38+
veth_pair:
39+
- "veth-{{ neutron_external_bridge_name }}"
40+
- "veth-{{ neutron_external_bridge_name }}-ext"
41+
bridge_name: "{{ neutron_external_bridge_name }}"
2542
tasks:
2643
# NOTE(yoctozepto): we use gawk to add time to each logged line
2744
# outside of Ansible (e.g. for init-runonce)

tests/run.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -390,8 +390,6 @@
390390
EXT_NET_CIDR: "{{ neutron_external_network_prefix }}0/{{ neutron_external_network_prefix_length }}"
391391
EXT_NET_RANGE: "start={{ neutron_external_network_prefix }}150,end={{ neutron_external_network_prefix }}199"
392392
EXT_NET_GATEWAY: "{{ neutron_external_network_prefix }}1"
393-
EXT_NET_LOCAL_ADDR: "{{ neutron_external_network_prefix }}1/{{ neutron_external_network_prefix_length }}"
394-
EXT_NET_SLAVE_DEVICE: "{{ neutron_external_interface_name }}"
395393
SCENARIO: "{{ scenario }}"
396394
when: openstack_core_tested or scenario in ['ironic', 'magnum', 'scenario_nfv', 'zun']
397395

zuul.d/base.yaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,9 @@
3737
address_family: 'ipv4'
3838
neutron_external_network_prefix: "198.51.100."
3939
neutron_external_network_prefix_length: "24"
40-
neutron_external_interface_name: vxlan1
40+
neutron_external_bridge_name: br0
41+
neutron_external_interface_name: "veth-{{ neutron_external_bridge_name }}-ext"
42+
neutron_external_vxlan_interface_name: vxlan1
4143
tls_enabled: false
4244
# NOTE(yoctozepto): Ansible on Debian defaults to /usr/bin/python which is
4345
# python2. Let's use python3 instead as expected in 2020 and beyond.

0 commit comments

Comments
 (0)