in support/retro_contest/rest.py [0:0]
def submit_args(args, server, cookies):
r = requests.get(server + '/rest/user', cookies=cookies)
if r.status_code != 200 or 'cr' not in r.json():
print('Failed to obtain container registry')
cr = r.json()['cr']
client = docker.APIClient()
cr['registry'] = cr['url']
del cr['url']
tag = args.tag or 'agent:latest'
try:
client.tag(tag, cr['registry'] + '/' + tag)
except requests.exceptions.HTTPError:
print('Could not find local tag')
return False
print('Pushing container...')
size = {}
for line in client.push(cr['registry'] + '/' + tag, stream=True, auth_config=cr):
for line in line.split(b'\r\n'):
if not line:
continue
line = json.loads(line)
if 'status' not in line:
continue
if line['status'] == 'Pushing':
size[line['id']] = int(line['progressDetail']['current']), int(line['progressDetail']['total'])
elif line['status'] == 'Pushed':
size[line['id']] = size[line['id']][1], size[line['id']][1]
current, total = 0, 0
for c, t in size.values():
current += c
total += t
if total > 0:
print('\u001B[2K\r%i%%' % (100 * current / total), end='', flush=True)
print('\u001B[2K\rPushed, submitting job')
r = requests.post(server + '/rest/job/start', json={'tag': tag}, cookies=cookies)
if r.status_code // 100 == 2:
print('Done')
else:
print('Error %i occurred' % r.status_code)
return False
return True