Skip to content

Commit 38a5df2

Browse files
authored
Improve logging when skipping grant a in create-catalogs-schemas (#2917)
Improve logging when skipping grant a in `create-catalogs-schemas`
1 parent 5efb7bd commit 38a5df2

File tree

2 files changed

+23
-6
lines changed

2 files changed

+23
-6
lines changed

src/databricks/labs/ucx/hive_metastore/catalog_schema.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,9 @@ def _update_principal_acl(self):
7777
for grant in grants:
7878
acl_migrate_sql = grant.uc_grant_sql()
7979
if acl_migrate_sql is None:
80-
logger.warning(f"Cannot identify UC grant for {grant.this_type_and_key()}. Skipping.")
80+
logger.warning(
81+
f"Skipping legacy grant that is not supported in UC: {grant.action_type} on {grant.this_type_and_key()}"
82+
)
8183
continue
8284
logger.debug(f"Migrating acls on {grant.this_type_and_key()} using SQL query: {acl_migrate_sql}")
8385
self._backend.execute(acl_migrate_sql)

tests/unit/hive_metastore/test_catalog_schema.py

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ def raise_catalog_exists(catalog: str, *_, **__) -> None:
106106
Grant('user1', 'MODIFY', 'catalog2', 'schema2', 'table'),
107107
Grant('user1', 'SELECT', 'catalog2', 'schema3', 'table2'),
108108
Grant('user1', 'USAGE', 'hive_metastore', 'schema3'),
109-
Grant('user1', 'USAGE', 'hive_metastore', 'schema2'),
109+
Grant('user1', 'DENY', 'hive_metastore', 'schema2'),
110110
]
111111
hive_grants = [
112112
Grant(principal="princ1", catalog="hive_metastore", action_type="USE"),
@@ -244,7 +244,7 @@ def test_no_catalog_storage():
244244
ws.catalogs.create.assert_has_calls(calls, any_order=True)
245245

246246

247-
def test_catalog_schema_acl():
247+
def test_catalog_schema_acl() -> None:
248248
ws = create_autospec(WorkspaceClient)
249249
backend = MockBackend()
250250
mock_prompts = MockPrompts({"Please provide storage location url for catalog: *": ""})
@@ -260,10 +260,7 @@ def test_catalog_schema_acl():
260260
ws.schemas.create.assert_any_call("schema2", "catalog2", comment="Created by UCX")
261261
queries = [
262262
'GRANT USE SCHEMA ON DATABASE `catalog1`.`schema3` TO `user1`',
263-
'GRANT USE SCHEMA ON DATABASE `catalog2`.`schema2` TO `user1`',
264-
'GRANT USE SCHEMA ON DATABASE `catalog2`.`schema3` TO `user1`',
265263
'GRANT USE CATALOG ON CATALOG `catalog1` TO `user1`',
266-
'GRANT USE CATALOG ON CATALOG `catalog2` TO `user1`',
267264
'GRANT USE CATALOG ON CATALOG `catalog1` TO `princ2`',
268265
'GRANT USE SCHEMA ON DATABASE `catalog1`.`schema3` TO `princ2`',
269266
'GRANT USE SCHEMA ON DATABASE `catalog2`.`schema2` TO `princ5`',
@@ -273,3 +270,21 @@ def test_catalog_schema_acl():
273270
assert len(backend.queries) == len(queries)
274271
for query in queries:
275272
assert query in backend.queries
273+
274+
275+
def test_create_all_catalogs_schemas_logs_untranslatable_grant(caplog) -> None:
276+
ws = create_autospec(WorkspaceClient)
277+
backend = MockBackend()
278+
mock_prompts = MockPrompts({"Please provide storage location url for catalog: *": ""})
279+
catalog_schema = prepare_test(ws, backend)
280+
281+
with caplog.at_level(logging.WARNING, logger="databricks.labs.ucx.hive_metastore.catalog_schema"):
282+
catalog_schema.create_all_catalogs_schemas(mock_prompts)
283+
assert "Skipping legacy grant that is not supported in UC: DENY on ('CATALOG', 'catalog2')" in caplog.messages
284+
assert (
285+
"Skipping legacy grant that is not supported in UC: DENY on ('DATABASE', 'catalog2.schema2')" in caplog.messages
286+
)
287+
assert (
288+
"Skipping legacy grant that is not supported in UC: DENY on ('DATABASE', 'catalog2.schema3')" in caplog.messages
289+
)
290+
ws.assert_not_called()

0 commit comments

Comments
 (0)