def heartbeat(request, id): worker = request.auth.require_entity(Worker) if worker.key.id() != id: return failure("Requested worker not authenticated") worker.put() return success({"worker": worker})
def heartbeat(request, id): worker = request.auth.require_entity(Worker) if worker.key.id() != id: return failure('Requested worker not authenticated') worker.put() return success({'worker': worker})
def fail_job(request, worker, job): job.log_path = request.body.get('log_path', None) job.state = JobState.FAILED job.put() worker.job = None worker.put() return success({'worker': worker, 'job': job})
def complete_job(request, worker, job): job.result_hash = request.body.get('result_hash', None) job.log_path = request.body.get('log_path', None) job.state = JobState.COMPLETE job.put() worker.job = None worker.put() return success({'worker': worker, 'job': job})
def acquire_job(request, id): worker = request.auth.require_entity(Worker) if worker.key.id() != id: return failure("Requested worker not authenticated") if worker.job is not None: return failure('Worker "%s" already owns job' % id) job = dequeue_job() if job is None: return failure("No job available") worker.job = job.key.id() worker.put() return success({"worker": worker, "job": job})
def acquire_job(request, id): worker = request.auth.require_entity(Worker) if worker.key.id() != id: return failure('Requested worker not authenticated') if worker.job is not None: return failure('Worker "%s" already owns job' % id) job = dequeue_job() if job is None: return failure('No job available') worker.job = job.key.id() worker.put() return success({'worker': worker, 'job': job})
def add_job(request): if ('name' not in request.body or 'binary' not in request.body): return failure('Job body incomplete; name and binary fields required') name = request.body['name'] binary = request.body['binary'] params = request.body.get('param', []) id_prehash = str(( ('binary', binary), ('params', tuple(params)) )) m = hashlib.md5() m.update(id_prehash) id = m.hexdigest() job = model.Job(id=id) job.name = name job.binary = binary job.params = params job.put() return success({'job': job})
def halt_job(request, worker, job): add_deps(job, request.body.get('deps', [])) return success('worker': worker, 'job': job)
def get_all_jobs(request): # TODO(nbharadwaj) implement paging limit = int(request.get('limit', 10)) return success({'jobs': model.Job.query().fetch(limit)})
def get_job(request, id): return success({'job': model.Job.get_by_id_or_abort(id)})
def delete_all_jobs(request): job_keys = model.Job.query().fetch(keys_only=True) ndb.delete_multi(job_keys) return success()
def delete_job(request, id): job = model.Job.get_by_id_or_abort(id).key.delete() return success()
def get_all(request): limit = int(request.get("limit", 10)) workers = model.Worker.query().fetch(limit) return success({"workers": workers})
def get_all(request): limit = int(request.get('limit', 10)) workers = model.Worker.query().fetch(limit) return success({'workers': workers})