Add dummy driver

Added dummy driver for ease of testing and development of REST APIs
and internal manila interfaces.
It can be enabled as backend in the same way as all other share drivers.
But, it does not provide any resources.

Also, update tempest to be able to work with share-networks when
networks are defined via config and not API.

CI hooks are configured to run tempest twice using both available
driver modes. Where DHSS=True mode uses StandAloneNetworkPlugin as
network backend.

Change-Id: I9053dddfc643cb5a6602f15235b91bbaea727dbd
Implements BluePrint dummy-driver
diff --git a/manila_tempest_tests/tests/api/base.py b/manila_tempest_tests/tests/api/base.py
index a599196..79c8673 100644
--- a/manila_tempest_tests/tests/api/base.py
+++ b/manila_tempest_tests/tests/api/base.py
@@ -203,7 +203,8 @@
 
         # Provide share network
         if CONF.share.multitenancy_enabled:
-            if not CONF.service_available.neutron:
+            if (not CONF.service_available.neutron and
+                    CONF.share.create_networks_when_multitenancy_enabled):
                 raise cls.skipException("Neutron support is required")
             nc = os.networks_client
             share_network_id = cls.provide_share_network(client, nc, ic)
@@ -235,7 +236,8 @@
             os.auth_provider)
         cls.shares_v2_client = os.shares_v2_client
         if CONF.share.multitenancy_enabled:
-            if not CONF.service_available.neutron:
+            if (not CONF.service_available.neutron and
+                    CONF.share.create_networks_when_multitenancy_enabled):
                 raise cls.skipException("Neutron support is required")
             share_network_id = cls.provide_share_network(
                 cls.shares_v2_client, os.networks_client)
@@ -282,6 +284,8 @@
         """
 
         sc = shares_client
+        search_word = "reusable"
+        sn_name = "autogenerated_by_tempest_%s" % search_word
 
         if not CONF.share.multitenancy_enabled:
             # Assumed usage of a single-tenant driver
@@ -289,13 +293,28 @@
         elif sc.share_network_id:
             # Share-network already exists, use it
             share_network_id = sc.share_network_id
+        elif not CONF.share.create_networks_when_multitenancy_enabled:
+            share_network_id = None
+
+            # Try get suitable share-network
+            share_networks = sc.list_share_networks_with_detail()
+            for sn in share_networks:
+                if (sn["neutron_net_id"] is None and
+                        sn["neutron_subnet_id"] is None and
+                        sn["name"] and search_word in sn["name"]):
+                    share_network_id = sn["id"]
+                    break
+
+            # Create new share-network if one was not found
+            if share_network_id is None:
+                sn_desc = "This share-network was created by tempest"
+                sn = sc.create_share_network(name=sn_name, description=sn_desc)
+                share_network_id = sn["id"]
         else:
             net_id = subnet_id = share_network_id = None
 
             if not isolated_creds_client:
                 # Search for networks, created in previous runs
-                search_word = "reusable"
-                sn_name = "autogenerated_by_tempest_%s" % search_word
                 service_net_name = "share-service"
                 networks = networks_client.list_networks()
                 if "networks" in networks.keys():