Update service client access in tempest tests

All the Designate service clients are registered via the plugin interface[1],
that way Tempest register and create the lazy initialization of registered
clients so that they can be access from there in consistent way.

But designate-tempest-client create a separate instance of those and access
instead of accessing the registered service client in Tempest. This commit
makes all the service clients access from Tempest registry and remove the
separate objects.

[1] https://github.com/openstack/designate-tempest-plugin/blob/master/designate_tempest_plugin/plugin.py#L78

Change-Id: I4b65ca16cd53ff4c6bece642764a4abe2a469c01
diff --git a/designate_tempest_plugin/clients.py b/designate_tempest_plugin/clients.py
index a4d84c8..d412ff5 100644
--- a/designate_tempest_plugin/clients.py
+++ b/designate_tempest_plugin/clients.py
@@ -15,41 +15,28 @@
 from tempest import config
 from tempest.lib import auth
 
-from designate_tempest_plugin.services.dns.v2.json.zones_client import \
-    ZonesClient
-from designate_tempest_plugin.services.dns.v2.json.zone_imports_client import \
-    ZoneImportsClient
 from designate_tempest_plugin.services.dns.v2.json.blacklists_client import \
     BlacklistsClient
-from designate_tempest_plugin.services.dns.v2.json.quotas_client import \
-    QuotasClient
-from designate_tempest_plugin.services.dns.v2.json.zone_exports_client import \
-    ZoneExportsClient
-from designate_tempest_plugin.services.dns.v2.json.recordset_client import \
-    RecordsetClient
 from designate_tempest_plugin.services.dns.v2.json.pool_client import \
     PoolClient
+from designate_tempest_plugin.services.dns.v2.json.recordset_client import \
+    RecordsetClient
 from designate_tempest_plugin.services.dns.v2.json.tld_client import \
     TldClient
-from designate_tempest_plugin.services.dns.admin.json.quotas_client import \
-    QuotasClient as AdminQuotaClient
+from designate_tempest_plugin.services.dns.v2.json.zones_client import \
+    ZonesClient
+# TODO(johnsom) remove once neutron-tempest-plugin test_dns_integration
+#               has been updated
+# https://review.opendev.org/c/openstack/neutron-tempest-plugin/+/800291
 from designate_tempest_plugin.services.dns.query.query_client import \
     QueryClient
-from designate_tempest_plugin.services.dns.v2.json.transfer_request_client \
-    import TransferRequestClient
-from designate_tempest_plugin.services.dns.v2.json.transfer_accepts_client \
-    import TransferAcceptClient
-from designate_tempest_plugin.services.dns.v2.json.tsigkey_client \
-    import TsigkeyClient
-from designate_tempest_plugin.services.dns.v2.json.service_client \
-    import SevriceClient
-from designate_tempest_plugin.services.dns.v2.json.designate_limit_client \
-    import DesignateLimitClient
-from designate_tempest_plugin.services.dns.v2.json.ptr_client import PtrClient
 
 CONF = config.CONF
 
 
+# TODO(johnsom) remove once neutron-tempest-plugin test_dns_integration
+#               has been updated
+# https://review.opendev.org/c/openstack/neutron-tempest-plugin/+/800291
 class ManagerV2(clients.Manager):
 
     def __init__(self, credentials=None):
@@ -58,19 +45,6 @@
 
     def _init_clients(self, params):
         self.zones_client = ZonesClient(**params)
-        self.zone_imports_client = ZoneImportsClient(**params)
-        self.blacklists_client = BlacklistsClient(**params)
-        self.quotas_client = QuotasClient(**params)
-        self.zone_exports_client = ZoneExportsClient(**params)
-        self.recordset_client = RecordsetClient(**params)
-        self.pool_client = PoolClient(**params)
-        self.tld_client = TldClient(**params)
-        self.transfer_request_client = TransferRequestClient(**params)
-        self.transfer_accept_client = TransferAcceptClient(**params)
-        self.tsigkey_client = TsigkeyClient(**params)
-        self.service_client = SevriceClient(**params)
-        self.designate_limit_client = DesignateLimitClient(**params)
-        self.ptr_client = PtrClient(**params)
 
         self.query_client = QueryClient(
             nameservers=CONF.dns.nameservers,
@@ -92,29 +66,7 @@
         return params
 
 
-class ManagerAdmin(clients.Manager):
-
-    def __init__(self, credentials=None):
-        super(ManagerAdmin, self).__init__(credentials)
-        self._init_clients(self._get_params())
-
-    def _init_clients(self, params):
-        self.quotas_client = AdminQuotaClient(**params)
-
-    def _get_params(self):
-        params = dict(self.default_params)
-        params.update({
-            'auth_provider': self.auth_provider,
-            'service': CONF.dns.catalog_type,
-            'region': CONF.identity.region,
-            'endpoint_type': CONF.dns.endpoint_type,
-            'build_interval': CONF.dns.build_interval,
-            'build_timeout': CONF.dns.build_timeout
-        })
-        return params
-
-
-class ManagerV2Unauthed(ManagerV2):
+class ManagerV2Unauthed(clients.Manager):
 
     def __init__(self, credentials=None):
         super(ManagerV2Unauthed, self).__init__(credentials)
@@ -127,12 +79,31 @@
         )
         self._init_clients(self._get_params())
 
+    def _init_clients(self, params):
+        self.zones_client = ZonesClient(**params)
+        self.blacklists_client = BlacklistsClient(**params)
+        self.recordset_client = RecordsetClient(**params)
+        self.pool_client = PoolClient(**params)
+        self.tld_client = TldClient(**params)
+
     def _auth_provider_class(self):
         if CONF.identity.auth_version == 'v3':
             return KeystoneV3UnauthedProvider
         else:
             return KeystoneV2UnauthedProvider
 
