diff --git a/jupyterhub/apihandlers/base.py b/jupyterhub/apihandlers/base.py index d792d542..46394758 100644 --- a/jupyterhub/apihandlers/base.py +++ b/jupyterhub/apihandlers/base.py @@ -243,7 +243,10 @@ class APIHandler(BaseHandler): # (this includes pending events) if spawner.active and scope_filter(spawner, kind='server'): servers[name] = self.server_model(spawner) - if not servers: + if not servers and 'servers' not in allowed_keys: + # omit servers if no access + # leave present and empty + # if request has access to read servers in general model.pop('servers') return model diff --git a/jupyterhub/tests/test_api.py b/jupyterhub/tests/test_api.py index 31e912a6..104655ad 100644 --- a/jupyterhub/tests/test_api.py +++ b/jupyterhub/tests/test_api.py @@ -154,11 +154,10 @@ def fill_user(model): model.setdefault('roles', []) model.setdefault('groups', []) model.setdefault('admin', False) - model.setdefault('server', None) model.setdefault('pending', None) model.setdefault('created', TIMESTAMP) model.setdefault('last_activity', TIMESTAMP) - # model.setdefault('servers', {}) + model.setdefault('servers', {}) return model