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);
}