+    def _get_params(self):
+        params = dict(self.default_params)
+        params.update({
+            'auth_provider': self.auth_provider,
+            'service': CONF.dns.catalog_type,
+            'region': CONF.identity.region,
+            'endpoint_type': CONF.dns.endpoint_type,
+            'build_interval': CONF.dns.build_interval,
+            'build_timeout': CONF.dns.build_timeout
+        })
+        return params
+
 
 class BaseUnauthedProvider(auth.KeystoneAuthProvider):
 
diff --git a/designate_tempest_plugin/plugin.py b/designate_tempest_plugin/plugin.py
index 47479ba..7e33261 100644
--- a/designate_tempest_plugin/plugin.py
+++ b/designate_tempest_plugin/plugin.py
@@ -18,6 +18,7 @@
 from tempest.test_discover import plugins
 
 from designate_tempest_plugin import config as project_config
+from designate_tempest_plugin.services.dns import v2 as dns_v2_services
 
 
 class DesignateTempestPlugin(plugins.TempestPlugin):
@@ -87,11 +88,7 @@
             'name': 'dns_v2',
             'service_version': 'dns.v2',
             'module_path': 'designate_tempest_plugin.services.dns.v2',
-            'client_names': ['BlacklistsClient', 'PoolClient', 'QuotasClient',
-                             'RecordsetClient', 'TldClient',
-                             'TransferAcceptClient', 'TransferRequestClient',
-                             'TsigkeyClient', 'ZoneExportsClient',
-                             'ZoneImportsClient', 'ZonesClient']
+            'client_names': dns_v2_services.__all__
         }
         admin_params.update(dns_config)
         v2_params.update(dns_config)
diff --git a/designate_tempest_plugin/services/dns/v2/__init__.py b/designate_tempest_plugin/services/dns/v2/__init__.py
index 34847e7..2f738df 100644
--- a/designate_tempest_plugin/services/dns/v2/__init__.py
+++ b/designate_tempest_plugin/services/dns/v2/__init__.py
@@ -14,12 +14,18 @@
 
 from designate_tempest_plugin.services.dns.v2.json.blacklists_client import \
     BlacklistsClient
+from designate_tempest_plugin.services.dns.v2.json.designate_limit_client \
+    import DesignateLimitClient
 from designate_tempest_plugin.services.dns.v2.json.pool_client import \
     PoolClient
+from designate_tempest_plugin.services.dns.v2.json.ptr_client \
+    import PtrClient
 from designate_tempest_plugin.services.dns.v2.json.quotas_client import \
     QuotasClient
 from designate_tempest_plugin.services.dns.v2.json.recordset_client import \
     RecordsetClient
+from designate_tempest_plugin.services.dns.v2.json.service_client import \
+    ServiceClient
 from designate_tempest_plugin.services.dns.v2.json.tld_client import TldClient
 from designate_tempest_plugin.services.dns.v2.json.transfer_accepts_client \
     import TransferAcceptClient
@@ -27,14 +33,15 @@
     import TransferRequestClient
 from designate_tempest_plugin.services.dns.v2.json.tsigkey_client import \
     TsigkeyClient
+from designate_tempest_plugin.services.dns.v2.json.zones_client import \
+    ZonesClient
 from designate_tempest_plugin.services.dns.v2.json.zone_exports_client import \
     ZoneExportsClient
 from designate_tempest_plugin.services.dns.v2.json.zone_imports_client import \
     ZoneImportsClient
-from designate_tempest_plugin.services.dns.v2.json.zones_client import \
-    ZonesClient
 
-__all__ = ['BlacklistsClient', 'PoolClient', 'QuotasClient', 'RecordsetClient',
+__all__ = ['BlacklistsClient', 'DesignateLimitClient', 'PoolClient',
+           'PtrClient', 'QuotasClient', 'RecordsetClient', 'ServiceClient',
            'TldClient', 'TransferAcceptClient', 'TransferRequestClient',
-           'TsigkeyClient', 'ZoneExportsClient', 'ZoneImportsClient',
-           'ZonesClient']
+           'TsigkeyClient', 'ZonesClient', 'ZoneExportsClient',
+           'ZoneImportsClient']
diff --git a/designate_tempest_plugin/services/dns/v2/json/service_client.py b/designate_tempest_plugin/services/dns/v2/json/service_client.py
index fd24047..267e7a5 100644
--- a/designate_tempest_plugin/services/dns/v2/json/service_client.py
+++ b/designate_tempest_plugin/services/dns/v2/json/service_client.py
@@ -14,7 +14,7 @@
 from designate_tempest_plugin.services.dns.v2.json import base
 
 
-class SevriceClient(base.DnsClientV2Base):
+class ServiceClient(base.DnsClientV2Base):
 
     @base.handle_errors
     def list_statuses(self, headers=None):
diff --git a/designate_tempest_plugin/tests/api/admin/test_quotas.py b/designate_tempest_plugin/tests/api/admin/test_quotas.py
index 1221b9f..0195ee3 100644
--- a/designate_tempest_plugin/tests/api/admin/test_quotas.py
+++ b/designate_tempest_plugin/tests/api/admin/test_quotas.py
@@ -52,7 +52,7 @@
     def setup_clients(cls):
         super(QuotasAdminTest, cls).setup_clients()
 
-        cls.admin_client = cls.os_admin.quotas_client
+        cls.admin_client = cls.os_admin.dns_admin.QuotasClient()
 
     @decorators.idempotent_id('ed42f367-e5ba-40d7-a08d-366ad787d21c')
     def test_show_quotas(self):
diff --git a/designate_tempest_plugin/tests/api/v2/test_blacklists.py b/designate_tempest_plugin/tests/api/v2/test_blacklists.py
index 65b6dff..0e22bf6 100644
--- a/designate_tempest_plugin/tests/api/v2/test_blacklists.py
+++ b/designate_tempest_plugin/tests/api/v2/test_blacklists.py
@@ -39,7 +39,7 @@
     @classmethod
     def setup_clients(cls):
         super(BlacklistsAdminTest, cls).setup_clients()
-        cls.admin_client = cls.os_admin.blacklists_client
+        cls.admin_client = cls.os_admin.dns_v2.BlacklistsClient()
 
     @decorators.idempotent_id('3a7f7564-6bdd-446e-addc-a3475b4c3f71')
     def test_create_blacklist(self):
