Merge "Update service client access in tempest tests"
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 cad09a4..cb2b4fa 100644
--- a/designate_tempest_plugin/tests/api/v2/test_zone_tasks.py
+++ b/designate_tempest_plugin/tests/api/v2/test_zone_tasks.py
@@ -46,11 +46,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):
@@ -118,11 +116,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):