From d6c9d6caed5fa1279f825ce9e2b6a3c40e1a7744 Mon Sep 17 00:00:00 2001
From: Derek Higgins <derekh@redhat.com>
Date: Fri, 30 Nov 2018 11:50:22 +0000
Subject: [PATCH] Replace use of Q_USE_PROVIDERNET_FOR_PUBLIC

This is being removed from devstack in
I23e1b98bd2839b79226b55700ee404a8fda83f83

Change-Id: I81b8cc348900837b876216065d7a2bf4a3665b8b
---
 devstack/plugin.sh                                     |  5 +++++
 .../contributor/ironic-multitenant-networking.rst      |  3 ---
 .../grenade-dsvm-ironic-multinode-multitenant/run.yaml | 10 +++++++++-
 zuul.d/ironic-jobs.yaml                                |  4 +++-
 4 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/devstack/plugin.sh b/devstack/plugin.sh
index b71f951286..54d50ce251 100644
--- a/devstack/plugin.sh
+++ b/devstack/plugin.sh
@@ -39,6 +39,11 @@ if is_service_enabled ir-api ir-cond; then
                 create_ironic_accounts
             fi
 
+            if [[ "$IRONIC_BAREMETAL_BASIC_OPS" == "True" && "$IRONIC_IS_HARDWARE" == "False" ]]; then
+                echo_summary "Precreating bridge: $IRONIC_VM_NETWORK_BRIDGE"
+                sudo ovs-vsctl -- --may-exist add-br $IRONIC_VM_NETWORK_BRIDGE
+            fi
+
         elif [[ "$2" == "extra" ]]; then
         # stack/extra - Called near the end after layer 1 and 2 services have
         # been started.
diff --git a/doc/source/contributor/ironic-multitenant-networking.rst b/doc/source/contributor/ironic-multitenant-networking.rst
index 64ebb81f07..8361c710c5 100644
--- a/doc/source/contributor/ironic-multitenant-networking.rst
+++ b/doc/source/contributor/ironic-multitenant-networking.rst
@@ -47,9 +47,6 @@ configured in Neutron.
     ENABLE_TENANT_VLANS=True
     Q_ML2_TENANT_NETWORK_TYPE=vlan
     TENANT_VLAN_RANGE=100:150
-    # Neutron public network type was changed to flat by default
-    # in neutron commit 1554adef26bd3bd184ddab668660428bdf392232
-    Q_USE_PROVIDERNET_FOR_PUBLIC=False
 
     # Credentials
     ADMIN_PASSWORD=password
diff --git a/playbooks/legacy/grenade-dsvm-ironic-multinode-multitenant/run.yaml b/playbooks/legacy/grenade-dsvm-ironic-multinode-multitenant/run.yaml
index c9091f6fc8..8e13f99fed 100644
--- a/playbooks/legacy/grenade-dsvm-ironic-multinode-multitenant/run.yaml
+++ b/playbooks/legacy/grenade-dsvm-ironic-multinode-multitenant/run.yaml
@@ -51,6 +51,13 @@
 
     - shell:
         cmd: |
+
+          # Precreate brbm so that it is created before neutron services are started, as they fail if it
+          # is not present
+          DEBIAN_FRONTEND=noninteractive sudo -E apt-get --option Dpkg::Options::=--force-confold --assume-yes install openvswitch-switch
+          sudo systemctl restart openvswitch-switch
+          sudo ovs-vsctl -- --may-exist add-br brbm
+
           cat << 'EOF' >> ironic-extra-vars
             export PROJECTS="openstack-dev/grenade $PROJECTS"
             export DEVSTACK_GATE_GRENADE=pullup
@@ -69,13 +76,14 @@
             export PROJECTS="openstack/networking-generic-switch $PROJECTS"
             export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin networking-generic-switch git://git.openstack.org/openstack/networking-generic-switch"
             export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_USE_LINK_LOCAL=True"
+            export DEVSTACK_LOCAL_CONFIG+=$'\n'"OVS_BRIDGE_MAPPINGS=mynetwork:brbm,public:br_ironic_vxlan"
             export DEVSTACK_LOCAL_CONFIG+=$'\n'"OVS_PHYSICAL_BRIDGE=brbm"
             export DEVSTACK_LOCAL_CONFIG+=$'\n'"PHYSICAL_NETWORK=mynetwork"
             export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_PROVISION_NETWORK_NAME=ironic-provision"
             export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_PROVISION_SUBNET_PREFIX=10.0.5.0/24"
             export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_PROVISION_SUBNET_GATEWAY=10.0.5.1"
             export DEVSTACK_LOCAL_CONFIG+=$'\n'"Q_PLUGIN=ml2"
-            export DEVSTACK_LOCAL_CONFIG+=$'\n'"Q_USE_PROVIDERNET_FOR_PUBLIC=False"
+            export DEVSTACK_LOCAL_CONFIG+=$'\n'"PUBLIC_BRIDGE=br_ironic_vxlan"
             export DEVSTACK_LOCAL_CONFIG+=$'\n'"ENABLE_TENANT_VLANS=True"
             export DEVSTACK_LOCAL_CONFIG+=$'\n'"Q_ML2_TENANT_NETWORK_TYPE=vlan"
             export DEVSTACK_LOCAL_CONFIG+=$'\n'"TENANT_VLAN_RANGE=100:150"
diff --git a/zuul.d/ironic-jobs.yaml b/zuul.d/ironic-jobs.yaml
index 2d35f650c5..f82d318c6f 100644
--- a/zuul.d/ironic-jobs.yaml
+++ b/zuul.d/ironic-jobs.yaml
@@ -385,12 +385,13 @@
         IRONIC_VM_SPECS_RAM: 384
         OS_TEST_TIMEOUT: 2400
         OVERRIDE_PUBLIC_BRIDGE_MTU: 1400
+        OVS_BRIDGE_MAPPINGS: 'mynetwork:brbm,public:br-infra'
         OVS_PHYSICAL_BRIDGE: brbm
         PHYSICAL_NETWORK: mynetwork
+        PUBLIC_BRIDGE: br-infra
         Q_AGENT: openvswitch
         Q_ML2_TENANT_NETWORK_TYPE: vlan
         Q_PLUGIN: ml2
-        Q_USE_PROVIDERNET_FOR_PUBLIC: False
         SWIFT_ENABLE_TEMPURLS: True
         SWIFT_TEMPURL_KEY: secretkey
         TEMPEST_PLUGINS: "'{{ ansible_user_dir }}/src/git.openstack.org/openstack/ironic-tempest-plugin'"
@@ -455,6 +456,7 @@
           IRONIC_VM_LOG_DIR: '{{ devstack_base_dir }}/ironic-bm-logs'
           IRONIC_VM_NETWORK_BRIDGE: sub1brbm
           IRONIC_VM_SPECS_RAM: 384
+          OVS_BRIDGE_MAPPINGS: 'mynetwork:sub1brbm,public:br-infra'
           OVS_PHYSICAL_BRIDGE: sub1brbm
           PHYSICAL_NETWORK: mynetwork
           Q_ML2_TENANT_NETWORK_TYPE: vlan