@@ -123,7 +123,7 @@
     @classmethod
     def setup_clients(cls):
         super(TestBlacklistNotFoundAdmin, cls).setup_clients()
-        cls.admin_client = cls.os_admin.blacklists_client
+        cls.admin_client = cls.os_admin.dns_v2.BlacklistsClient()
 
     @decorators.idempotent_id('9d65b638-fe98-47a8-853f-fa9244d144cc')
     def test_show_blacklist_404(self):
@@ -166,7 +166,7 @@
     @classmethod
     def setup_clients(cls):
         super(TestBlacklistInvalidIdAdmin, cls).setup_clients()
-        cls.admin_client = cls.os_admin.blacklists_client
+        cls.admin_client = cls.os_admin.dns_v2.BlacklistsClient()
 
     @decorators.idempotent_id('c7bae53f-2edc-45d8-b254-8a81482728c1')
     def test_show_blacklist_invalid_uuid(self):
diff --git a/designate_tempest_plugin/tests/api/v2/test_designate_limits.py b/designate_tempest_plugin/tests/api/v2/test_designate_limits.py
index a2c92dc..5db07c1 100644
--- a/designate_tempest_plugin/tests/api/v2/test_designate_limits.py
+++ b/designate_tempest_plugin/tests/api/v2/test_designate_limits.py
@@ -31,8 +31,7 @@
     @classmethod
     def setup_clients(cls):
         super(DesignateLimit, cls).setup_clients()
-
-        cls.admin_client = cls.os_admin.designate_limit_client
+        cls.admin_client = cls.os_admin.dns_v2.DesignateLimitClient()
 
     @decorators.idempotent_id('828572be-8662-11eb-8ff2-74e5f9e2a801')
     def test_list_designate_limits(self):
diff --git a/designate_tempest_plugin/tests/api/v2/test_pool.py b/designate_tempest_plugin/tests/api/v2/test_pool.py
index e2516af..21782ce 100644
--- a/designate_tempest_plugin/tests/api/v2/test_pool.py
+++ b/designate_tempest_plugin/tests/api/v2/test_pool.py
@@ -45,8 +45,7 @@
     @classmethod
     def setup_clients(cls):
         super(PoolAdminTest, cls).setup_clients()
-
-        cls.admin_client = cls.os_admin.pool_client
+        cls.admin_client = cls.os_admin.dns_v2.PoolClient()
 
     @decorators.idempotent_id('69257f7c-b3d5-4e1b-998e-0677ad12f125')
     def test_create_pool(self):
@@ -136,7 +135,7 @@
     @classmethod
     def setup_clients(cls):
         super(TestPoolNotFoundAdmin, cls).setup_clients()
-        cls.admin_client = cls.os_admin.pool_client
+        cls.admin_client = cls.os_admin.dns_v2.PoolClient()
 
     @decorators.idempotent_id('56281b2f-dd5a-4376-8c32-aba771062fa5')
     def test_show_pool_404(self):
@@ -179,7 +178,7 @@
     @classmethod
     def setup_clients(cls):
         super(TestPoolInvalidIdAdmin, cls).setup_clients()
-        cls.admin_client = cls.os_admin.pool_client
+        cls.admin_client = cls.os_admin.dns_v2.PoolClient()
 
     @decorators.idempotent_id('081d0188-42a7-4953-af0e-b022960715e2')
     def test_show_pool_invalid_uuid(self):
@@ -223,7 +222,7 @@
     @classmethod
     def setup_clients(cls):
         super(TestPoolAdminNegative, cls).setup_clients()
-        cls.admin_client = cls.os_admin.pool_client
+        cls.admin_client = cls.os_admin.dns_v2.PoolClient()
 
     @decorators.idempotent_id('0a8cdc1e-ac02-11eb-ae06-74e5f9e2a801')
     def test_create_pool_invalid_name(self):
diff --git a/designate_tempest_plugin/tests/api/v2/test_ptrs.py b/designate_tempest_plugin/tests/api/v2/test_ptrs.py
index cfd9685..ef8f083 100644
--- a/designate_tempest_plugin/tests/api/v2/test_ptrs.py
+++ b/designate_tempest_plugin/tests/api/v2/test_ptrs.py
@@ -41,7 +41,7 @@
     @classmethod
     def setup_clients(cls):
         super(DesignatePtrRecord, cls).setup_clients()
-        cls.primary_ptr_client = cls.os_primary.ptr_client
+        cls.primary_ptr_client = cls.os_primary.dns_v2.PtrClient()
         cls.primary_floating_ip_client = cls.os_primary.floating_ips_client
 
     def _set_ptr(self):
@@ -100,7 +100,7 @@
     @classmethod
     def setup_clients(cls):
         super(DesignatePtrRecordNegative, cls).setup_clients()
