@@ -80,8 +80,10 @@ def fields(x: Any) -> Any:
80
80
81
81
class ShowWorkspacesHandler (SQLHandler ):
82
82
"""
83
- SHOW WORKSPACES IN GROUP { group_id | group_name }
84
- [ <like> ] [ <extended> ] [ <order-by> ] [ <limit> ];
83
+ SHOW WORKSPACES [ in_group ] [ <like> ] [ <extended> ] [ <order-by> ] [ <limit> ];
84
+
85
+ # Workspace group
86
+ in_group = IN GROUP { group_id | group_name }
85
87
86
88
# ID of group
87
89
group_id = ID '<group-id>'
@@ -198,10 +200,12 @@ def run(self, params: Dict[str, Any]) -> Optional[FusionSQLResult]:
198
200
199
201
class CreateWorkspaceHandler (SQLHandler ):
200
202
"""
201
- CREATE WORKSPACE [ if_not_exists ] workspace_name
202
- IN GROUP { group_id | group_name }
203
+ CREATE WORKSPACE [ if_not_exists ] workspace_name [ in_group ]
203
204
WITH SIZE size [ wait_on_active ];
204
205
206
+ # Create workspace in workspace group
207
+ in_group = IN GROUP { group_id | group_name }
208
+
205
209
# Only run command if workspace doesn't already exist
206
210
if_not_exists = IF NOT EXISTS
207
211
@@ -264,15 +268,15 @@ class DropWorkspaceGroupHandler(SQLHandler):
264
268
"""
265
269
266
270
def run (self , params : Dict [str , Any ]) -> Optional [FusionSQLResult ]:
267
- manager = get_workspace_manager ()
268
-
269
271
try :
270
- name_or_id = params ['group_name' ] or params ['group_id' ]
271
- wg = manager .workspace_groups [name_or_id ]
272
- wg .terminate (wait_on_terminated = params ['wait_on_terminated' ])
272
+ workspace_group = get_workspace_group (params )
273
+ if workspace_group .terminated_at is not None :
274
+ raise KeyError
275
+ workspace_group .terminate (wait_on_terminated = params ['wait_on_terminated' ])
273
276
274
277
except KeyError :
275
278
if not params ['if_exists' ]:
279
+ name_or_id = params ['group_id' ] or params ['group_name' ]
276
280
raise KeyError (f"could not find workspace group '{ name_or_id } '" )
277
281
278
282
return None
@@ -284,7 +288,10 @@ def run(self, params: Dict[str, Any]) -> Optional[FusionSQLResult]:
284
288
class DropWorkspaceHandler (SQLHandler ):
285
289
"""
286
290
DROP WORKSPACE [ if_exists ] { workspace_id | workspace_name }
287
- IN GROUP { group_id | group_name } [ wait_on_terminated ];
291
+ [ in_group ] [ wait_on_terminated ];
292
+
293
+ # Workspace group
294
+ in_group = IN GROUP { group_id | group_name }
288
295
289
296
# Only drop workspace if it exists
290
297
if_exists = IF EXISTS
@@ -307,16 +314,15 @@ class DropWorkspaceHandler(SQLHandler):
307
314
"""
308
315
309
316
def run (self , params : Dict [str , Any ]) -> Optional [FusionSQLResult ]:
310
- manager = get_workspace_manager ()
311
-
312
317
try :
318
+ workspace_group = get_workspace_group (params )
313
319
workspace_name_or_id = params ['workspace_name' ] or params ['workspace_id' ]
314
- group_name_or_id = params ['group_name' ] or params ['group_id' ]
315
- wg = manager .workspace_groups [group_name_or_id ]
316
- ws = wg .workspaces [workspace_name_or_id ]
320
+ ws = workspace_group .workspaces [workspace_name_or_id ]
317
321
ws .terminate (wait_on_terminated = params ['wait_on_terminated' ])
318
322
319
323
except KeyError :
324
+ group_name_or_id = params ['in_group' ].get ('group_id' , None ) or \
325
+ params ['in_group' ].get ('group_name' , None )
320
326
if not params ['if_exists' ]:
321
327
raise KeyError (
322
328
f"could not find workspace '{ workspace_name_or_id } ' "
0 commit comments