add some re-usable APIs

define some pending/ready helpers as static constants on orm.Spawner

allows treating orm.Spawner the same as Spawner wrappers,
as long as `.active` etc. checks are performed first
This commit is contained in:
Min RK
2018-09-17 16:45:19 +02:00
parent cbe4095533
commit 9031b9aa57
3 changed files with 41 additions and 0 deletions

View File

@@ -182,6 +182,26 @@ class User:
await self.save_auth_state(auth_state)
return auth_state
def all_spawners(self, include_default=True):
"""Generator yielding all my spawners
including those that are not running.
Spawners that aren't running will be low-level orm.Spawner objects,
while those that are will be higher-level Spawner wrapper objects.
"""
for name, orm_spawner in sorted(self.orm_user.orm_spawners.items()):
if name == '' and not include_default:
continue
if name in self.spawners:
# yield wrapper if it exists
yield self.spawners[name]
else:
# otherwise, yield low-level object
yield orm_spawner
def _new_spawner(self, server_name, spawner_class=None, **kwargs):
"""Create a new spawner"""
if spawner_class is None:
@@ -321,6 +341,13 @@ class User:
else:
return self.base_url
def server_url(self, server_name=''):
"""Get the url for a server with a given name"""
if not server_name:
return self.url
else:
return url_path_join(self.url, server_name)
def progress_url(self, server_name=''):
"""API URL for progress endpoint for a server with a given name"""
url_parts = [self.settings['hub'].base_url, 'api/users', self.escaped_name]