-        cls.primary_ptr_client = cls.os_primary.ptr_client
+        cls.primary_ptr_client = cls.os_primary.dns_v2.PtrClient()
         cls.primary_floating_ip_client = cls.os_primary.floating_ips_client
 
     def _set_ptr(self, ptr_name=None, ttl=None, description=None,
diff --git a/designate_tempest_plugin/tests/api/v2/test_quotas.py b/designate_tempest_plugin/tests/api/v2/test_quotas.py
index ad37a32..783ccdd 100644
--- a/designate_tempest_plugin/tests/api/v2/test_quotas.py
+++ b/designate_tempest_plugin/tests/api/v2/test_quotas.py
@@ -48,9 +48,9 @@
     def setup_clients(cls):
         super(QuotasV2Test, cls).setup_clients()
 
-        cls.quotas_client = cls.os_primary.quotas_client
-        cls.admin_client = cls.os_admin.quotas_client
-        cls.alt_client = cls.os_alt.quotas_client
+        cls.quotas_client = cls.os_primary.dns_v2.QuotasClient()
+        cls.admin_client = cls.os_admin.dns_v2.QuotasClient()
+        cls.alt_client = cls.os_alt.dns_v2.QuotasClient()
 
     def _store_quotas(self, project_id=None, cleanup=True):
         """Remember current quotas and reset them after the test"""
diff --git a/designate_tempest_plugin/tests/api/v2/test_recordset.py b/designate_tempest_plugin/tests/api/v2/test_recordset.py
index 96179f1..65b1b3b 100644
--- a/designate_tempest_plugin/tests/api/v2/test_recordset.py
+++ b/designate_tempest_plugin/tests/api/v2/test_recordset.py
@@ -61,13 +61,12 @@
     @classmethod
     def setup_clients(cls):
         super(RecordsetsTest, cls).setup_clients()
-
-        cls.client = cls.os_primary.recordset_client
-        cls.alt_client = cls.os_alt.recordset_client
-        cls.admin_client = cls.os_admin.recordset_client
-        cls.zone_client = cls.os_primary.zones_client
-        cls.alt_zone_client = cls.os_alt.zones_client
-        cls.admin_zone_client = cls.os_admin.zones_client
+        cls.client = cls.os_primary.dns_v2.RecordsetClient()
+        cls.alt_client = cls.os_alt.dns_v2.RecordsetClient()
+        cls.admin_client = cls.os_admin.dns_v2.RecordsetClient()
+        cls.zone_client = cls.os_primary.dns_v2.ZonesClient()
+        cls.alt_zone_client = cls.os_alt.dns_v2.ZonesClient()
+        cls.admin_zone_client = cls.os_admin.dns_v2.ZonesClient()
 
     @decorators.attr(type='smoke')
     @decorators.idempotent_id('631d74fd-6909-4684-a61b-5c4d2f92c3e7')
@@ -311,10 +310,9 @@
     @classmethod
     def setup_clients(cls):
         super(RecordsetsNegativeTest, cls).setup_clients()
-
-        cls.client = cls.os_primary.recordset_client
-        cls.alt_client = cls.os_alt.recordset_client
-        cls.zone_client = cls.os_primary.zones_client
+        cls.client = cls.os_primary.dns_v2.RecordsetClient()
+        cls.alt_client = cls.os_alt.dns_v2.RecordsetClient()
+        cls.zone_client = cls.os_primary.dns_v2.ZonesClient()
 
     @decorators.idempotent_id('98c94f8c-217a-4056-b996-b1f856d0753e')
     @ddt.file_data("recordset_data_invalid.json")
@@ -457,9 +455,8 @@
     @classmethod
     def setup_clients(cls):
         super(RootRecordsetsTests, cls).setup_clients()
-
-        cls.client = cls.os_primary.recordset_client
-        cls.zone_client = cls.os_primary.zones_client
+        cls.client = cls.os_primary.dns_v2.RecordsetClient()
+        cls.zone_client = cls.os_primary.dns_v2.ZonesClient()
 
     @classmethod
     def skip_checks(cls):
@@ -554,12 +551,11 @@
     @classmethod
     def setup_clients(cls):
         super(RecordsetOwnershipTest, cls).setup_clients()
-
-        cls.client = cls.os_primary.recordset_client
-        cls.zone_client = cls.os_primary.zones_client
-        cls.alt_client = cls.os_alt.recordset_client
-        cls.alt_zone_client = cls.os_alt.zones_client
-        cls.admin_client = cls.os_admin.recordset_client
+        cls.client = cls.os_primary.dns_v2.RecordsetClient()
+        cls.alt_client = cls.os_alt.dns_v2.RecordsetClient()
+        cls.admin_client = cls.os_admin.dns_v2.RecordsetClient()
+        cls.zone_client = cls.os_primary.dns_v2.ZonesClient()
+        cls.alt_zone_client = cls.os_alt.dns_v2.ZonesClient()
 
     def _create_client_recordset(self, clients_list):
         """Create a zone and asoociated recordset using given credentials
diff --git a/designate_tempest_plugin/tests/api/v2/test_recordset_validation.py b/designate_tempest_plugin/tests/api/v2/test_recordset_validation.py
index 36c68ff..a7efe31 100644
--- a/designate_tempest_plugin/tests/api/v2/test_recordset_validation.py
+++ b/designate_tempest_plugin/tests/api/v2/test_recordset_validation.py
@@ -51,8 +51,8 @@
     def setup_clients(cls):
         super(RecordsetValidationTest, cls).setup_clients()
 
-        cls.recordset_client = cls.os_primary.recordset_client
-        cls.zones_client = cls.os_primary.zones_client
+        cls.recordset_client = cls.os_primary.dns_v2.RecordsetClient()
+        cls.zones_client = cls.os_primary.dns_v2.ZonesClient()
 
     @property
     def zone(self):
diff --git a/designate_tempest_plugin/tests/api/v2/test_service_statuses.py b/designate_tempest_plugin/tests/api/v2/test_service_statuses.py
index 68396c5..2f0a9bb 100644
--- a/designate_tempest_plugin/tests/api/v2/test_service_statuses.py
+++ b/designate_tempest_plugin/tests/api/v2/test_service_statuses.py
@@ -38,8 +38,8 @@
     def setup_clients(cls):
         super(ServiceStatus, cls).setup_clients()
 
-        cls.client = cls.os_primary.service_client
-        cls.admin_client = cls.os_admin.service_client
+        cls.client = cls.os_primary.dns_v2.ServiceClient()
+        cls.admin_client = cls.os_admin.dns_v2.ServiceClient()
 
     @decorators.idempotent_id('bf277a76-8583-11eb-a557-74e5f9e2a801')
     def test_list_service_statuses(self):
diff --git a/designate_tempest_plugin/tests/api/v2/test_tld.py b/designate_tempest_plugin/tests/api/v2/test_tld.py
index f14d4ed..ce8a04f 100644
--- a/designate_tempest_plugin/tests/api/v2/test_tld.py
+++ b/designate_tempest_plugin/tests/api/v2/test_tld.py
@@ -38,7 +38,7 @@
     @classmethod
     def setup_clients(cls):
         super(TldAdminTest, cls).setup_clients()
-        cls.admin_client = cls.os_admin.tld_client
+        cls.admin_client = cls.os_admin.dns_v2.TldClient()
 
     @classmethod
     def resource_setup(cls):
@@ -140,7 +140,7 @@
     @classmethod
     def setup_clients(cls):
         super(TestTldNotFoundAdmin, cls).setup_clients()
-        cls.admin_client = cls.os_admin.tld_client
+        cls.admin_client = cls.os_admin.dns_v2.TldClient()
 
     @decorators.idempotent_id('b237d5ee-0d76-4294-a3b6-c2f8bf4b0e30')
     def test_show_tld_404(self):
@@ -183,7 +183,7 @@
     @classmethod
     def setup_clients(cls):
         super(TestTldInvalidIdAdmin, cls).setup_clients()
-        cls.admin_client = cls.os_admin.tld_client
+        cls.admin_client = cls.os_admin.dns_v2.TldClient()
 
     @decorators.idempotent_id('f9ec0730-57ff-4720-8d06-e11d377c7cfc')
     def test_show_tld_invalid_uuid(self):
diff --git a/designate_tempest_plugin/tests/api/v2/test_transfer_accepts.py b/designate_tempest_plugin/tests/api/v2/test_transfer_accepts.py
index 7cfc4a9..b4ab5c8 100644
--- a/designate_tempest_plugin/tests/api/v2/test_transfer_accepts.py
+++ b/designate_tempest_plugin/tests/api/v2/test_transfer_accepts.py
@@ -40,19 +40,19 @@
         super(TransferAcceptTest, cls).setup_clients()
 
         # Primary clients
-        cls.prm_zone_client = cls.os_primary.zones_client
-        cls.prm_request_client = cls.os_primary.transfer_request_client
-        cls.prm_accept_client = cls.os_primary.transfer_accept_client
+        cls.prm_zone_client = cls.os_primary.dns_v2.ZonesClient()
+        cls.prm_request_client = cls.os_primary.dns_v2.TransferRequestClient()
+        cls.prm_accept_client = cls.os_primary.dns_v2.TransferAcceptClient()
 
         # Alt clients
-        cls.alt_zone_client = cls.os_alt.zones_client
-        cls.alt_request_client = cls.os_alt.transfer_request_client
-        cls.alt_accept_client = cls.os_alt.transfer_accept_client
+        cls.alt_zone_client = cls.os_alt.dns_v2.ZonesClient()
+        cls.alt_request_client = cls.os_alt.dns_v2.TransferRequestClient()
+        cls.alt_accept_client = cls.os_alt.dns_v2.TransferAcceptClient()
 
         # Admin clients
-        cls.admin_zone_client = cls.os_admin.zones_client
-        cls.admin_request_client = cls.os_admin.transfer_request_client
-        cls.admin_accept_client = cls.os_admin.transfer_accept_client
+        cls.admin_zone_client = cls.os_admin.dns_v2.ZonesClient()
+        cls.admin_request_client = cls.os_admin.dns_v2.TransferRequestClient()
+        cls.admin_accept_client = cls.os_admin.dns_v2.TransferAcceptClient()
 
     @decorators.idempotent_id('1c6baf97-a83e-4d2e-a5d8-9d37fb7808f3')
     def test_create_transfer_accept(self):
@@ -305,9 +305,9 @@
     @classmethod
     def setup_clients(cls):
         super(TransferAcceptTestNegative, cls).setup_clients()
-        cls.zone_client = cls.os_primary.zones_client
-        cls.request_client = cls.os_primary.transfer_request_client
-        cls.client = cls.os_primary.transfer_accept_client
+        cls.zone_client = cls.os_primary.dns_v2.ZonesClient()
+        cls.request_client = cls.os_primary.dns_v2.TransferRequestClient()
+        cls.client = cls.os_primary.dns_v2.TransferAcceptClient()
 
     @decorators.idempotent_id('324a3e80-a1cc-11eb-b534-74e5f9e2a801')
     def test_create_transfer_accept_using_invalid_key(self):
diff --git a/designate_tempest_plugin/tests/api/v2/test_transfer_request.py b/designate_tempest_plugin/tests/api/v2/test_transfer_request.py
index 94a1480..5878dc9 100644
--- a/designate_tempest_plugin/tests/api/v2/test_transfer_request.py
+++ b/designate_tempest_plugin/tests/api/v2/test_transfer_request.py
@@ -39,11 +39,11 @@
     def setup_clients(cls):
         super(TransferRequestTest, cls).setup_clients()
 
-        cls.zone_client = cls.os_primary.zones_client
-        cls.alt_zone_client = cls.os_alt.zones_client
-        cls.client = cls.os_primary.transfer_request_client
-        cls.alt_client = cls.os_alt.transfer_request_client
-        cls.admin_client = cls.os_admin.transfer_request_client
+        cls.zone_client = cls.os_primary.dns_v2.ZonesClient()
+        cls.alt_zone_client = cls.os_alt.dns_v2.ZonesClient()
+        cls.client = cls.os_primary.dns_v2.TransferRequestClient()
+        cls.alt_client = cls.os_alt.dns_v2.TransferRequestClient()
+        cls.admin_client = cls.os_admin.dns_v2.TransferRequestClient()
 
     @decorators.idempotent_id('2381d489-ad84-403d-b0a2-8b77e4e966bf')
     def test_create_transfer_request(self):
@@ -282,7 +282,7 @@
     @classmethod
     def setup_clients(cls):
         super(TestTransferRequestNotFound, cls).setup_clients()
-        cls.client = cls.os_primary.transfer_request_client
+        cls.client = cls.os_primary.dns_v2.TransferRequestClient()
 
     @decorators.idempotent_id('d255f72f-ba24-43df-9dba-011ed7f4625d')
     def test_show_transfer_request_404(self):
@@ -324,7 +324,7 @@
     @classmethod
     def setup_clients(cls):
         super(TestTransferRequestInvalidId, cls).setup_clients()
-        cls.client = cls.os_primary.transfer_request_client
+        cls.client = cls.os_primary.dns_v2.TransferRequestClient()
 
     @decorators.idempotent_id('2205dd19-ecc7-4c68-9e89-63c47d642b07')
     def test_show_transfer_request_invalid_uuid(self):
diff --git a/designate_tempest_plugin/tests/api/v2/test_tsigkey.py b/designate_tempest_plugin/tests/api/v2/test_tsigkey.py
index 77d3e13..5cd9512 100644
--- a/designate_tempest_plugin/tests/api/v2/test_tsigkey.py
+++ b/designate_tempest_plugin/tests/api/v2/test_tsigkey.py
@@ -38,8 +38,8 @@
     @classmethod
     def setup_clients(cls):
         super(TsigkeyAdminTest, cls).setup_clients()
-        cls.zone_client = cls.os_primary.zones_client
-        cls.admin_client = cls.os_admin.tsigkey_client
+        cls.zone_client = cls.os_primary.dns_v2.ZonesClient()
+        cls.admin_client = cls.os_admin.dns_v2.TsigkeyClient()
 
     @decorators.idempotent_id('e7b484e3-7ed5-4840-89d7-1e696986f8e4')
     def test_create_tsigkey(self):
@@ -151,7 +151,7 @@
     @classmethod
     def setup_clients(cls):
         super(TestTsigkeyNotFoundAdmin, cls).setup_clients()
-        cls.admin_client = cls.os_admin.tsigkey_client
+        cls.admin_client = cls.os_admin.dns_v2.TsigkeyClient()
 
     @decorators.idempotent_id('824c9b49-edc5-4282-929e-467a158d23e4')
     def test_show_tsigkey_404(self):
@@ -194,7 +194,7 @@
     @classmethod
     def setup_clients(cls):
         super(TestTsigkeyInvalidIdAdmin, cls).setup_clients()
-        cls.admin_client = cls.os_admin.tsigkey_client
+        cls.admin_client = cls.os_admin.dns_v2.TsigkeyClient()
 
     @decorators.idempotent_id('2a8dfc75-9884-4b1c-8f1f-ed835d96f2fe')
     def test_show_tsigkey_invalid_uuid(self):
diff --git a/designate_tempest_plugin/tests/api/v2/test_zone_tasks.py b/designate_tempest_plugin/tests/api/v2/test_zone_tasks.py
index 12eea8c..581b7c2 100644
--- a/designate_tempest_plugin/tests/api/v2/test_zone_tasks.py
+++ b/designate_tempest_plugin/tests/api/v2/test_zone_tasks.py
@@ -45,11 +45,9 @@
     @classmethod
     def setup_clients(cls):
         super(ZoneTasks, cls).setup_clients()
-
-        cls.client = cls.os_primary.zones_client
-        cls.alt_client = cls.os_alt.zones_client
-        cls.admin_client = cls.os_admin.zones_client
-        cls.query_client = cls.os_primary.query_client
+        cls.client = cls.os_primary.dns_v2.ZonesClient()
+        cls.admin_client = cls.os_admin.dns_v2.ZonesClient()
+        cls.alt_client = cls.os_alt.dns_v2.ZonesClient()
 
     @decorators.idempotent_id('287e2cd0-a0e7-11eb-b962-74e5f9e2a801')
     def test_zone_abandon(self):
@@ -117,11 +115,9 @@
     @classmethod
     def setup_clients(cls):
         super(ZoneTasksNegative, cls).setup_clients()
-
-        cls.client = cls.os_primary.zones_client
-        cls.alt_client = cls.os_alt.zones_client
-        cls.admin_client = cls.os_admin.zones_client
-        cls.query_client = cls.os_primary.query_client
+        cls.client = cls.os_primary.dns_v2.ZonesClient()
+        cls.admin_client = cls.os_admin.dns_v2.ZonesClient()
+        cls.alt_client = cls.os_alt.dns_v2.ZonesClient()
 
     def _query_nameserver(self, nameserver, query_timeout,
                           zone_name, zone_type='SOA'):
diff --git a/designate_tempest_plugin/tests/api/v2/test_zones.py b/designate_tempest_plugin/tests/api/v2/test_zones.py
index c2337fe..dfd0a57 100644
--- a/designate_tempest_plugin/tests/api/v2/test_zones.py
+++ b/designate_tempest_plugin/tests/api/v2/test_zones.py
@@ -34,6 +34,7 @@
 
 class ZonesTest(BaseZonesTest):
     credentials = ['admin', 'primary']
+
     @classmethod
     def setup_credentials(cls):
         # Do not create network resources for these test.
@@ -43,9 +44,8 @@
     @classmethod
     def setup_clients(cls):
         super(ZonesTest, cls).setup_clients()
-
-        cls.client = cls.os_primary.zones_client
-        cls.pool_client = cls.os_admin.pool_client
+        cls.client = cls.os_primary.dns_v2.ZonesClient()
+        cls.pool_client = cls.os_admin.dns_v2.PoolClient()
 
     @decorators.idempotent_id('9d2e20fc-e56f-4a62-9c61-9752a9ec615c')
     def test_create_zones(self):
@@ -203,10 +203,9 @@
     @classmethod
     def setup_clients(cls):
         super(ZonesAdminTest, cls).setup_clients()
-
-        cls.client = cls.os_primary.zones_client
-        cls.admin_client = cls.os_admin.zones_client
-        cls.alt_client = cls.os_alt.zones_client
+        cls.client = cls.os_primary.dns_v2.ZonesClient()
+        cls.admin_client = cls.os_admin.dns_v2.ZonesClient()
+        cls.alt_client = cls.os_alt.dns_v2.ZonesClient()
 
     @decorators.idempotent_id('f6fe8cce-8b04-11eb-a861-74e5f9e2a801')
     def test_show_zone_impersonate_another_project(self):
@@ -300,9 +299,8 @@
     @classmethod
     def setup_clients(cls):
         super(ZoneOwnershipTest, cls).setup_clients()
-
-        cls.client = cls.os_primary.zones_client
-        cls.alt_client = cls.os_alt.zones_client
+        cls.client = cls.os_primary.dns_v2.ZonesClient()
+        cls.alt_client = cls.os_alt.dns_v2.ZonesClient()
 
     @decorators.idempotent_id('5d28580a-a012-4b57-b211-e077b1a01340')
     def test_no_create_duplicate_domain(self):
@@ -353,7 +351,7 @@
     @classmethod
     def setup_clients(cls):
         super(ZonesNegativeTest, cls).setup_clients()
-        cls.client = cls.os_primary.zones_client
+        cls.client = cls.os_primary.dns_v2.ZonesClient()
 
     @decorators.idempotent_id('551853c0-8593-11eb-8c8a-74e5f9e2a801')
     def test_no_valid_zone_name(self):
diff --git a/designate_tempest_plugin/tests/api/v2/test_zones_exports.py b/designate_tempest_plugin/tests/api/v2/test_zones_exports.py
index cd5a3ac..e07f32a 100644
--- a/designate_tempest_plugin/tests/api/v2/test_zones_exports.py
+++ b/designate_tempest_plugin/tests/api/v2/test_zones_exports.py
@@ -38,12 +38,11 @@
     @classmethod
     def setup_clients(cls):
         super(ZonesExportTest, cls).setup_clients()
-
-        cls.zone_client = cls.os_primary.zones_client
-        cls.alt_zone_client = cls.os_alt.zones_client
-        cls.client = cls.os_primary.zone_exports_client
-        cls.alt_client = cls.os_alt.zone_exports_client
-        cls.admin_client = cls.os_admin.zone_exports_client
+        cls.zone_client = cls.os_primary.dns_v2.ZonesClient()
+        cls.alt_zone_client = cls.os_alt.dns_v2.ZonesClient()
+        cls.client = cls.os_primary.dns_v2.ZoneExportsClient()
+        cls.alt_client = cls.os_alt.dns_v2.ZoneExportsClient()
+        cls.admin_client = cls.os_admin.dns_v2.ZoneExportsClient()
 
     @decorators.idempotent_id('2dd8a9a0-98a2-4bf6-bb51-286583b30f40')
     def test_create_zone_export(self):
@@ -228,10 +227,9 @@
     @classmethod
     def setup_clients(cls):
         super(ZonesExportTestNegative, cls).setup_clients()
-
-        cls.zone_client = cls.os_primary.zones_client
-        cls.client = cls.os_primary.zone_exports_client
-        cls.alt_client = cls.os_alt.zone_exports_client
+        cls.zone_client = cls.os_primary.dns_v2.ZonesClient()
+        cls.client = cls.os_primary.dns_v2.ZoneExportsClient()
+        cls.alt_client = cls.os_alt.dns_v2.ZoneExportsClient()
 
     @decorators.idempotent_id('76ab8ec4-95fd-11eb-b1cd-74e5f9e2a801')
     def test_create_zone_export_using_invalid_zone_id(self):
diff --git a/designate_tempest_plugin/tests/api/v2/test_zones_imports.py b/designate_tempest_plugin/tests/api/v2/test_zones_imports.py
index 332899d..7f1261b 100644
--- a/designate_tempest_plugin/tests/api/v2/test_zones_imports.py
+++ b/designate_tempest_plugin/tests/api/v2/test_zones_imports.py
@@ -41,11 +41,10 @@
     @classmethod
     def setup_clients(cls):
         super(ZonesImportTest, cls).setup_clients()
-
-        cls.client = cls.os_primary.zone_imports_client
-        cls.alt_client = cls.os_alt.zone_imports_client
-        cls.admin_client = cls.os_admin.zone_imports_client
-        cls.zone_client = cls.os_primary.zones_client
+        cls.zone_client = cls.os_primary.dns_v2.ZonesClient()
+        cls.client = cls.os_primary.dns_v2.ZoneImportsClient()
+        cls.alt_client = cls.os_alt.dns_v2.ZoneImportsClient()
+        cls.admin_client = cls.os_admin.dns_v2.ZoneImportsClient()
 
     def clean_up_resources(self, zone_import_id):
         zone_import = self.client.show_zone_import(zone_import_id)[1]
diff --git a/designate_tempest_plugin/tests/base.py b/designate_tempest_plugin/tests/base.py
index 083cd09..2ef5b00 100644
--- a/designate_tempest_plugin/tests/base.py
+++ b/designate_tempest_plugin/tests/base.py
@@ -16,8 +16,14 @@
 from tempest import config
 from tempest.lib.common.utils import test_utils as utils
 
+# TODO(johnsom) remove once neutron-tempest-plugin test_dns_integration
+#               has been updated
+# https://review.opendev.org/c/openstack/neutron-tempest-plugin/+/800291
 from designate_tempest_plugin import clients
 
+from designate_tempest_plugin.services.dns.query.query_client import \
+    QueryClient
+
 
 CONF = config.CONF
 
@@ -76,6 +82,19 @@
                         % cls.__name__)
             raise cls.skipException(skip_msg)
 
+    @classmethod
+    def setup_clients(cls):
+        super(BaseDnsTest, cls).setup_clients()
+        # The Query Client is not an OpenStack client which means
+        # we should not set it up through the tempest client manager.
+        # Set it up here so all tests have access to it.
+        cls.query_client = QueryClient(
+            nameservers=CONF.dns.nameservers,
+            query_timeout=CONF.dns.query_timeout,
+            build_interval=CONF.dns.build_interval,
+            build_timeout=CONF.dns.build_timeout,
+        )
+
     def assertExpected(self, expected, actual, excluded_keys):
         for key, value in six.iteritems(expected):
             if key not in excluded_keys:
@@ -122,7 +141,9 @@
 class BaseDnsV2Test(BaseDnsTest):
     """Base class for DNS V2 API tests."""
 
-    # Use the Designate V2 Client Manager
+    # TODO(johnsom) remove once neutron-tempest-plugin test_dns_integration
+    #               has been updated
+    # https://review.opendev.org/c/openstack/neutron-tempest-plugin/+/800291
     client_manager = clients.ManagerV2
 
     @classmethod
@@ -138,9 +159,6 @@
 class BaseDnsAdminTest(BaseDnsTest):
     """Base class for DNS Admin API tests."""
 
-    # Use the Designate Admin Client Manager
-    client_manager = clients.ManagerAdmin
-
     @classmethod
     def skip_checks(cls):
         super(BaseDnsAdminTest, cls).skip_checks()
diff --git a/designate_tempest_plugin/tests/scenario/v2/test_recordsets.py b/designate_tempest_plugin/tests/scenario/v2/test_recordsets.py
index d1c90d7..def1150 100644
--- a/designate_tempest_plugin/tests/scenario/v2/test_recordsets.py
+++ b/designate_tempest_plugin/tests/scenario/v2/test_recordsets.py
@@ -31,9 +31,8 @@
     def setup_clients(cls):
         super(RecordsetsTest, cls).setup_clients()
 
-        cls.client = cls.os_primary.zones_client
-        cls.recordset_client = cls.os_primary.recordset_client
-        cls.query_client = cls.os_primary.query_client
+        cls.client = cls.os_primary.dns_v2.ZonesClient()
+        cls.recordset_client = cls.os_primary.dns_v2.RecordsetClient()
 
     @classmethod
     def resource_setup(cls):
diff --git a/designate_tempest_plugin/tests/scenario/v2/test_zones.py b/designate_tempest_plugin/tests/scenario/v2/test_zones.py
index 4763647..a7529a1 100644
--- a/designate_tempest_plugin/tests/scenario/v2/test_zones.py
+++ b/designate_tempest_plugin/tests/scenario/v2/test_zones.py
@@ -29,8 +29,7 @@
     def setup_clients(cls):
         super(ZonesTest, cls).setup_clients()
 
-        cls.client = cls.os_primary.zones_client
-        cls.query_client = cls.os_primary.query_client
+        cls.client = cls.os_primary.dns_v2.ZonesClient()
 
     @decorators.attr(type='smoke')
     @decorators.attr(type='slow')
diff --git a/designate_tempest_plugin/tests/scenario/v2/test_zones_export.py b/designate_tempest_plugin/tests/scenario/v2/test_zones_export.py
index b5df2a0..916e634 100644
--- a/designate_tempest_plugin/tests/scenario/v2/test_zones_export.py
+++ b/designate_tempest_plugin/tests/scenario/v2/test_zones_export.py
@@ -28,8 +28,8 @@
     def setup_clients(cls):
         super(ZonesExportTest, cls).setup_clients()
 
-        cls.zones_client = cls.os_primary.zones_client
-        cls.client = cls.os_primary.zone_exports_client
+        cls.client = cls.os_primary.dns_v2.ZoneExportsClient()
+        cls.zones_client = cls.os_primary.dns_v2.ZonesClient()
 
     @decorators.attr(type='slow')
     @decorators.idempotent_id('0484c3c4-df57-458e-a6e5-6eb63e0475e0')
diff --git a/designate_tempest_plugin/tests/scenario/v2/test_zones_import.py b/designate_tempest_plugin/tests/scenario/v2/test_zones_import.py
index b08f829..e92feee 100644
--- a/designate_tempest_plugin/tests/scenario/v2/test_zones_import.py
+++ b/designate_tempest_plugin/tests/scenario/v2/test_zones_import.py
@@ -28,8 +28,8 @@
     def setup_clients(cls):
         super(ZonesImportTest, cls).setup_clients()
 
-        cls.client = cls.os_primary.zone_imports_client
-        cls.zones_client = cls.os_primary.zones_client
+        cls.client = cls.os_primary.dns_v2.ZoneImportsClient()
+        cls.zones_client = cls.os_primary.dns_v2.ZonesClient()
 
     @decorators.attr(type='slow')
     @decorators.idempotent_id('679f38d0-2f2f-49c5-934e-8fe0c452f56e')
diff --git a/designate_tempest_plugin/tests/scenario/v2/test_zones_transfer.py b/designate_tempest_plugin/tests/scenario/v2/test_zones_transfer.py
index 88e9c8f..3437c33 100644
--- a/designate_tempest_plugin/tests/scenario/v2/test_zones_transfer.py
+++ b/designate_tempest_plugin/tests/scenario/v2/test_zones_transfer.py
@@ -27,14 +27,14 @@
     @classmethod
     def setup_clients(cls):
         super(ZonesTransferTest, cls).setup_clients()
-        cls.zones_client = cls.os_primary.zones_client
-        cls.alt_zones_client = cls.os_alt.zones_client
-        cls.admin_zones_client = cls.os_admin.zones_client
-        cls.request_client = cls.os_primary.transfer_request_client
-        cls.alt_request_client = cls.os_alt.transfer_request_client
-        cls.accept_client = cls.os_primary.transfer_accept_client
-        cls.alt_accept_client = cls.os_alt.transfer_accept_client
-        cls.admin_accept_client = cls.os_admin.transfer_accept_client
+        cls.zones_client = cls.os_primary.dns_v2.ZonesClient()
+        cls.alt_zones_client = cls.os_alt.dns_v2.ZonesClient()
+        cls.admin_zones_client = cls.os_admin.dns_v2.ZonesClient()
+        cls.request_client = cls.os_primary.dns_v2.TransferRequestClient()
+        cls.alt_request_client = cls.os_alt.dns_v2.TransferRequestClient()
+        cls.accept_client = cls.os_primary.dns_v2.TransferAcceptClient()
+        cls.alt_accept_client = cls.os_alt.dns_v2.TransferAcceptClient()
+        cls.admin_accept_client = cls.os_admin.dns_v2.TransferAcceptClient()
 
     @decorators.idempotent_id('60bd80ac-c979-4686-9a03-f2f775f272ab')
     def test_zone_transfer(self):