Browse Source

neutron: Call destroy-patch-ports before starting ovs-agent

The script called destroy-patch-ports will break connection between the
integration bridge and provider bridges configured in Neutron config
files. See https://bugzilla.redhat.com/show_bug.cgi?id=1490281 for more
details about the reason.

With systemd, we have control over dependencies between services,
therefore we can tell that destroy-patch-ports service must be run
before neutron-openvswitch-agent. But we do not have this ability using
docker. That's why this patch simply calls the script before each start
of the agent. To avoid unnecessary breakage of patch ports, the script
was enhanced to check a canary flow on integration bridge and in case
the flow is there, it will not delete the patch ports. Presence of
canary flow on integration bridge means that bridge has been already
configured. It also implies provider bridges are configured too and thus
they can't cause the ARP storm as described in Red Hat Bugzilla 1490281.

NOTE: This patch requires the packaging side to be merged first:
      https://review.rdoproject.org/r/#/c/10480/

Co-Authored-By: Dan Prince <dprince@redhat.com>

Closes-bug: #1731924

Change-Id: I005af23b1815c904ef63676553df9b14b7edfbfc
changes/54/519354/3
Jakub Libosvar 5 years ago committed by Dan Prince
parent
commit
e860b9580c
  1. 15
      docker/services/neutron-ovs-agent.yaml

15
docker/services/neutron-ovs-agent.yaml

@ -88,11 +88,7 @@ outputs:
- /run/openvswitch:/run/openvswitch
kolla_config:
/var/lib/kolla/config_files/neutron_ovs_agent.json:
command:
list_join:
- ' '
- - /usr/bin/neutron-openvswitch-agent --config-file /usr/share/neutron/neutron-dist.conf --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/openvswitch_agent.ini --config-file /etc/neutron/plugins/ml2/ml2_conf.ini --config-dir /etc/neutron/conf.d/common
- get_attr: [NeutronLogging, cmd_extra_args]
command: /neutron_ovs_agent_launcher.sh
config_files:
- source: "/var/lib/kolla/config_files/src/*"
dest: "/"
@ -102,6 +98,14 @@ outputs:
- path: /var/log/neutron
owner: neutron:neutron
recurse: true
docker_config_scripts:
neutron_ovs_agent_launcher.sh:
mode: "0755"
content: |
#!/bin/bash
set -xe
/usr/bin/python -m neutron.cmd.destroy_patch_ports --config-file /usr/share/neutron/neutron-dist.conf --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/openvswitch_agent.ini --config-dir /etc/neutron/conf.d/common --config-dir /etc/neutron/conf.d/neutron-openvswitch-agent
/usr/bin/neutron-openvswitch-agent --config-file /usr/share/neutron/neutron-dist.conf --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/openvswitch_agent.ini --config-file /etc/neutron/plugins/ml2/ml2_conf.ini --config-dir /etc/neutron/conf.d/common --log-file=/var/log/neutron/openvswitch-agent.log
docker_config:
step_3:
neutron_ovs_bridge:
@ -151,6 +155,7 @@ outputs:
-
- /var/lib/kolla/config_files/neutron_ovs_agent.json:/var/lib/kolla/config_files/config.json:ro
- /var/lib/config-data/puppet-generated/neutron/:/var/lib/kolla/config_files/src:ro
- /var/lib/docker-config-scripts/neutron_ovs_agent_launcher.sh:/neutron_ovs_agent_launcher.sh:ro
- /lib/modules:/lib/modules:ro
- /run/openvswitch:/run/openvswitch
environment:

Loading…
Cancel
Save