def submit_args()

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