Merge "Allow network configuration for mtu tests"
diff --git a/.zuul.yaml b/.zuul.yaml
index 636327e..adcb433 100644
--- a/.zuul.yaml
+++ b/.zuul.yaml
@@ -187,7 +187,6 @@
       - ^(test-|)requirements.txt$
       - ^releasenotes/.*$
       - ^setup.cfg$
-    voting: false
 
 - job:
     name: neutron-tempest-plugin-designate-scenario-queens
@@ -208,6 +207,7 @@
     gate:
       jobs:
         - neutron-tempest-plugin-api
+        - neutron-tempest-plugin-scenario-linuxbridge
         - build-openstack-sphinx-docs
 
 - project-template:
diff --git a/neutron_tempest_plugin/api/admin/test_routers_dvr.py b/neutron_tempest_plugin/api/admin/test_routers_dvr.py
index 2313d1b..644bc38 100644
--- a/neutron_tempest_plugin/api/admin/test_routers_dvr.py
+++ b/neutron_tempest_plugin/api/admin/test_routers_dvr.py
@@ -19,7 +19,7 @@
 from neutron_tempest_plugin.api import base_routers as base
 
 
-class RoutersTestDVR(base.BaseRouterTest):
+class RoutersTestDVRBase(base.BaseRouterTest):
 
     required_extensions = ['router', 'dvr']
 
@@ -31,7 +31,7 @@
         # admin credentials to create router with distributed=True attribute
         # and checking for BadRequest exception and that the resulting router
         # has a distributed attribute.
-        super(RoutersTestDVR, cls).resource_setup()
+        super(RoutersTestDVRBase, cls).resource_setup()
         name = data_utils.rand_name('pretest-check')
         router = cls.admin_client.create_router(name)
         if 'distributed' not in router['router']:
@@ -39,6 +39,9 @@
             raise cls.skipException(msg)
         cls.admin_client.delete_router(router['router']['id'])
 
+
+class RoutersTestDVR(RoutersTestDVRBase):
+
     @decorators.idempotent_id('08a2a0a8-f1e4-4b34-8e30-e522e836c44e')
     def test_distributed_router_creation(self):
         """
@@ -74,6 +77,11 @@
                         router['router']['id'])
         self.assertFalse(router['router']['distributed'])
 
+
+class RouterTestCentralizedToDVR(RoutersTestDVRBase):
+
+    required_extensions = ['l3-ha']
+
     @decorators.idempotent_id('acd43596-c1fb-439d-ada8-31ad48ae3c2e')
     def test_centralized_router_update_to_dvr(self):
         """
diff --git a/neutron_tempest_plugin/api/test_routers.py b/neutron_tempest_plugin/api/test_routers.py
index d5d2e04..4637dd6 100644
--- a/neutron_tempest_plugin/api/test_routers.py
+++ b/neutron_tempest_plugin/api/test_routers.py
@@ -14,6 +14,7 @@
 #    under the License.
 
 import netaddr
+
 from tempest.common import utils as tutils
 from tempest.lib.common.utils import data_utils
 from tempest.lib import decorators
@@ -244,6 +245,11 @@
                         self.admin_client)
         self.assertTrue(create_body['router']['distributed'])
 
+
+class DvrRoutersTestToCentralized(base_routers.BaseRouterTest):
+
+    required_extensions = ['dvr', 'l3-ha']
+
     @decorators.idempotent_id('644d7a4a-01a1-4b68-bb8d-0c0042cb1729')
     def test_convert_centralized_router(self):
         router_args = {'tenant_id': self.client.tenant_id,
diff --git a/neutron_tempest_plugin/scenario/base.py b/neutron_tempest_plugin/scenario/base.py
index 2bb6344..0a2fa14 100644
--- a/neutron_tempest_plugin/scenario/base.py
+++ b/neutron_tempest_plugin/scenario/base.py
@@ -302,9 +302,18 @@
                                           1)
 
     def check_remote_connectivity(self, source, dest, should_succeed=True,
-                                  nic=None, mtu=None, fragmentation=True):
-        self.assertTrue(self._check_remote_connectivity(
-            source, dest, should_succeed, nic, mtu, fragmentation))
+                                  nic=None, mtu=None, fragmentation=True,
+                                  servers=None):
+        try:
+            self.assertTrue(self._check_remote_connectivity(
+                source, dest, should_succeed, nic, mtu, fragmentation))
+        except lib_exc.SSHTimeout as ssh_e:
+            LOG.debug(ssh_e)
+            self._log_console_output(servers)
+            raise
+        except AssertionError:
+            self._log_console_output(servers)
+            raise
 
     def ping_ip_address(self, ip_address, should_succeed=True,
                         ping_timeout=None, mtu=None):