1
0
mirror of https://github.com/newnius/YAO-docs.git synced 2024-07-06 05:15:18 +00:00
YAO-docs/api.py
2020-07-09 10:12:44 +08:00

114 lines
2.6 KiB
Python

import requests
import time
import os
import json
'''Configuration'''
BASE_URL = 'http://yao.pasalab.jluapp.com'
''''''
sess = requests.Session()
sess.headers.update({'Referer': BASE_URL})
status_map = [
'Created', # 0
'Starting', # 1
'Running', # 2
'Stopped', # 3
'Finished', # 4
'Failed', # 5
]
def login(user='', pwd=''):
# Get CSRF Token
r = sess.get(BASE_URL)
# print(r.content)
# Login
url = BASE_URL + '/service?action=user_login'
r = sess.post(url, data={})
# print(r.content)
return
def get_sys_status():
# Retrieve Status
r = sess.get(BASE_URL + '/service?action=summary_get')
print(r.content)
# b'{"jobs":{"finished":1,"running":0,"pending":0},"gpu":{"free":20,"using":0},"errno":0,"msg":"Success !"}'
# Get pool Util history
r = sess.get(BASE_URL + '/service?action=summary_get_pool_history')
# print(r.content)
return
def submit_job(job):
r = sess.post(BASE_URL + '/service?action=job_submit', data=job)
data = str(r.content, 'utf-8')
msg = json.loads(data)
print(msg)
return msg
def job_list():
print("\nList of jobs:")
r = sess.get(BASE_URL + '/service?action=job_list&who=self&sort=nobody&order=desc&offset=0&limit=10')
data = str(r.content, 'utf-8')
msg = json.loads(data)
if len(msg['jobs']) > 0:
for job in msg['jobs']:
name = job['name']
status = status_map[job['status']]
print("Status of job: {} is {}".format(name, status))
print("\n")
def job_status(job_name):
r = sess.get(BASE_URL + '/service?action=job_status&name=' + job_name)
data = str(r.content, 'utf-8')
msg = json.loads(data)
print("Status of tasks in {}:".format(job_name))
if len(msg['tasks']) > 0:
for task in msg['tasks']:
print("{} ({}) is/was running on {}".format(task['hostname'], task['status'], task['node']))
if __name__ == '__main__':
os.environ["TZ"] = 'Asia/Shanghai'
if hasattr(time, 'tzset'):
time.tzset()
login()
get_sys_status()
tasks = [{
"name": "node1",
"image": "quickdeploy/yao-tensorflow:1.14-gpu",
"cmd": "python /workspace/scripts/tf_cnn_benchmarks/tf_cnn_benchmarks.py \\ --num_gpus=1 \\ --batch_size=32 \\ --model=resnet50 \\ --num_batches=200 \\ --train_dir=/tmp \\ --variable_update=parameter_server",
"cpu_number": "4",
"memory": "4096",
"gpu_number": "1",
"gpu_memory": "8192",
"is_ps": "0",
"gpu_model": "k80",
}]
# print(json.dumps(tasks))
job = {
'name': 'test',
'workspace': 'http://code.pasalab.jluapp.com/newnius/yao-job-benchmarks.git',
'cluster': 'default',
'priority': '25',
'run_before': '',
'locality': '0',
'tasks': json.dumps(tasks),
}
msg = submit_job(job)
if msg['errno'] == 0:
job_status(msg['job_name'])
job_list()