private static async Task TestInstancePoolApi()

in csharp/Microsoft.Azure.Databricks.Client.Sample/SampleProgram.InstancePool.cs [12:72]


    private static async Task TestInstancePoolApi(DatabricksClient client)
    {
        Console.WriteLine("Creating Testing Instance Pool");
        var poolAttributes = new InstancePoolAttributes
        {
            PoolName = "TestInstancePool",
            PreloadedSparkVersions = new[] { RuntimeVersions.Runtime_10_4 },
            MinIdleInstances = 2,
            MaxCapacity = 100,
            IdleInstanceAutoTerminationMinutes = 15,
            NodeTypeId = NodeTypes.Standard_D3_v2,
            EnableElasticDisk = true,
            DiskSpec = new DiskSpec
            { DiskCount = 2, DiskSize = 64, DiskType = DiskType.FromAzureDisk(AzureDiskVolumeType.STANDARD_LRS) },
            PreloadedDockerImages = new[]
            {
                new DockerImage {Url = "databricksruntime/standard:latest"}
            },
            AzureAttributes = new InstancePoolAzureAttributes { Availability = AzureAvailability.SPOT_AZURE, SpotBidMaxPrice = -1 }
        };

        var poolId = await client.InstancePool.Create(poolAttributes).ConfigureAwait(false);

        Console.WriteLine("Listing pools");
        var pools = await client.InstancePool.List().ConfigureAwait(false);
        foreach (var pool in pools)
        {
            Console.WriteLine($"\t{pool.PoolId}\t{pool.PoolName}\t{pool.State}");
        }

        Console.WriteLine("Getting created pool by poolId");
        var targetPoolInfo = await client.InstancePool.Get(poolId).ConfigureAwait(false);

        Console.WriteLine("Editing pool");
        targetPoolInfo.MinIdleInstances = 3;
        await client.InstancePool.Edit(poolId, targetPoolInfo).ConfigureAwait(false);

        Console.WriteLine("Getting edited pool by poolId");
        targetPoolInfo = await client.InstancePool.Get(poolId).ConfigureAwait(false);
        Console.WriteLine($"MinIdleInstances: {targetPoolInfo.MinIdleInstances}");

        Console.WriteLine("Creating a sample cluster in the pool.");
        var clusterConfig = ClusterAttributes.GetNewClusterConfiguration("SampleProgram cluster")
            .WithRuntimeVersion(RuntimeVersions.Runtime_7_3)
            .WithAutoScale(3, 7)
            .WithAutoTermination(30)
            .WithClusterLogConf("dbfs:/logs/");
        clusterConfig.InstancePoolId = poolId;

        var clusterId = await client.Clusters.Create(clusterConfig);

        var createdCluster = await client.Clusters.Get(clusterId);

        Console.WriteLine($"Created cluster pool Id: {createdCluster.InstancePoolId}");

        Console.WriteLine("Deleting pool");
        await client.InstancePool.Delete(poolId);

        Console.WriteLine("Deleting cluster");
        await client.Clusters.Delete(clusterId);
    }