Skip to content

Commit b32d885

Browse files
authored
Fixed the issue of databricks labs ucx installations and databricks labs ucx manual-workspace-info. (#814)
1 parent c9ee832 commit b32d885

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

src/databricks/labs/ucx/installer/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from databricks.sdk import WorkspaceClient
99
from databricks.sdk.errors import NotFound
1010
from databricks.sdk.service.iam import User
11+
from yaml import YAMLError
1112

1213
from databricks.labs.ucx.config import WorkspaceConfig
1314

@@ -47,6 +48,9 @@ def for_user(self, user: User) -> Installation:
4748
except TypeError:
4849
msg = f"Installation is corrupt for {user.user_name}"
4950
raise IllegalState(msg) from None
51+
except YAMLError:
52+
msg = f"Config file {config_file} is corrupted, check if it is in correct yaml format"
53+
raise IllegalState(msg) from None
5054

5155
def _maybe_for_user(self, user: User) -> Installation | None:
5256
try:

tests/unit/installer/test_installation_manager.py

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
import io
2-
from unittest.mock import MagicMock
2+
from unittest.mock import MagicMock, create_autospec
33

44
import pytest
5+
from databricks.labs.blueprint.installer import IllegalState
56
from databricks.labs.blueprint.parallel import ManyError
7+
from databricks.sdk import WorkspaceClient
68
from databricks.sdk.errors import NotFound
79
from databricks.sdk.service.iam import ComplexValue, User
810
from databricks.sdk.service.jobs import (
@@ -63,6 +65,26 @@ def test_corrupt_config(mocker):
6365
assert len(user_installations) == 0
6466

6567

68+
def test_for_user_corrupt_config_yaml(mocker):
69+
ws = create_autospec(WorkspaceClient)
70+
user = User(user_name="foo")
71+
ws.users.list.return_value = [user]
72+
ws.workspace.download.return_value = io.StringIO("version: 2\ntacl: extra colon: test")
73+
installation_manager = InstallationManager(ws)
74+
with pytest.raises(IllegalState):
75+
installation_manager.for_user(user)
76+
77+
78+
def test_user_installations_corrupt_config_yaml(mocker):
79+
ws = create_autospec(WorkspaceClient)
80+
user = User(user_name="foo")
81+
ws.users.list.return_value = [user]
82+
ws.workspace.download.return_value = io.StringIO("version: 2\ntacl: extra colon: test")
83+
installation_manager = InstallationManager(ws)
84+
user_installations = installation_manager.user_installations()
85+
assert len(user_installations) == 0
86+
87+
6688
def test_validate_assessment(mocker):
6789
ws = mocker.patch("databricks.sdk.WorkspaceClient.__init__")
6890
current_user = MagicMock()

0 commit comments

Comments
 (0)