|
1 |
| -import datetime as dt |
2 | 1 | import logging
|
3 | 2 |
|
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 |
9 | 5 |
|
10 | 6 |
|
11 | 7 | logger = logging.getLogger(__name__)
|
12 | 8 |
|
13 | 9 |
|
14 | 10 | 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.""" |
19 | 12 |
|
20 | 13 | _SCHEMA = "history"
|
21 | 14 |
|
22 | 15 | 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) |
25 | 18 |
|
26 | 19 | def run(self) -> None:
|
27 |
| - self._create_schema() |
| 20 | + self._schema_deployer.deploy_schema() |
28 | 21 | 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) |
0 commit comments