csharp/Microsoft.Azure.Databricks.Client/LibrariesApiClient.cs (71 lines of code) (raw):
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using Microsoft.Azure.Databricks.Client.Models;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Text.Json;
using System.Text.Json.Nodes;
using System.Threading;
using System.Threading.Tasks;
namespace Microsoft.Azure.Databricks.Client;
public class LibrariesApiClient : ApiClient, ILibrariesApi
{
public LibrariesApiClient(HttpClient httpClient) : base(httpClient)
{
}
public async Task<IDictionary<string, IEnumerable<LibraryFullStatus>>> AllClusterStatuses(CancellationToken cancellationToken = default)
{
var result = await HttpGet<JsonObject>(this.HttpClient, $"{ApiVersion}/libraries/all-cluster-statuses", cancellationToken)
.ConfigureAwait(false);
if (result.TryGetPropertyValue("statuses", out var statuses))
{
return statuses!
.Deserialize<IEnumerable<JsonObject>>(Options)!
.ToDictionary(
e => e["cluster_id"].Deserialize<string>(Options),
e => e["library_statuses"].Deserialize<IEnumerable<LibraryFullStatus>>(Options)
);
}
else
{
return new Dictionary<string, IEnumerable<LibraryFullStatus>>();
}
}
public async Task<IEnumerable<LibraryFullStatus>> ClusterStatus(string clusterId,
CancellationToken cancellationToken = default)
{
var url = $"{ApiVersion}/libraries/cluster-status?cluster_id={clusterId}";
var result = await HttpGet<JsonObject>(this.HttpClient, url, cancellationToken).ConfigureAwait(false);
return result.TryGetPropertyValue("library_statuses", out var libraryStatuses)
? libraryStatuses.Deserialize<IEnumerable<LibraryFullStatus>>(Options)
: Enumerable.Empty<LibraryFullStatus>();
}
public async Task Install(string clusterId, IEnumerable<Library> libraries, CancellationToken cancellationToken = default)
{
if (libraries == null)
{
return;
}
var array = libraries as Library[] ?? libraries.ToArray();
if (!array.Any())
{
return;
}
var request = new { cluster_id = clusterId, libraries = array };
await HttpPost(this.HttpClient, $"{ApiVersion}/libraries/install", request, cancellationToken).ConfigureAwait(false);
}
public async Task Uninstall(string clusterId, IEnumerable<Library> libraries, CancellationToken cancellationToken = default)
{
if (libraries == null)
{
return;
}
var array = libraries as Library[] ?? libraries.ToArray();
if (!array.Any())
{
return;
}
var request = new { cluster_id = clusterId, libraries = array };
await HttpPost(this.HttpClient, $"{ApiVersion}/libraries/uninstall", request, cancellationToken).ConfigureAwait(false);
}
}