From 76f130d6e8f7434433b2602af9794f1e9c742e1f Mon Sep 17 00:00:00 2001
From: Steve Baker <sbaker@redhat.com>
Date: Tue, 15 Aug 2017 10:26:24 +1200
Subject: [PATCH] container ovs-agent, ensure br-ex exists

Currently the container neutron-ovs-agent is stuck in a restart loop
in many environments because the bridge br-ex is missing.

This bridge is created by running the puppet class
neutron::agents::ml2::ovs but limiting that run to tag
neutron::plugins::ovs::bridge.

The hiera neutron::agents::ml2::ovs::bridge_mappings should already
exists to create the bridge with the required settings.

This change should ensure br-ex exists after step 3.

Since br-ex is created regardless of the chosen network config,
environments/docker-network.yaml is not longer required. It can be
deleted once there are no more references to it in CI and
documentation.

Change-Id: Ie425148b0ad0f38e149c5fa0a97d98ec35d0a5bb
Closes-Bug: #1699261
Closes-Bug: #1691403
Closes-Bug: #1689556
---
 docker/services/neutron-ovs-agent.yaml | 31 ++++++++++++++++++++++++++
 environments/docker-network.yaml       |  4 ++--
 2 files changed, 33 insertions(+), 2 deletions(-)

diff --git a/docker/services/neutron-ovs-agent.yaml b/docker/services/neutron-ovs-agent.yaml
index 4cce23d9be..81bb1c2046 100644
--- a/docker/services/neutron-ovs-agent.yaml
+++ b/docker/services/neutron-ovs-agent.yaml
@@ -78,6 +78,37 @@ outputs:
               owner: neutron:neutron
               recurse: true
       docker_config:
+        step_3:
+          neutron_ovs_bridge:
+            detach: false
+            image: {get_param: DockerNeutronConfigImage}
+            net: host
+            pid: host
+            user: root
+            privileged: true
+            command:
+              - puppet
+              - apply
+              - --modulepath
+              - /etc/puppet/modules:/usr/share/openstack-puppet/modules
+              - --tags
+              - file,file_line,concat,augeas,neutron::plugins::ovs::bridge
+              - -v
+              - -e
+              - include neutron::agents::ml2::ovs
+            volumes:
+              list_concat:
+                - {get_attr: [ContainersCommon, volumes]}
+                -
+                  - /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
+                  - /lib/modules:/lib/modules:ro
+                  - /run:/run
+                  - /etc/puppet:/etc/puppet:ro
+                  - /usr/share/openstack-puppet/modules/:/usr/share/openstack-puppet/modules/:ro
+                  - /var/run/openvswitch/db.sock:/var/run/openvswitch/db.sock
+            environment:
+              - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
         step_4:
           neutron_ovs_agent:
             image: {get_param: DockerOpenvswitchImage}
diff --git a/environments/docker-network.yaml b/environments/docker-network.yaml
index f10ec389b7..bd73d4b36b 100644
--- a/environments/docker-network.yaml
+++ b/environments/docker-network.yaml
@@ -1,2 +1,2 @@
-resource_registry:
-  OS::TripleO::Compute::Net::SoftwareConfig: ../net-config-bridge.yaml
+# TODO(sbaker) Remove once CI and documentation no longer use this file
+resource_registry: {}