forked from mohanab89/databricks-migrator-with-llm
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp_deployer.py
More file actions
58 lines (45 loc) · 1.71 KB
/
app_deployer.py
File metadata and controls
58 lines (45 loc) · 1.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# Databricks notebook source
# MAGIC %pip install databricks-sdk==0.61.0
# MAGIC %restart_python
# COMMAND ----------
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.apps import App, AppDeployment
from databricks.sdk.service.workspace import WorkspaceObjectAccessControlRequest, WorkspaceObjectPermissionLevel
w = WorkspaceClient()
# COMMAND ----------
name = 'databricks-migrator'
description = 'An application for converting legacy SQL to Databricks SQL using LLM.'
notebook_path = dbutils.notebook.entry_point.getDbutils().notebook().getContext().notebookPath().getOrElse(None)
default_source_code_path = '/Workspace' + notebook_path.rsplit('/', 1)[0] if notebook_path else None
app = w.apps.create_and_wait(
app=App(
name=name,
description=description,
default_source_code_path=default_source_code_path,
)
)
print(app)
# COMMAND ----------
app_deployment = w.apps.deploy_and_wait(
app_name=name,
app_deployment=AppDeployment(
source_code_path=default_source_code_path
)
)
print(app_deployment)
# COMMAND ----------
obj_info = w.workspace.get_status(default_source_code_path)
update_permissions = w.workspace.update_permissions(
workspace_object_type='directories',
workspace_object_id=obj_info.object_id,
access_control_list=[
WorkspaceObjectAccessControlRequest(
service_principal_name=app.service_principal_client_id,
permission_level=WorkspaceObjectPermissionLevel.CAN_READ
)
]
)
print(update_permissions)
# COMMAND ----------
print(f'Application deployed successfully. URL: {app.url}')
print(f'Service principal of the app: Name - {app.service_principal_name}, ID - {app.service_principal_client_id}')