#!/usr/bin/env python # coding: utf-8 # In[35]: get_ipython().run_cell_magic('writefile', 'ci/service-token.yaml', 'hub:\n services:\n testing:\n admin: true\n apiToken: 19e8ed9d96f94d0d8fae16c6af02ee11\n') # In[36]: from ruamel.yaml import YAML yaml = YAML(typ='safe') yaml_file = 'ci/service-token.yaml' with open(yaml_file) as f: config = yaml.load(f) # In[37]: token = config['hub']['services']['testing']['apiToken'] # In[38]: token # Create the user # In[39]: import requests hub_url = 'http://127.0.0.1:8765' # create user headers = {'Authorization': f"token {token}"} username = 'testuser' r = requests.post(hub_url + f'/hub/api/users/{username}', headers=headers) r.raise_for_status() r.json() # Start the server # In[51]: r = requests.post(hub_url + f'/hub/api/users/{username}/server', headers=headers) r.raise_for_status() r.status_code # Wait for the server to start and then access it # In[52]: import time while True: r = requests.get(hub_url + f'/hub/api/users/{username}', headers=headers) r.raise_for_status() user_model = r.json() user_model # will be pending while starting, # server will be set when ready if '' not in user_model['servers']: # spawn failed! raise RuntimeError("Server never started!") print(user_model) server_model = user_model['servers'][''] if server_model['ready']: break print(f"pending {server_model['pending']}") time.sleep(1) print(f"Server running at {server_model['url']}") # Access server # In[53]: r = requests.get(hub_url + server_model['url'] + "api") r.raise_for_status() r.json() # Stop the server # In[54]: r = requests.delete(hub_url + f'/hub/api/users/{username}/server', headers=headers) r.raise_for_status()