csharp/Microsoft.Azure.Databricks.Client.Sample/SampleProgram.Library.cs (74 lines of code) (raw):

// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. using Microsoft.Azure.Databricks.Client.Models; using System; using System.Linq; using System.Threading.Tasks; namespace Microsoft.Azure.Databricks.Client.Sample; internal static partial class SampleProgram { private static async Task TestLibrariesApi(DatabricksClient client) { Console.WriteLine("All cluster statuses"); var libraries = await client.Libraries.AllClusterStatuses(); foreach (var (clusterId, libraryStatuses) in libraries) { Console.WriteLine("Cluster: {0}", clusterId); foreach (var status in libraryStatuses) { Console.WriteLine("\t{0}\t{1}", status.Status, status.Library); } } const string testClusterId = "0530-210517-viced348"; Console.WriteLine("Getting cluster statuses for {0}", testClusterId); var statuses = await client.Libraries.ClusterStatus(testClusterId); foreach (var status in statuses) { Console.WriteLine("\t{0}\t{1}", status.Status, status.Library); } var mvnlibraryToInstall = new MavenLibrary { MavenLibrarySpec = new MavenLibrarySpec { Coordinates = "org.jsoup:jsoup:1.7.2", Exclusions = new[] { "slf4j:slf4j" } } }; await TestInstallUninstallLibrary(client, mvnlibraryToInstall, testClusterId); var whlLibraryToInstall = new WheelLibrary { Wheel = "dbfs:/mnt/dbfsmount1/temp/docutils-0.14-py3-none-any.whl" }; await TestInstallUninstallLibrary(client, whlLibraryToInstall, testClusterId); } private static async Task TestInstallUninstallLibrary(DatabricksClient client, Library library, string clusterId) { Console.WriteLine("Installing library {0}", library); await client.Libraries.Install(clusterId, new[] { library }); while (true) { var statuses = await client.Libraries.ClusterStatus(clusterId); var targetLib = statuses.SingleOrDefault(status => status.Library.Equals(library)); if (targetLib == null) { Console.WriteLine("[{0:s}] Library {1} not found", DateTime.UtcNow, library); break; } if (targetLib.Status == LibraryInstallStatus.INSTALLED) { Console.WriteLine("[{0:s}] Library {1} INSTALLED", DateTime.UtcNow, library); break; } Console.WriteLine("[{0:s}] Library {1} status {2}", DateTime.UtcNow, library, targetLib.Status); if (targetLib.Status == LibraryInstallStatus.FAILED) { break; } await Task.Delay(TimeSpan.FromSeconds(5)); } Console.WriteLine("Uninstalling library {0}", library); await client.Libraries.Uninstall(clusterId, new[] { library }); var s = await client.Libraries.ClusterStatus(clusterId); var uninstalledLib = s.Single(status => status.Library.Equals(library)); Console.WriteLine("[{0:s}] Library {1} status {2}", DateTime.UtcNow, library, uninstalledLib.Status); } }