Merge "TrivialFix: Remove unnecessary import"
diff --git a/manila_tempest_tests/tests/scenario/manager.py b/manila_tempest_tests/tests/scenario/manager.py
index dede47a..c83dfe6 100644
--- a/manila_tempest_tests/tests/scenario/manager.py
+++ b/manila_tempest_tests/tests/scenario/manager.py
@@ -734,14 +734,15 @@
         return self.os_admin.networks_client.list_networks()['networks']
 
     def create_floating_ip(self, thing, external_network_id=None,
-                           port_id=None, client=None):
+                           port_id=None, ip_addr=None, client=None):
         """Create a floating IP and associates to a resource/port on Neutron"""
         if not external_network_id:
             external_network_id = CONF.network.public_network_id
         if not client:
             client = self.floating_ips_client
         if not port_id:
-            port_id, ip4 = self._get_server_port_id_and_ip4(thing)
+            port_id, ip4 = self._get_server_port_id_and_ip4(thing,
+                                                            ip_addr=ip_addr)
         else:
             ip4 = None
         result = client.create_floatingip(
diff --git a/manila_tempest_tests/tests/scenario/manager_share.py b/manila_tempest_tests/tests/scenario/manager_share.py
index eaffa35..da8a8e5 100644
--- a/manila_tempest_tests/tests/scenario/manager_share.py
+++ b/manila_tempest_tests/tests/scenario/manager_share.py
@@ -158,10 +158,11 @@
     def init_remote_client(self, instance):
         server_ip = None
         if self.ipv6_enabled:
-            server_ip = self._get_ipv6_server_ip(instance)
+            server_ip = self._get_server_ip(instance, ip_version=6)
         if not server_ip:
+            ip_addr = self._get_server_ip(instance)
             # Obtain a floating IP
-            floating_ip = self.create_floating_ip(instance)
+            floating_ip = self.create_floating_ip(instance, ip_addr=ip_addr)
             self.floating_ips[instance['id']] = floating_ip
             server_ip = floating_ip['floating_ip_address']
 
@@ -328,7 +329,7 @@
         client = client or self.shares_v2_client
         if not CONF.share.multitenancy_enabled:
             if self.ipv6_enabled and not self.storage_network:
-                server_ip = self._get_ipv6_server_ip(instance)
+                server_ip = self._get_server_ip(instance, ip_version=6)
             else:
                 server_ip = (
                     CONF.share.override_ip_for_nfs_access
@@ -379,15 +380,15 @@
 
         return locations
 
-    def _get_ipv6_server_ip(self, instance):
-        ipv6_addrs = []
+    def _get_server_ip(self, instance, ip_version=4):
+        ip_addrs = []
         for network_name, nic_list in instance['addresses'].items():
             if network_name == self.storage_network_name:
                 continue
             for nic_data in nic_list:
-                if nic_data['version'] == 6:
-                    ipv6_addrs.append(nic_data['addr'])
-        return ipv6_addrs[0] if ipv6_addrs else None
+                if nic_data['version'] == ip_version:
+                    ip_addrs.append(nic_data['addr'])
+        return ip_addrs[0] if ip_addrs else None
 
     def _create_share(self, share_protocol=None, size=None, name=None,
                       snapshot_id=None, description=None, metadata=None,
diff --git a/zuul.d/manila-tempest-jobs.yaml b/zuul.d/manila-tempest-jobs.yaml
new file mode 100644
index 0000000..c9efb7c
--- /dev/null
+++ b/zuul.d/manila-tempest-jobs.yaml
@@ -0,0 +1,94 @@
+- job:
+    name: manila-tempest-plugin-base
+    abstract: true
+    description: Base job for devstack/tempest based manila jobs.
+    parent: devstack-tempest
+    timeout: 10800
+    required-projects:
+      - openstack/manila
+      - openstack/manila-image-elements
+      - openstack/manila-tempest-plugin
+      - openstack/python-manilaclient
+      - openstack/tempest
+    irrelevant-files:
+      - ^(test-|)requirements.txt$
+      - ^.*\.rst$
+      - ^api-ref/.*$
+      - ^doc/.*$
+      - ^manila/hacking/.*$
+      - ^manila/tests/.*$
+      - ^releasenotes/.*$
+      - ^setup.cfg$
+      - ^tools/.*$
+      - ^tox.ini$
+    vars:
+      tox_envlist: all
+      tempest_test_regex: manila_tempest_tests
+      tempest_concurrency: 8
+      tempest_plugins:
+        - manila-tempest-plugin
+      devstack_plugins:
+        manila: https://opendev.org/openstack/manila
+        manila-tempest-plugin: https://opendev.org/openstack/manila-tempest-plugin
+      devstack_services:
+        cinder: false
+        s-account: false
+        s-container: false
+        s-object: false
+        s-proxy: false
+        horizon: false
+        tls-proxy: true
+      devstack_localrc:
+        USE_PYTHON3: true
+        TEMPEST_USE_TEST_ACCOUNTS: true
+        MANILA_USE_DOWNGRADE_MIGRATIONS: true
+        MANILA_INSTALL_TEMPEST_PLUGIN_SYSTEMWIDE: false
+        MANILA_ALLOW_NAS_SERVER_PORTS_ON_HOST: true
+        MANILA_DEFAULT_SHARE_TYPE_EXTRA_SPECS: 'snapshot_support=True create_share_from_snapshot_support=True'
+
+
+- job:
+    name: manila-tempest-plugin-zfsonlinux
+    description: Test ZFSOnLinux multibackend (DHSS=False) with postgresql db
+    parent: manila-tempest-plugin-base
+    vars:
+      tempest_test_regex: '(^manila_tempest_tests.tests)(?=.*\[.*\bbackend\b.*\])'
+      devstack_localrc:
+        SHARE_DRIVER: manila.share.drivers.zfsonlinux.driver.ZFSonLinuxShareDriver
+        MANILA_ENABLED_BACKENDS: london,paris
+        MANILA_BACKEND1_CONFIG_GROUP_NAME: london
+        MANILA_BACKEND2_CONFIG_GROUP_NAME: paris
+        MANILA_SHARE_BACKEND1_NAME: LONDON
+        MANILA_SHARE_BACKEND2_NAME: PARIS
+        MANILA_OPTGROUP_london_driver_handles_share_servers: false
+        MANILA_OPTGROUP_paris_driver_handles_share_servers: false
+        MANILA_SHARE_MIGRATION_PERIOD_TASK_INTERVAL: 1
+        MANILA_REPLICA_STATE_UPDATE_INTERVAL: 60
+        MANILA_ZFSONLINUX_SERVICE_IP: 127.0.0.1
+        MANILA_ZFSONLINUX_USE_SSH: true
+        MANILA_CONFIGURE_DEFAULT_TYPES: true
+        MANILA_USE_SCHEDULER_CREATING_SHARE_FROM_SNAPSHOT: true
+      devstack_services:
+        mysql: false
+        postgresql: true
+      devstack_local_conf:
+        test-config:
+          $TEMPEST_CONFIG:
+            share:
+              default_share_type_name: default
+              run_driver_assisted_migration_tests: true
+              run_host_assisted_migration_tests: true
+              run_replication_tests: true
+              run_manage_unmanage_snapshot_tests: true
+              run_manage_unmanage_tests: true
+              run_multiple_share_replicas_tests: false
+              run_create_share_from_snapshot_in_another_pool_or_az_tests: true
+              backend_replication_type: readable
+              enable_protocols: nfs
+              capability_storage_protocol: NFS
+              build_timeout: 180
+              enable_ip_rules_for_protocols: nfs
+              multitenancy_enabled: False
+              backend_names: LONDON,PARIS
+              multi_backend: true
+              image_password: manila
diff --git a/.zuul.yaml b/zuul.d/project.yaml
similarity index 95%
rename from .zuul.yaml
rename to zuul.d/project.yaml
index 4c95c89..bc0d8d3 100644
--- a/.zuul.yaml
+++ b/zuul.d/project.yaml
@@ -4,12 +4,12 @@
       - tempest-plugin-jobs
     check:
       jobs:
+        - manila-tempest-plugin-zfsonlinux:
+            voting: false
         - manila-tempest-dsvm-mysql-generic:
             voting: false
         - manila-tempest-dsvm-postgres-container:
             voting: false
-        - manila-tempest-dsvm-postgres-zfsonlinux:
-            voting: false
         - manila-tempest-dsvm-postgres-generic-singlebackend:
             voting: false
         - manila-tempest-dsvm-generic-no-share-servers: