private static async Task TestPermissions()

in csharp/Microsoft.Azure.Databricks.Client.Sample/SampleProgram.Permissions.cs [53:98]


    private static async Task TestPermissions(string resourceId, string principal,
        Func<string, CancellationToken, Task<IEnumerable<(PermissionLevel, string)>>> funcGetPermissionLevels,
        Func<string, CancellationToken, Task<IEnumerable<AclPermissionItem>>> funcGetPermissions,
        Func<IEnumerable<AclPermissionItem>, string, CancellationToken, Task> funcUpdatePermissions,
        Func<IEnumerable<AclPermissionItem>, string, CancellationToken, Task> funcReplacePermissions
    )
    {
        if (resourceId == null)
            return;

        Console.WriteLine($"Getting and displaying the allowable permission levels for resource {resourceId}");

        var permissionLevels = (await funcGetPermissionLevels(resourceId, default)).ToList();

        foreach (var (permissionLevel, description) in permissionLevels)
        {
            Console.WriteLine($"{permissionLevel}: {description}");
        }

        var allowedLevels = (from p in permissionLevels
                             select p.Item1).ToList();

        Console.WriteLine($"Getting and displaying current access levels for resource {resourceId}");

        var currentAclItems = (await funcGetPermissions(resourceId, default)).ToList();

        foreach (var aclItem in currentAclItems)
        {
            Console.WriteLine($"Principal: {aclItem.Principal}, Permission Level: {aclItem.PermissionLevel}");
        }

        var aclItems = from level in allowedLevels
                       select new UserAclItem { Principal = principal, PermissionLevel = level };

        foreach (var aclItem in aclItems.Where(item => item.PermissionLevel != PermissionLevel.IS_OWNER))
        {
            Console.WriteLine(
                $"Updating permissions for principal {aclItem.Principal}, permission level {aclItem.PermissionLevel}"
            );

            await funcUpdatePermissions(new[] { aclItem }, resourceId, default);
        }

        Console.WriteLine("Resetting user permissions");
        await funcReplacePermissions(currentAclItems, resourceId, default);
    }