code/KustoCopyConsole/Kusto/DmCommandClient.cs (47 lines of code) (raw):

using Kusto.Cloud.Platform.Data; using Kusto.Data.Common; using KustoCopyConsole.Concurrency; using KustoCopyConsole.Entity; using KustoCopyConsole.Kusto.Data; using System.Collections.Immutable; using System.Data; namespace KustoCopyConsole.Kusto { internal class DmCommandClient { private readonly ICslAdminProvider _provider; private readonly PriorityExecutionQueue<KustoPriority> _queue; private readonly string _databaseName; public DmCommandClient( ICslAdminProvider provider, PriorityExecutionQueue<KustoPriority> queue, string databaseName) { _provider = provider; _queue = queue; _databaseName = databaseName; } public async Task<IImmutableList<Uri>> GetTempStorageUrisAsync(CancellationToken ct) { return await _queue.RequestRunAsync( KustoPriority.HighestPriority, async () => { var commandText = ".get ingestion resources"; var reader = await _provider.ExecuteControlCommandAsync( string.Empty, commandText); var storageRoots = reader .ToEnumerable(r => new { ResourceTypeName = (string)r["ResourceTypeName"], StorageRoot = (string)r["StorageRoot"] }) .Where(o => o.ResourceTypeName == "TempStorage") .Select(o => new Uri(o.StorageRoot)) .ToImmutableArray(); return storageRoots; }); } } }