Skip to content

Commit a355221

Browse files
authored
Handle PermissionDenied when retrieving WorkspaceClients from account (#2877)
## Changes Handle `PermissionDenied` when retrieving `WorkspaceClient`s from account ### Linked issues Resolves #2874 ### Functionality - [x] modified existing command: `databricks labs ucx sync-workspace-info` ### Tests - [x] added unit tests
1 parent f5d8098 commit a355221

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

src/databricks/labs/ucx/account/workspaces.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,12 @@ def workspace_clients(self, workspaces: list[Workspace] | None = None) -> list[W
5151
workspaces = self.get_accessible_workspaces()
5252
clients = []
5353
for workspace in workspaces:
54-
ws = self.client_for(workspace)
55-
clients.append(ws)
54+
try:
55+
ws = self.client_for(workspace)
56+
except PermissionDenied as e:
57+
logger.warning(f"Cannot get a workspace client for: {workspace.deployment_name}", exc_info=e)
58+
else:
59+
clients.append(ws)
5660
return clients
5761

5862
def sync_workspace_info(self, workspaces: list[Workspace] | None = None):

tests/unit/account/test_workspaces.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -549,3 +549,18 @@ def test_account_workspaces_can_administer_handles_permission_denied_error_for_c
549549
can_administer = account_workspaces.can_administer(workspace)
550550
assert not can_administer
551551
assert "User cannot access workspace: test" in caplog.messages
552+
553+
554+
def test_account_workspaces_workspace_clients_handles_permission_denied(caplog) -> None:
555+
acc = create_autospec(AccountClient)
556+
acc.get_workspace_client.side_effect = PermissionDenied
557+
account_workspaces = AccountWorkspaces(acc)
558+
559+
try:
560+
with caplog.at_level(logging.WARNING, logger="databricks.labs.ucx.account.workspaces"):
561+
clients = account_workspaces.workspace_clients([Workspace(deployment_name="test")])
562+
except PermissionDenied:
563+
assert False, "Workspace clients does not handle `PermissionDenied`"
564+
else:
565+
assert len(clients) == 0
566+
assert "Cannot get a workspace client for: test" in caplog.messages

0 commit comments

Comments
 (0)