Beispiel #1
0
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})
Beispiel #2
0
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})
Beispiel #3
0
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})
Beispiel #4
0
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})
Beispiel #5
0
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})
Beispiel #6
0
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})
Beispiel #7
0
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})
Beispiel #8
0
def halt_job(request, worker, job):
  add_deps(job, request.body.get('deps', []))
  return success('worker': worker, 'job': job)
Beispiel #9
0
def get_all_jobs(request):
  # TODO(nbharadwaj) implement paging
  limit = int(request.get('limit', 10))
  return success({'jobs': model.Job.query().fetch(limit)})
Beispiel #10
0
def get_job(request, id):
  return success({'job': model.Job.get_by_id_or_abort(id)})
Beispiel #11
0
def delete_all_jobs(request):
  job_keys = model.Job.query().fetch(keys_only=True)
  ndb.delete_multi(job_keys)
  return success()
Beispiel #12
0
def delete_job(request, id):
  job = model.Job.get_by_id_or_abort(id).key.delete()
  return success()
Beispiel #13
0
def get_all(request):
    limit = int(request.get("limit", 10))
    workers = model.Worker.query().fetch(limit)
    return success({"workers": workers})
Beispiel #14
0
def get_all(request):
    limit = int(request.get('limit', 10))
    workers = model.Worker.query().fetch(limit)
    return success({'workers': workers})