77
88from databricks .sql .backend .databricks_client import DatabricksClient
99from databricks .sql .backend .types import SessionId , CommandId , CommandState , BackendType
10- from databricks .sql .exc import Error , NotSupportedError
10+ from databricks .sql .exc import Error , NotSupportedError , ServerOperationError
1111from databricks .sql .backend .utils .http_client import CustomHttpClient
1212from databricks .sql .thrift_api .TCLIService import ttypes
1313from databricks .sql .types import SSLOptions
1414
15+ from databricks .sql .backend .models import (
16+ CreateSessionRequest ,
17+ DeleteSessionRequest ,
18+ CreateSessionResponse ,
19+ )
20+
1521logger = logging .getLogger (__name__ )
1622
1723
@@ -163,21 +169,27 @@ def open_session(
163169 schema ,
164170 )
165171
166- request_data : Dict [str , Any ] = {"warehouse_id" : self .warehouse_id }
167- if session_configuration :
168- request_data ["session_confs" ] = session_configuration
169- if catalog :
170- request_data ["catalog" ] = catalog
171- if schema :
172- request_data ["schema" ] = schema
172+ request_data = CreateSessionRequest (
173+ warehouse_id = self .warehouse_id ,
174+ session_confs = session_configuration ,
175+ catalog = catalog ,
176+ schema = schema ,
177+ )
173178
174179 response = self .http_client ._make_request (
175- method = "POST" , path = self .SESSION_PATH , data = request_data
180+ method = "POST" , path = self .SESSION_PATH , data = request_data . to_dict ()
176181 )
177182
178- session_id = response .get ("session_id" )
183+ session_response = CreateSessionResponse .from_dict (response )
184+ session_id = session_response .session_id
179185 if not session_id :
180- raise Error ("Failed to create session: No session ID returned" )
186+ raise ServerOperationError (
187+ "Failed to create session: No session ID returned" ,
188+ {
189+ "operation-id" : None ,
190+ "diagnostic-info" : None ,
191+ },
192+ )
181193
182194 return SessionId .from_sea_session_id (session_id )
183195
@@ -199,12 +211,15 @@ def close_session(self, session_id: SessionId) -> None:
199211 raise ValueError ("Not a valid SEA session ID" )
200212 sea_session_id = session_id .to_sea_session_id ()
201213
202- request_data = {"warehouse_id" : self .warehouse_id }
214+ request_data = DeleteSessionRequest (
215+ warehouse_id = self .warehouse_id ,
216+ session_id = sea_session_id ,
217+ )
203218
204219 self .http_client ._make_request (
205220 method = "DELETE" ,
206221 path = self .SESSION_PATH_WITH_ID .format (sea_session_id ),
207- data = request_data ,
222+ data = request_data . to_dict () ,
208223 )
209224
210225 # == Not Implemented Operations ==
0 commit comments