'Initialises the client factory
:param module_path: Path to module that includes all service clients.
All service client classes must be exposed by a single module.
If they are separated in different modules, defining __all__
in the root module can help, similar to what is done by service
clients in tempest.
:param client_names: List or set of names of the service client
classes.
:param auth_provider: The auth provider used to initialise client.
:param kwargs: Parameters to be passed to all clients. Parameters
values can be overwritten when clients are initialised, but
parameters cannot be deleted.
:raise ImportError: if the specified module_path cannot be imported
Example::
# Get credentials and an auth_provider
clients = ClientsFactory(
module_path=\'my_service.my_service_clients\',
client_names=[\'ServiceClient1\', \'ServiceClient2\'],
auth_provider=auth_provider,
service=\'my_service\',
region=\'region1\')
my_api_client = clients.MyApiClient()
my_api_client_region2 = clients.MyApiClient(region=\'region2\')'

def __init__(self, module_path, client_names, auth_provider, **kwargs):

    _module = importlib.import_module(module_path)
    for class_name in client_names:
        klass = self._get_class(_module, class_name)
        final_kwargs = copy.copy(kwargs)
        setattr(self, class_name, self._get_partial_class(klass, auth_provider, final_kwargs))
