csharp/Microsoft.Azure.Databricks.Client/UnityCatalog/MetastoresApiClient.cs (111 lines of code) (raw):

using Microsoft.Azure.Databricks.Client.Models.UnityCatalog; 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.UnityCatalog; public class MetastoresApiClient : ApiClient, IMetastoresApi { public MetastoresApiClient(HttpClient httpClient) : base(httpClient) { } public async Task<Metastore> Create( string name, string storageRoot, string region = null, CancellationToken cancellationToken = default) { var requestUri = $"{BaseUnityCatalogUri}/metastores"; var request = new { name, storage_root = storageRoot, region }; return await HttpPost<dynamic, Metastore>(HttpClient, requestUri, request, cancellationToken); } public async Task CreateAssignment( long workspaceId, string metastoreId, string defaultCatalogName, CancellationToken cancellationToken = default) { var requestUri = $"{BaseUnityCatalogUri}/workspaces/{workspaceId}/metastore"; var request = new { metastore_id = metastoreId, default_catalog_name = defaultCatalogName }; await HttpPut<dynamic>(HttpClient, requestUri, request, cancellationToken); } public async Task Delete( string metastoreId, bool force = false, CancellationToken cancellationToken = default) { var requestUri = $"{BaseUnityCatalogUri}/metastores/{metastoreId}?force={force.ToString().ToLower()}"; await HttpDelete(HttpClient, requestUri, cancellationToken); } public async Task DeleteAssignment( long workspaceId, string metastoreId, CancellationToken cancellationToken = default) { var requestUri = $"{BaseUnityCatalogUri}/workspaces/{workspaceId}/metastore?metastore_id={metastoreId}"; await HttpDelete(HttpClient, requestUri, cancellationToken); } public Task<Metastore> Get(string metastoreId, CancellationToken cancellationToken = default) { var requestUri = $"{BaseUnityCatalogUri}/metastores/{metastoreId}"; return HttpGet<Metastore>(HttpClient, requestUri, cancellationToken); } public Task<MetastoreAssignment> GetAssignment(CancellationToken cancellationToken = default) { var requestUri = $"{BaseUnityCatalogUri}/current-metastore-assignment"; return HttpGet<MetastoreAssignment>(HttpClient, requestUri, cancellationToken); } public Task<Metastore> GetSummary(CancellationToken cancellationToken = default) { var requestUri = $"{BaseUnityCatalogUri}/metastore_summary"; return HttpGet<Metastore>(HttpClient, requestUri, cancellationToken); } public async Task<IEnumerable<Metastore>> List(CancellationToken cancellationToken = default) { var requestUri = $"{BaseUnityCatalogUri}/metastores"; var metastoresList = await HttpGet<JsonObject>(HttpClient, requestUri, cancellationToken).ConfigureAwait(false); metastoresList.TryGetPropertyValue("metastores", out var metastores); return metastores?.Deserialize<IEnumerable<Metastore>>(Options) ?? Enumerable.Empty<Metastore>(); } public async Task<Metastore> Update( string metastoreId, string newMetastoreName = null, string storageRootCredentialId = null, DeltaSharingScope? deltaSharingScope = null, long? deltaSharingRecipientTokenLifetimeInSeconds = null, string deltaSharingOrganizationName = null, string owner = null, string privilegeModelVersion = null, CancellationToken cancellationToken = default) { var requestUri = $"{BaseUnityCatalogUri}/metastores/{metastoreId}"; var request = new { name = newMetastoreName, storage_root_credential_id = storageRootCredentialId, delta_sharing_scope = deltaSharingScope, delta_sharing_recipient_token_lifetime_in_seconds = deltaSharingRecipientTokenLifetimeInSeconds, delta_sharing_organization_name = deltaSharingOrganizationName, owner, privilege_model_version = privilegeModelVersion }; return await HttpPatch<dynamic, Metastore>(HttpClient, requestUri, request, cancellationToken); } public async Task UpdateAssignment( long workspaceId, string metastoreId = null, string defaultCatalogName = null, CancellationToken cancellationToken = default) { var requestUri = $"{BaseUnityCatalogUri}/workspaces/{workspaceId}/metastore"; var request = new { metastore_id = metastoreId, default_catalog_name = defaultCatalogName }; await HttpPatch<dynamic>(HttpClient, requestUri, request, cancellationToken); } }