예제 #1
0
def worker_get(name):
    w = request.worker
    data = w.as_json(detailed=True)
    data["version"] = WORKER_SCRIPT_VERSION

    if w.enlisted:
        w.ping(**request.args)

    runners = int(request.args.get("available_runners", "0"))
    if runners > 0 and w.available:
        r = Run.pop_queued(w)
        if r:
            try:
                s = Storage()
                with s.console_logfd(r, "a") as f:
                    f.write("# Run sent to worker: %s\n" % name)
                data["run-defs"] = [_fix_run_urls(s.get_run_definition(r))]
                r.build.refresh_status()
            except Exception:
                r.worker = None
                r.status = "QUEUED"
                db.session.commit()
                raise

    return jsendify({"worker": data})
예제 #2
0
def worker_get(name):
    w = get_or_404(Worker.query.filter_by(name=name))

    data = w.as_json(detailed=True)
    if _is_worker_authenticated(w):
        data['version'] = WORKER_SCRIPT_VERSION

        if w.enlisted:
            w.ping(**request.args)

        runners = int(request.args.get('available_runners', '0'))
        if runners > 0 and w.available:
            r = Run.pop_queued(w)
            if r:
                try:
                    s = Storage()
                    with s.console_logfd(r, 'a') as f:
                        f.write("# Run sent to worker: %s\n" % name)
                    data['run-defs'] = [_fix_run_urls(s.get_run_definition(r))]
                    r.build.refresh_status()
                except:
                    r.worker = None
                    r.status = 'QUEUED'
                    db.session.commit()
                    raise

    return jsendify({'worker': data})