Skip to content

Commit 30e3ee4

Browse files
committed
Use SchemaDeployer to deploy schema
1 parent 08fb5ed commit 30e3ee4

File tree

2 files changed

+7
-26
lines changed

2 files changed

+7
-26
lines changed
Lines changed: 6 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,21 @@
1-
import datetime as dt
21
import logging
32

4-
from databricks.labs.lsql.backends import Dataclass, SqlBackend
5-
from databricks.sdk.errors import InternalError
6-
from databricks.sdk.retries import retried
7-
8-
from databricks.labs.ucx.framework.utils import escape_sql_identifier
3+
from databricks.labs.lsql.backends import SqlBackend
4+
from databricks.labs.lsql.deployment import SchemaDeployer
95

106

117
logger = logging.getLogger(__name__)
128

139

1410
class HistoryInstallation:
15-
"""Install resources for UCX's artifacts history.
16-
17-
`InternalError` are retried on create statements for resilience on sporadic Databricks issues.
18-
"""
11+
"""Install resources for UCX's artifacts history."""
1912

2013
_SCHEMA = "history"
2114

2215
def __init__(self, sql_backend: SqlBackend, ucx_catalog: str) -> None:
23-
self._backend = sql_backend
24-
self._ucx_catalog = ucx_catalog
16+
# `mod` is required parameter, but it's not used in this context.
17+
self._schema_deployer = SchemaDeployer(sql_backend, self._SCHEMA, mod=None, catalog=ucx_catalog)
2518

2619
def run(self) -> None:
27-
self._create_schema()
20+
self._schema_deployer.deploy_schema()
2821
logger.info("Installation completed successfully!")
29-
30-
@retried(on=[InternalError], timeout=dt.timedelta(minutes=1))
31-
def _create_schema(self) -> None:
32-
schema = f"{self._ucx_catalog}.{self._SCHEMA}"
33-
logger.info(f"Creating {schema} database...")
34-
self._backend.execute(f"CREATE SCHEMA IF NOT EXISTS {escape_sql_identifier(schema, maxsplit=1)}")
35-
36-
@retried(on=[InternalError], timeout=dt.timedelta(minutes=1))
37-
def _create_table(self, name: str, klass: Dataclass) -> None:
38-
full_name = f"{self._ucx_catalog}.{self._SCHEMA}.{name}"
39-
logger.info(f"Create {full_name} table ...")
40-
self._backend.create_table(escape_sql_identifier(full_name), klass)

tests/unit/progress/test_install.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@
44
def test_history_installation_run_creates_history_schema(mock_backend) -> None:
55
installation = HistoryInstallation(mock_backend, "ucx")
66
installation.run()
7-
assert mock_backend.queries[0] == "CREATE SCHEMA IF NOT EXISTS `ucx`.`history`"
7+
assert mock_backend.queries[0] == "CREATE SCHEMA IF NOT EXISTS ucx.history"

0 commit comments

Comments
 (0)