Merge "Test metadata over IPv6"
diff --git a/neutron_tempest_plugin/scenario/test_floatingip.py b/neutron_tempest_plugin/scenario/test_floatingip.py
index 7c59d3a..d541642 100644
--- a/neutron_tempest_plugin/scenario/test_floatingip.py
+++ b/neutron_tempest_plugin/scenario/test_floatingip.py
@@ -392,6 +392,7 @@
 
     same_network = None
 
+    @test.unstable_test("bug 1897326")
     @decorators.idempotent_id('1bdd849b-03dd-4b8f-994f-457cf8a36f93')
     def test_floating_ip_update(self):
         """Test updating FIP with another port.
diff --git a/neutron_tempest_plugin/scenario/test_port_forwardings.py b/neutron_tempest_plugin/scenario/test_port_forwardings.py
index da1db1b..3158ea0 100644
--- a/neutron_tempest_plugin/scenario/test_port_forwardings.py
+++ b/neutron_tempest_plugin/scenario/test_port_forwardings.py
@@ -14,6 +14,7 @@
 #    under the License.
 
 from neutron_lib import constants
+from neutron_lib.utils import test
 from oslo_log import log
 from tempest.lib.common.utils import data_utils
 from tempest.lib import decorators
@@ -108,6 +109,7 @@
                     "Timed out waiting for message from server {!r} ".format(
                         server['id'])))
 
+    @test.unstable_test("bug 1896735")
     @decorators.idempotent_id('ab40fc48-ca8d-41a0-b2a3-f6679c847bfe')
     def test_port_forwarding_to_2_servers(self):
         udp_sg_rule = {'protocol': constants.PROTO_NAME_UDP,
@@ -123,6 +125,7 @@
         # And now test UDP port forwarding using nc
         self._test_udp_port_forwarding(servers)
 
+    @test.unstable_test("bug 1896735")
     @decorators.idempotent_id('aa19d46c-a4a6-11ea-bb37-0242ac130002')
     def test_port_forwarding_editing_and_deleting_tcp_rule(self):
         server = self._prepare_resources(
diff --git a/playbooks/linuxbridge-scenario-pre-run.yaml b/playbooks/linuxbridge-scenario-pre-run.yaml
new file mode 100644
index 0000000..26586f6
--- /dev/null
+++ b/playbooks/linuxbridge-scenario-pre-run.yaml
@@ -0,0 +1,7 @@
+- hosts: all
+  tasks:
+    # TODO(slaweq): remove it when nftables will support syntax for src and
+    # destination IP addresses in arp tables:
+    - include_role:
+        name: legacy_ebtables
+      when: ansible_distribution_release | lower == 'focal'
diff --git a/zuul.d/master_jobs.yaml b/zuul.d/master_jobs.yaml
index ab6973c..5607274 100644
--- a/zuul.d/master_jobs.yaml
+++ b/zuul.d/master_jobs.yaml
@@ -158,6 +158,9 @@
     name: neutron-tempest-plugin-scenario-linuxbridge
     parent: neutron-tempest-plugin-scenario
     timeout: 10000
+    roles:
+      - zuul: openstack/neutron
+    pre-run: playbooks/linuxbridge-scenario-pre-run.yaml
     vars:
       network_api_extensions: *api_extensions
       devstack_localrc:
@@ -202,10 +205,6 @@
         ENABLE_CHASSIS_AS_GW: true
         OVN_L3_CREATE_PUBLIC_NETWORK: true
         OVN_DBS_LOG_LEVEL: dbg
-        # TODO(mjozefcz): Stop compiling OVS modules when meter action in kernel
-        # will be released in Ubuntu Bionic.
-        # More info: https://mail.openvswitch.org/pipermail/ovs-discuss/2018-December/048009.html
-        OVN_BUILD_MODULES: True
         ENABLE_TLS: True
         OVN_IGMP_SNOOPING_ENABLE: True
       devstack_services:
diff --git a/zuul.d/project.yaml b/zuul.d/project.yaml
index db4d6e1..afab1d3 100644
--- a/zuul.d/project.yaml
+++ b/zuul.d/project.yaml
@@ -3,7 +3,11 @@
     check:
       jobs:
         - neutron-tempest-plugin-api
-        - neutron-tempest-plugin-designate-scenario
+        - neutron-tempest-plugin-designate-scenario:
+            # TODO(slaweq): switch it to be voting when bug
+            # https://bugs.launchpad.net/neutron/+bug/1891309
+            # will be fixed
+            voting: false
         - neutron-tempest-plugin-scenario-linuxbridge
         - neutron-tempest-plugin-scenario-openvswitch
         - neutron-tempest-plugin-scenario-openvswitch-iptables_hybrid
@@ -44,7 +48,11 @@
     check:
       jobs:
         - neutron-tempest-plugin-api-rocky
-        - neutron-tempest-plugin-designate-scenario-rocky
+        - neutron-tempest-plugin-designate-scenario-rocky:
+            # TODO(slaweq): switch it to be voting when bug
+            # https://bugs.launchpad.net/neutron/+bug/1891309
+            # will be fixed
+            voting: false
         - neutron-tempest-plugin-scenario-linuxbridge-rocky
         - neutron-tempest-plugin-scenario-openvswitch-rocky
         - neutron-tempest-plugin-scenario-openvswitch-iptables_hybrid-rocky
@@ -63,7 +71,11 @@
     check:
       jobs:
         - neutron-tempest-plugin-api-stein
-        - neutron-tempest-plugin-designate-scenario-stein
+        - neutron-tempest-plugin-designate-scenario-stein:
+            # TODO(slaweq): switch it to be voting when bug
+            # https://bugs.launchpad.net/neutron/+bug/1891309
+            # will be fixed
+            voting: false
         - neutron-tempest-plugin-scenario-linuxbridge-stein
         - neutron-tempest-plugin-scenario-openvswitch-stein
         - neutron-tempest-plugin-scenario-openvswitch-iptables_hybrid-stein
@@ -82,7 +94,11 @@
     check:
       jobs:
         - neutron-tempest-plugin-api-train
-        - neutron-tempest-plugin-designate-scenario-train
+        - neutron-tempest-plugin-designate-scenario-train:
+            # TODO(slaweq): switch it to be voting when bug
+            # https://bugs.launchpad.net/neutron/+bug/1891309
+            # will be fixed
+            voting: false
         - neutron-tempest-plugin-scenario-linuxbridge-train
         - neutron-tempest-plugin-scenario-openvswitch-train
         - neutron-tempest-plugin-scenario-openvswitch-iptables_hybrid-train
@@ -101,7 +117,11 @@
     check:
       jobs:
         - neutron-tempest-plugin-api-ussuri
-        - neutron-tempest-plugin-designate-scenario-ussuri
+        - neutron-tempest-plugin-designate-scenario-ussuri:
+            # TODO(slaweq): switch it to be voting when bug
+            # https://bugs.launchpad.net/neutron/+bug/1891309
+            # will be fixed
+            voting: false
         - neutron-tempest-plugin-scenario-linuxbridge-ussuri
         - neutron-tempest-plugin-scenario-openvswitch-ussuri
         - neutron-tempest-plugin-scenario-openvswitch-iptables_hybrid-ussuri
@@ -131,9 +151,17 @@
         - neutron-tempest-plugin-sfc
         - neutron-tempest-plugin-sfc-train
         - neutron-tempest-plugin-sfc-ussuri
-        - neutron-tempest-plugin-bgpvpn-bagpipe
+        - neutron-tempest-plugin-bgpvpn-bagpipe:
+            # TODO(slaweq): switch it to be voting when bug
+            # https://bugs.launchpad.net/networking-bagpipe/+bug/1897408
+            # will be fixed
+            voting: false
         - neutron-tempest-plugin-bgpvpn-bagpipe-train
-        - neutron-tempest-plugin-bgpvpn-bagpipe-ussuri
+        - neutron-tempest-plugin-bgpvpn-bagpipe-ussuri:
+            # TODO(slaweq): switch it to be voting when bug
+            # https://bugs.launchpad.net/networking-bagpipe/+bug/1897408
+            # will be fixed
+            voting: false
         - neutron-tempest-plugin-fwaas-train:
             # TODO(slaweq): switch it to be voting when bug
             # https://bugs.launchpad.net/neutron/+bug/1858645 will be fixed
@@ -150,5 +178,8 @@
     gate:
       jobs:
         - neutron-tempest-plugin-sfc
-        - neutron-tempest-plugin-bgpvpn-bagpipe
+        # TODO(slaweq): make bgpvpn-bagpipe job gating again when
+        # https://bugs.launchpad.net/networking-bagpipe/+bug/1897408
+        # will be fixed
+        #- neutron-tempest-plugin-bgpvpn-bagpipe
         - neutron-tempest-plugin-dynamic-routing
diff --git a/zuul.d/stein_jobs.yaml b/zuul.d/stein_jobs.yaml
index 745b40f..ff6ed38 100644
--- a/zuul.d/stein_jobs.yaml
+++ b/zuul.d/stein_jobs.yaml
@@ -1,6 +1,7 @@
 - job:
     name: neutron-tempest-plugin-api-stein
     parent: neutron-tempest-plugin-api
+    nodeset: openstack-single-node-bionic
     override-checkout: stable/stein
     vars:
       branch_override: stable/stein
@@ -78,6 +79,7 @@
 - job:
     name: neutron-tempest-plugin-scenario-openvswitch-stein
     parent: neutron-tempest-plugin-scenario-openvswitch
+    nodeset: openstack-single-node-bionic
     override-checkout: stable/stein
     vars:
       branch_override: stable/stein
@@ -93,6 +95,7 @@
 - job:
     name: neutron-tempest-plugin-scenario-openvswitch-iptables_hybrid-stein
     parent: neutron-tempest-plugin-scenario-openvswitch-iptables_hybrid
+    nodeset: openstack-single-node-bionic
     override-checkout: stable/stein
     vars:
       branch_override: stable/stein
@@ -108,6 +111,7 @@
 - job:
     name: neutron-tempest-plugin-scenario-linuxbridge-stein
     parent: neutron-tempest-plugin-scenario-linuxbridge
+    nodeset: openstack-single-node-bionic
     override-checkout: stable/stein
     vars:
       branch_override: stable/stein
@@ -123,6 +127,7 @@
 - job:
     name: neutron-tempest-plugin-dvr-multinode-scenario-stein
     parent: neutron-tempest-plugin-dvr-multinode-scenario
+    nodeset: openstack-two-node-bionic
     override-checkout: stable/stein
     vars:
       network_api_extensions_common: *api_extensions
@@ -131,6 +136,7 @@
 - job:
     name: neutron-tempest-plugin-designate-scenario-stein
     parent: neutron-tempest-plugin-designate-scenario
+    nodeset: openstack-single-node-bionic
     override-checkout: stable/stein
     required-projects:
       - openstack/devstack-gate
diff --git a/zuul.d/train_jobs.yaml b/zuul.d/train_jobs.yaml
index 0dca95c..a9cc5be 100644
--- a/zuul.d/train_jobs.yaml
+++ b/zuul.d/train_jobs.yaml
@@ -1,6 +1,7 @@
 - job:
     name: neutron-tempest-plugin-api-train
     parent: neutron-tempest-plugin-api
+    nodeset: openstack-single-node-bionic
     override-checkout: stable/train
     vars:
       branch_override: stable/train
@@ -83,6 +84,7 @@
 - job:
     name: neutron-tempest-plugin-scenario-openvswitch-train
     parent: neutron-tempest-plugin-scenario-openvswitch
+    nodeset: openstack-single-node-bionic
     override-checkout: stable/train
     vars:
       branch_override: stable/train
@@ -98,6 +100,7 @@
 - job:
     name: neutron-tempest-plugin-scenario-openvswitch-iptables_hybrid-train
     parent: neutron-tempest-plugin-scenario-openvswitch-iptables_hybrid
+    nodeset: openstack-single-node-bionic
     override-checkout: stable/train
     vars:
       branch_override: stable/train
@@ -113,6 +116,7 @@
 - job:
     name: neutron-tempest-plugin-scenario-linuxbridge-train
     parent: neutron-tempest-plugin-scenario-linuxbridge
+    nodeset: openstack-single-node-bionic
     override-checkout: stable/train
     vars:
       branch_override: stable/train
@@ -128,6 +132,7 @@
 - job:
     name: neutron-tempest-plugin-dvr-multinode-scenario-train
     parent: neutron-tempest-plugin-dvr-multinode-scenario
+    nodeset: openstack-two-node-bionic
     override-checkout: stable/train
     vars:
       network_api_extensions_common: *api_extensions
@@ -136,6 +141,7 @@
 - job:
     name: neutron-tempest-plugin-designate-scenario-train
     parent: neutron-tempest-plugin-designate-scenario
+    nodeset: openstack-single-node-bionic
     override-checkout: stable/train
     vars:
       branch_override: stable/train
@@ -144,6 +150,7 @@
 - job:
     name: neutron-tempest-plugin-sfc-train
     parent: neutron-tempest-plugin-sfc
+    nodeset: openstack-single-node-bionic
     override-checkout: stable/train
     vars:
       branch_override: stable/train
@@ -152,6 +159,7 @@
 - job:
     name: neutron-tempest-plugin-bgpvpn-bagpipe-train
     parent: neutron-tempest-plugin-bgpvpn-bagpipe
+    nodeset: openstack-single-node-bionic
     override-checkout: stable/train
     vars:
       branch_override: stable/train
@@ -160,6 +168,7 @@
 - job:
     name: neutron-tempest-plugin-fwaas-train
     parent: neutron-tempest-plugin-fwaas-ussuri
+    nodeset: openstack-single-node-bionic
     override-checkout: stable/train
     vars:
       branch_override: stable/train
diff --git a/zuul.d/ussuri_jobs.yaml b/zuul.d/ussuri_jobs.yaml
index 27422a9..135d9f5 100644
--- a/zuul.d/ussuri_jobs.yaml
+++ b/zuul.d/ussuri_jobs.yaml
@@ -1,6 +1,7 @@
 - job:
     name: neutron-tempest-plugin-api-ussuri
     parent: neutron-tempest-plugin-api
+    nodeset: openstack-single-node-bionic
     override-checkout: stable/ussuri
     vars:
       branch_override: stable/ussuri
@@ -87,6 +88,7 @@
 - job:
     name: neutron-tempest-plugin-scenario-openvswitch-ussuri
     parent: neutron-tempest-plugin-scenario-openvswitch
+    nodeset: openstack-single-node-bionic
     override-checkout: stable/ussuri
     vars:
       branch_override: stable/ussuri
@@ -102,6 +104,7 @@
 - job:
     name: neutron-tempest-plugin-scenario-openvswitch-iptables_hybrid-ussuri
     parent: neutron-tempest-plugin-scenario-openvswitch-iptables_hybrid
+    nodeset: openstack-single-node-bionic
     override-checkout: stable/ussuri
     vars:
       branch_override: stable/ussuri
@@ -117,6 +120,7 @@
 - job:
     name: neutron-tempest-plugin-scenario-linuxbridge-ussuri
     parent: neutron-tempest-plugin-scenario-linuxbridge
+    nodeset: openstack-single-node-bionic
     override-checkout: stable/ussuri
     vars:
       branch_override: stable/ussuri
@@ -132,16 +136,24 @@
 - job:
     name: neutron-tempest-plugin-scenario-ovn-ussuri
     parent: neutron-tempest-plugin-scenario-ovn
+    nodeset: openstack-single-node-bionic
     override-checkout: stable/ussuri
     vars:
       branch_override: stable/ussuri
       network_api_extensions: *api_extensions
       devstack_localrc:
         NETWORK_API_EXTENSIONS: "{{ network_api_extensions | join(',') }}"
+        # TODO(mjozefcz): Stop compiling OVS modules when meter action in kernel
+        # will be released in Ubuntu Bionic.
+        # More info: https://mail.openvswitch.org/pipermail/ovs-discuss/2018-December/048009.html
+        OVN_BUILD_MODULES: True
+        # TODO(skaplons): v2.13.1 is incompatible with kernel 4.15.0-118, sticking to commit hash until new v2.13 tag is created
+        OVS_BRANCH: 0047ca3a0290f1ef954f2c76b31477cf4b9755f5
 
 - job:
     name: neutron-tempest-plugin-dvr-multinode-scenario-ussuri
     parent: neutron-tempest-plugin-dvr-multinode-scenario
+    nodeset: openstack-two-node-bionic
     override-checkout: stable/ussuri
     vars:
       network_api_extensions_common: *api_extensions
@@ -150,6 +162,7 @@
 - job:
     name: neutron-tempest-plugin-designate-scenario-ussuri
     parent: neutron-tempest-plugin-designate-scenario
+    nodeset: openstack-single-node-bionic
     override-checkout: stable/ussuri
     vars:
       branch_override: stable/ussuri
@@ -158,6 +171,7 @@
 - job:
     name: neutron-tempest-plugin-sfc-ussuri
     parent: neutron-tempest-plugin-sfc
+    nodeset: openstack-single-node-bionic
     override-checkout: stable/ussuri
     vars:
       branch_override: stable/ussuri
@@ -166,6 +180,7 @@
 - job:
     name: neutron-tempest-plugin-bgpvpn-bagpipe-ussuri
     parent: neutron-tempest-plugin-bgpvpn-bagpipe
+    nodeset: openstack-single-node-bionic
     override-checkout: stable/ussuri
     vars:
       branch_override: stable/ussuri
@@ -174,6 +189,7 @@
 - job:
     name: neutron-tempest-plugin-fwaas-ussuri
     parent: neutron-tempest-plugin-base
+    nodeset: openstack-single-node-bionic
     timeout: 10800
     override-checkout: stable/ussuri
     required-projects:
@@ -197,6 +213,7 @@
 - job:
     name: neutron-tempest-plugin-dynamic-routing-ussuri
     parent: neutron-tempest-plugin-dynamic-routing
+    nodeset: openstack-single-node-bionic
     override-checkout: stable/ussuri
     vars:
       branch_override: stable/ussuri
@@ -205,6 +222,7 @@
 - job:
     name: neutron-tempest-plugin-vpnaas-ussuri
     parent: neutron-tempest-plugin-vpnaas
+    nodeset: openstack-single-node-bionic
     override-checkout: stable/ussuri
     vars:
       branch_override: stable/ussuri