csharp/Microsoft.Azure.Databricks.Client/InstancePoolApiClient.cs (56 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 InstancePoolApiClient : ApiClient, IInstancePoolApi
{
/// <inheritdoc />
public InstancePoolApiClient(HttpClient httpClient) : base(httpClient)
{
}
/// <inheritdoc />
public async Task<string> Create(InstancePoolAttributes poolAttributes, CancellationToken cancellationToken = default)
{
var poolIdentifier =
await HttpPost<InstancePoolAttributes, JsonObject>(
this.HttpClient,
$"{ApiVersion}/instance-pools/create",
poolAttributes, cancellationToken).ConfigureAwait(false);
return poolIdentifier["instance_pool_id"]!.GetValue<string>();
}
/// <inheritdoc />
public async Task Edit(string poolId, InstancePoolAttributes poolAttributes, CancellationToken cancellationToken = default)
{
var pool = new InstancePoolInfo
{
PoolId = poolId,
PoolName = poolAttributes.PoolName,
NodeTypeId = poolAttributes.NodeTypeId,
MinIdleInstances = poolAttributes.MinIdleInstances,
MaxCapacity = poolAttributes.MaxCapacity,
IdleInstanceAutoTerminationMinutes = poolAttributes.IdleInstanceAutoTerminationMinutes
};
await HttpPost(this.HttpClient, $"{ApiVersion}/instance-pools/edit", pool, cancellationToken).ConfigureAwait(false);
}
/// <inheritdoc />
public async Task Delete(string poolId, CancellationToken cancellationToken = default)
{
await HttpPost(this.HttpClient, $"{ApiVersion}/instance-pools/delete", new { instance_pool_id = poolId }, cancellationToken)
.ConfigureAwait(false);
}
/// <inheritdoc />
public async Task<InstancePoolInfo> Get(string poolId, CancellationToken cancellationToken = default)
{
var requestUri = $"{ApiVersion}/instance-pools/get?instance_pool_id={poolId}";
return await HttpGet<InstancePoolInfo>(this.HttpClient, requestUri, cancellationToken).ConfigureAwait(false);
}
/// <inheritdoc />
public async Task<IEnumerable<InstancePoolInfo>> List(CancellationToken cancellationToken = default)
{
var requestUri = $"{ApiVersion}/instance-pools/list";
var poolList = await HttpGet<JsonObject>(this.HttpClient, requestUri, cancellationToken).ConfigureAwait(false);
return poolList.TryGetPropertyValue("instance_pools", out var instancePools)
? instancePools.Deserialize<IEnumerable<InstancePoolInfo>>(Options)
: Enumerable.Empty<InstancePoolInfo>();
}
}