44import webbrowser
55
66from databricks .sdk import WorkspaceClient
7+ from databricks .sdk .errors import NotFound
78
89from databricks .labs .ucx .account import AccountWorkspaces , WorkspaceInfo
910from databricks .labs .ucx .config import AccountConfig , ConnectConfig
@@ -40,6 +41,31 @@ def list_installations():
4041 print (json .dumps (all_users ))
4142
4243
44+ def skip (schema : str , table : str | None = None ):
45+ logger .info ("Running skip command" )
46+ if not schema :
47+ logger .error ("--Schema is a required parameter." )
48+ return None
49+ ws = WorkspaceClient ()
50+ installation_manager = WorkspaceInstaller (ws )
51+ logger .info ("Fetching installation config." )
52+ try :
53+ warehouse_id = installation_manager ._current_config .warehouse_id
54+ sql_backend = StatementExecutionBackend (ws , warehouse_id )
55+ except NotFound :
56+ logger .error (
57+ "Couldn't find UCX configuration in the user's home folder. "
58+ "Make sure the current user has configured and installed UCX."
59+ )
60+ return None
61+
62+ mapping = TableMapping (ws )
63+ if table :
64+ mapping .skip_table (sql_backend , schema , table )
65+ else :
66+ mapping .skip_schema (sql_backend , schema )
67+
68+
4369def sync_workspace_info ():
4470 workspaces = AccountWorkspaces (AccountConfig (connect = ConnectConfig ()))
4571 workspaces .sync_workspace_info ()
@@ -71,6 +97,7 @@ def create_table_mapping():
7197 "sync-workspace-info" : sync_workspace_info ,
7298 "manual-workspace-info" : manual_workspace_info ,
7399 "create-table-mapping" : create_table_mapping ,
100+ "skip" : skip ,
74101}
75102
76103
@@ -86,7 +113,6 @@ def main(raw):
86113 log_level = "info"
87114 databricks_logger = logging .getLogger ("databricks" )
88115 databricks_logger .setLevel (log_level .upper ())
89-
90116 kwargs = {k .replace ("-" , "_" ): v for k , v in flags .items ()}
91117 MAPPING [command ](** kwargs )
92118
0 commit comments