in code/KustoCopyConsole/Kusto/ProviderFactory.cs [21:72]
public ProviderFactory(
MainJobParameterization parameterization,
TokenCredential credentials,
string traceApplicationName)
{
var sourceClusterUris = parameterization.Activities
.Values
.Select(a => NormalizedUri.NormalizeUri(a.Source.ClusterUri))
.Distinct();
var destinationClusterUris = parameterization.Activities
.Values
.Select(a => NormalizedUri.NormalizeUri(a.Destination.ClusterUri))
.Distinct();
var allClusterUris = sourceClusterUris
.Concat(destinationClusterUris)
.Distinct();
var sourceBuilders = sourceClusterUris
.Select(uri => new
{
Uri = uri,
Builder = CreateBuilder(credentials, uri, traceApplicationName)
});
var destinationIngestionBuilders = destinationClusterUris
.Select(uri => new
{
Uri = uri,
Builder = CreateBuilder(credentials, GetIngestUri(uri), traceApplicationName)
});
var allBuilders = allClusterUris
.Select(uri => new
{
Uri = uri,
Builder = CreateBuilder(credentials, uri, traceApplicationName)
});
_queryProviderMap = allBuilders
.ToImmutableDictionary(
e => e.Uri,
e => KustoClientFactory.CreateCslQueryProvider(e.Builder));
_commandProviderMap = allBuilders
.ToImmutableDictionary(
e => e.Uri,
e => KustoClientFactory.CreateCslAdminProvider(e.Builder));
_dmCommandProviderMap = destinationIngestionBuilders
.ToImmutableDictionary(
e => e.Uri,
e => KustoClientFactory.CreateCslAdminProvider(e.Builder));
_ingestProviderMap = destinationIngestionBuilders
.ToImmutableDictionary(
e => e.Uri,
e => KustoIngestFactory.CreateQueuedIngestClient(e.Builder));
}