Merge "Register Tempest clients via the new interface"
diff --git a/tempest/service_clients.py b/tempest/service_clients.py
index d0daa2b..f131b58 100644
--- a/tempest/service_clients.py
+++ b/tempest/service_clients.py
@@ -22,9 +22,19 @@
 from tempest.lib import auth
 from tempest.lib import exceptions
 from tempest.lib.services import clients
+from tempest.lib.services import compute
+from tempest.lib.services import image
+from tempest.lib.services import network
 
 LOG = logging.getLogger(__name__)
 
+client_modules_by_service_name = {
+    'compute': compute,
+    'image.v1': image.v1,
+    'image.v2': image.v2,
+    'network': network
+}
+
 
 def tempest_modules():
     """List of service client modules available in Tempest.
@@ -289,6 +299,16 @@
             raise exceptions.UnknownServiceClient(
                 services=list(client_parameters.keys()))
 
+        # Register service clients owned by tempest
+        for service in tempest_modules():
+            if service in list(client_modules_by_service_name):
+                attribute = service.replace('.', '_')
+                configs = service.split('.')[0]
+                module = client_modules_by_service_name[service]
+                self.register_service_client_module(
+                    attribute, service, module.__name__,
+                    module.__all__, **self.parameters[configs])
+
         # Register service clients from plugins
         clients_registry = clients.ClientsRegistry()
         plugin_service_clients = clients_registry.get_service_clients()
@@ -362,10 +382,10 @@
 
     @property
     def registered_services(self):
-        # TODO(andreaf) For now add all Tempest services. to the list of
-        # registered service
-        _default_services = tempest_modules()
-        return self._registered_services | _default_services
+        # TODO(andreaf) Temporary set needed until all services are migrated
+        _non_migrated_services = tempest_modules() - set(
+            client_modules_by_service_name)
+        return self._registered_services | _non_migrated_services
 
     def _setup_parameters(self, parameters):
         """Setup default values for client parameters
diff --git a/tempest/tests/test_service_clients.py b/tempest/tests/test_service_clients.py
index befed68..3d8b360 100644
--- a/tempest/tests/test_service_clients.py
+++ b/tempest/tests/test_service_clients.py
@@ -265,11 +265,12 @@
                              _params[_key])
 
     def test_register_service_client_module(self):
-        factory_mock = self.useFixture(fixtures.MockPatch(
-            'tempest.service_clients.ClientsFactory')).mock
         expected_params = {'fake_param1': 'fake_value1',
                            'fake_param2': 'fake_value2'}
         _manager = self._get_manager(init_region='fake_region_default')
+        # Mock after the _manager is setup to preserve the call count
+        factory_mock = self.useFixture(fixtures.MockPatch(
+            'tempest.service_clients.ClientsFactory')).mock
         _manager.register_service_client_module(
             name='fake_module',
             service_version='fake_service',
@@ -291,13 +292,14 @@
         self.assertIn('fake_service', _manager._registered_services)
 
     def test_register_service_client_module_override_default(self):
-        factory_mock = self.useFixture(fixtures.MockPatch(
-            'tempest.service_clients.ClientsFactory')).mock
         new_region = 'new_region'
         expected_params = {'fake_param1': 'fake_value1',
                            'fake_param2': 'fake_value2',
                            'region': new_region}
         _manager = self._get_manager(init_region='fake_region_default')
+        # Mock after the _manager is setup to preserve the call count
+        factory_mock = self.useFixture(fixtures.MockPatch(
+            'tempest.service_clients.ClientsFactory')).mock
         _manager.register_service_client_module(
             name='fake_module',
             service_version='fake_service',