mirror of
https://github.com/jupyterhub/jupyterhub.git
synced 2025-10-12 04:23:01 +00:00
define Spawner.delete_forever on base Spawner
instead of on the test class and fix the logic for when it is called a bit: - call on *all* Spawners, not just the default - call on named server deletion when remove=True
This commit is contained in:
@@ -252,6 +252,35 @@ class User:
|
||||
await self.save_auth_state(auth_state)
|
||||
return auth_state
|
||||
|
||||
async def delete_spawners(self):
|
||||
"""Call spawner cleanup methods
|
||||
|
||||
Allows the spawner to cleanup persistent resources
|
||||
"""
|
||||
for name in self.orm_user.orm_spawners.keys():
|
||||
await self._delete_spawner(name)
|
||||
|
||||
async def _delete_spawner(self, name_or_spawner):
|
||||
"""Delete a single spawner"""
|
||||
# always ensure full Spawner
|
||||
# this may instantiate the Spawner if it wasn't already running,
|
||||
# just to delete it
|
||||
if isinstance(name_or_spawner, str):
|
||||
spawner = self.spawners[name_or_spawner]
|
||||
else:
|
||||
spawner = name_or_spawner
|
||||
|
||||
if spawner.active:
|
||||
raise RuntimeError(
|
||||
f"Spawner {spawner._log_name} is active and cannot be deleted."
|
||||
)
|
||||
try:
|
||||
await maybe_future(spawner.delete_forever())
|
||||
except Exception as e:
|
||||
self.log.exception(
|
||||
f"Error cleaning up persistent resources on {spawner._log_name}"
|
||||
)
|
||||
|
||||
def all_spawners(self, include_default=True):
|
||||
"""Generator yielding all my spawners
|
||||
|
||||
|
Reference in New Issue
Block a user