checkpoint: named server state

This commit is contained in:
Min RK
2017-06-22 14:59:57 +02:00
parent 5263e4ceae
commit 653a39c05e
4 changed files with 12 additions and 8 deletions

View File

@@ -101,7 +101,8 @@ class APIHandler(BaseHandler):
model['pending'] = 'spawn' model['pending'] = 'spawn'
elif user.spawners['']._stop_pending: elif user.spawners['']._stop_pending:
model['pending'] = 'stop' model['pending'] = 'stop'
# named servers return model
# TODO: named servers
servers = model['servers'] = {} servers = model['servers'] = {}
for name, spawner in user.spawners.items(): for name, spawner in user.spawners.items():
if False and user.running(name): if False and user.running(name):

View File

@@ -405,7 +405,7 @@ def test_spawn(app, io_loop):
data=json.dumps(options), data=json.dumps(options),
) )
assert r.status_code == 201 assert r.status_code == 201
assert 'pid' in user.state assert 'pid' in user.state['']
app_user = get_app_user(app, name) app_user = get_app_user(app, name)
assert app_user.spawner is not None assert app_user.spawner is not None
assert app_user.spawner.user_options == options assert app_user.spawner.user_options == options
@@ -434,7 +434,7 @@ def test_spawn(app, io_loop):
r = api_request(app, 'users', name, 'server', method='delete') r = api_request(app, 'users', name, 'server', method='delete')
assert r.status_code == 204 assert r.status_code == 204
assert 'pid' not in user.state assert 'pid' not in user.state.get('', {})
status = io_loop.run_sync(app_user.spawner.poll) status = io_loop.run_sync(app_user.spawner.poll)
assert status == 0 assert status == 0
@@ -473,7 +473,7 @@ def test_slow_spawn(app, io_loop, no_patience, request):
@gen.coroutine @gen.coroutine
def wait_stop(): def wait_stop():
while app_user.pawner._stop_pending: while app_user.spawner._stop_pending:
yield gen.sleep(0.1) yield gen.sleep(0.1)
r = api_request(app, 'users', name, 'server', method='delete') r = api_request(app, 'users', name, 'server', method='delete')
@@ -532,7 +532,7 @@ def test_cookie(app):
user = add_user(db, app=app, name=name) user = add_user(db, app=app, name=name)
r = api_request(app, 'users', name, 'server', method='post') r = api_request(app, 'users', name, 'server', method='post')
assert r.status_code == 201 assert r.status_code == 201
assert 'pid' in user.state assert 'pid' in user.state['']
app_user = get_app_user(app, name) app_user = get_app_user(app, name)
cookies = app.login_user(name) cookies = app.login_user(name)

View File

@@ -153,8 +153,10 @@ def test_spawner_poll(db, io_loop):
proc = first_spawner.proc proc = first_spawner.proc
status = io_loop.run_sync(first_spawner.poll) status = io_loop.run_sync(first_spawner.poll)
assert status is None assert status is None
user.state = first_spawner.get_state() if user.state is None:
assert 'pid' in user.state user.state = {}
user.state[''] = first_spawner.get_state()
assert 'pid' in user.state['']
# create a new Spawner, loading from state of previous # create a new Spawner, loading from state of previous
spawner = new_spawner(db, user=first_spawner.user) spawner = new_spawner(db, user=first_spawner.user)

View File

@@ -391,6 +391,7 @@ class User(HasTraits):
self.state = spawner.get_state() self.state = spawner.get_state()
self.last_activity = datetime.utcnow() self.last_activity = datetime.utcnow()
# remove server entry from db # remove server entry from db
if spawner.server is not None:
self.db.delete(spawner.server.orm_server) self.db.delete(spawner.server.orm_server)
spawner.server = None spawner.server = None
if not spawner.will_resume: if not spawner.will_resume: