-
Notifications
You must be signed in to change notification settings - Fork 90
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Revise control flow for Migrate Groups
with more resiliency
#349
Comments
@nfx Here is a design overview for Group/Object Permission/ACL migration We should agree on functionality, and operation here and then create follow-up issues to get alignment on what already exists. |
@zpappa This issue is too long. Create a PR and copy the contents into a markdown file in docs folder and consolidate it with the other group migration docs from there, because this issue mixes current state and desired state. Also don't be that prescriptive on dashboards/internal persistence structures. Let's take it from there. |
@zpappa is committed to split of this to multiple different issues and close this one. |
@nfx I will leave this open and link back to it so implementors have the full context when working on their issue |
Migrate Groups
with more resiliency
We might separate it, but isn't it the goal to prepare all the data before any other steps? We need to list notebooks for scanning their contents anyway. |
scanned through requirements - generating a notebook must not be an option (this is solutions), we have predefined workflows (this is design). |
new permission migration api makes this issue irrelevant. |
Background
This issue attempts to capture the proposed control flow for group migration. This control flow should be idempotently repeatable, transacted at various states, and provide different reporting points to the user.
Related Issues
#343
#342
#344
Entry Points
The entry point should be easily runnable via CLI and take the workspace id as a default parameter
databricks labs ucx migrate-groups --workspace-id=12132312323
Optional Parameters
Control Flow Overview
This entire control flow should operate with some temporary state management between actions so that operations can be continued or the control flow can be retried in the case of an error or interruption.
Persisted Data Structures
External Workspace Groups Requiring SCIM Configuration #343
Duplicated workspace groups with different members #344
Temporarily Persisted Data Structures
hive_metastore.foo.baz:group_1
hive_metastore.foo.baz:group_2
Phase 1 - Workspace Group Migration
Check to see if the skip groups flag has been set
Check to see if the Workspace Group Migration Manifest exists
For each group in Workspace $inventory as ordered by your Group Upgrade Manifest where not migrated
Delete the Workspace Group Migration Manifest when the operation is complete.
Phase 2 - Workspace Object Permission Migration
1) Map object ACLs that have groups from group->new_group as per your $inventory
2) Manage state in memory, commit to manifest file in the case of an exception
Phase 3 - Workspace Table ACL Migration
1) Parse the ACL statement, tokenize into principal, securable, permission
2) Map the principal if it is a group (will not be an email address or a service principal guid)
3) Add to a string builder to generate a SQL notebook to run all grant commands, make sure to revoke the existing privilege
4) Manage state in memory, commit to manifest file in the case of an exception,
5) Generate a SQL notebook/query from the manifest/memory, run the notebook/query
The text was updated successfully, but these errors were encountered: