Pass clients to compute base's create_test_server

Previously, create_test_server() in the base compute test class did
not provide a way to create a server with admin privileges. This can
be necessary when using APIs that are admin-only by default, for
example the `host` parameter when creating a server in Nova
microversion 2.74. This patch adds a clients kwarg to
create_test_server(). This kwarg is then passed to compute.common's
create_test_server() instead of the cls.os_primary clients that was
harcoded previously.

Change-Id: Ic47e6a4ced54739de9325bb14e332ba15cdb210f
diff --git a/tempest/api/compute/base.py b/tempest/api/compute/base.py
index 8d0962d..9cbdd14 100644
--- a/tempest/api/compute/base.py
+++ b/tempest/api/compute/base.py
@@ -226,7 +226,7 @@
 
     @classmethod
     def create_test_server(cls, validatable=False, volume_backed=False,
-                           validation_resources=None, **kwargs):
+                           validation_resources=None, clients=None, **kwargs):
         """Wrapper utility that returns a test server.
 
         This wrapper utility calls the common create test server and
@@ -238,6 +238,7 @@
         :param volume_backed: Whether the instance is volume backed or not.
         :param validation_resources: Dictionary of validation resources as
             returned by `get_class_validation_resources`.
+        :param clients: Client manager, defaults to os_primary.
         :param kwargs: Extra arguments are passed down to the
             `compute.create_test_server` call.
         """
@@ -254,8 +255,11 @@
             not tenant_network):
             kwargs['networks'] = 'none'
 
+        if clients is None:
+            clients = cls.os_primary
+
         body, servers = compute.create_test_server(
-            cls.os_primary,
+            clients,
             validatable,
             validation_resources=validation_resources,
             tenant_network=tenant_network,
@@ -266,11 +270,11 @@
         # and then wait for all
         for server in servers:
             cls.addClassResourceCleanup(waiters.wait_for_server_termination,
-                                        cls.servers_client, server['id'])
+                                        clients.servers_client, server['id'])
         for server in servers:
             cls.addClassResourceCleanup(
                 test_utils.call_and_ignore_notfound_exc,
-                cls.servers_client.delete_server, server['id'])
+                clients.servers_client.delete_server, server['id'])
 
         return body