You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/local-group-migration.md
+13-17Lines changed: 13 additions & 17 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -17,18 +17,12 @@ To deliver this migration, the following steps are performed:
17
17
18
18
> Please note that inherited permissions will not be inventorized / migrated. We only cover direct permissions.
19
19
20
-
On a very high-level, the permissions inventorization process is split into two steps:
20
+
On a very high-level, the permissions crawling process is split into two steps:
21
21
22
-
1. collect all existing permissions into a persistent storage.
23
-
2. apply the collected permissions to the target resources.
22
+
1. collect all existing permissions into a persistent storage - see `workspace_access.AclSupport.get_crawler_tasks`.
23
+
2. apply the collected permissions to the target resources - see `workspace_access.AclSupport.get_apply_task`.
24
24
25
-
The first step is performed by the `Crawler` and the second by the `Applier`.
26
-
27
-
Crawler and applier are intrinsically connected to each other due to SerDe (serialization/deserialization) logic.
28
-
29
-
We implement separate crawlers and applier for each supported resource type.
30
-
31
-
Please note that `table ACLs` logic is currently handled separately from the logic described in this document.
25
+
We implement `workspace_access.AclSupport` for each supported resource type.
32
26
33
27
## Logical objects and relevant APIs
34
28
@@ -147,7 +141,9 @@ Additional info:
147
141
148
142
#### Known issues
149
143
150
-
- Folder names with forward-slash (`/`) in directory name will be skipped by the inventory. Databricks UI no longer allows creating folders with a forward slash. See [this issue](https://github.com/databrickslabs/ucx/issues/230) for more details.
144
+
- Folder names with forward-slash (`/`) in directory name will be skipped by the inventory. Databricks UI no longer
145
+
allows creating folders with a forward slash. See [this issue](https://github.com/databrickslabs/ucx/issues/230) for
146
+
more details.
151
147
152
148
### Secrets (uses Secrets API)
153
149
@@ -163,16 +159,16 @@ Additional info:
163
159
- put method: `ws.secrets.put_acl`
164
160
165
161
166
-
## Crawler and serialization logic
162
+
## AclSupport and serialization logic
167
163
168
164
Crawlers are expected to return a list of callable functions that will be later used to get the permissions.
169
-
Each of these functions shall return a `PermissionInventoryItem` that should be serializable into a Delta Table.
165
+
Each of these functions shall return a `workspace_access.Permissions` that should be serializable into a Delta Table.
170
166
The permission payload differs between different crawlers, therefore each crawler should implement a serialization
171
167
method.
172
168
173
169
## Applier and deserialization logic
174
170
175
-
Appliers are expected to accept a list of `PermissionInventoryItem` and generate a list of callables that will apply the
171
+
Appliers are expected to accept a list of `workspace_access.Permissions` and generate a list of callables that will apply the
176
172
given permissions.
177
173
Each applier should implement a deserialization method that will convert the raw payload into a typed one.
178
174
Each permission item should have a crawler type associated with it, so that the applier can use the correct
@@ -189,10 +185,10 @@ We do this inside the `applier`, by returning a `noop` callable if the object is
189
185
To crawl the permissions, we use the following logic:
190
186
1. Go through the list of all crawlers.
191
187
2. Get the list of all objects of the given type.
192
-
3. For each object, generate a callable that will return a `PermissionInventoryItem`.
188
+
3. For each object, generate a callable that will return a `workspace_access.Permissions`.
193
189
4. Execute the callables in parallel
194
-
5. Collect the results into a list of `PermissionInventoryItem`.
195
-
6. Save the list of `PermissionInventoryItem` into a Delta Table.
190
+
5. Collect the results into a list of `workspace_access.Permissions`.
191
+
6. Save the list of `workspace_access.Permissions` into a Delta Table.
0 commit comments