예제 #1
0
def kill_job(request, jobid):
  """
  We get here from /jobs/jobid/kill
  """
  if request.method != "POST":
    raise Exception(_("kill_job may only be invoked with a POST (got a %(method)s)") % dict(method=request.method))
  job = Job.from_id(jt=request.jt, jobid=jobid)
  if job.user != request.user.username and not request.user.is_superuser:
    access_warn(request, _('Insufficient permission'))
    raise MessageException(_("Permission denied.  User %(username)s cannot delete user %(user)s's job.") %
                           dict(username=request.user.username, user=job.user))

  job.kill()
  cur_time = time.time()
  while time.time() - cur_time < 15:
    job = Job.from_id(jt=request.jt, jobid=jobid)

    if job.status not in ["RUNNING", "QUEUED"]:
      if request.REQUEST.get("next"):
        return HttpResponseRedirect(request.REQUEST.get("next"))
      else:
        raise MessageException("Job Killed")
    time.sleep(1)
    job = Job.from_id(jt=request.jt, jobid=jobid)

  raise Exception(_("Job did not appear as killed within 15 seconds"))
예제 #2
0
def kill_job(request, job):
    if request.method != "POST":
        raise Exception(
            _("kill_job may only be invoked with a POST (got a %(method)s).") %
            dict(method=request.method))

    if job.user != request.user.username and not request.user.is_superuser:
        access_warn(request, _('Insufficient permission'))
        raise MessageException(
            _("Permission denied.  User %(username)s cannot delete user %(user)s's job."
              ) % dict(username=request.user.username, user=job.user))

    job.kill()
    cur_time = time.time()
    while time.time() - cur_time < 15:
        job = Job.from_id(jt=request.jt, jobid=job.jobId)

        if job.status not in ["RUNNING", "QUEUED"]:
            if request.REQUEST.get("next"):
                return HttpResponseRedirect(request.REQUEST.get("next"))
            else:
                raise MessageException("Job Killed")
        time.sleep(1)
        job = Job.from_id(jt=request.jt, jobid=job.jobId)

    raise Exception(_("Job did not appear as killed within 15 seconds"))
예제 #3
0
파일: views.py 프로젝트: chiehwen/hue
def kill_job(request, job):
  if request.method != "POST":
    raise Exception(_("kill_job may only be invoked with a POST (got a %(method)s).") % dict(method=request.method))

  if job.user != request.user.username and not request.user.is_superuser:
    access_warn(request, _('Insufficient permission'))
    raise MessageException(_("Permission denied.  User %(username)s cannot delete user %(user)s's job.") %
                           dict(username=request.user.username, user=job.user))

  job.kill()
  cur_time = time.time()
  while time.time() - cur_time < 15:
    job = Job.from_id(jt=request.jt, jobid=job.jobId)

    if job.status not in ["RUNNING", "QUEUED"]:
      if request.REQUEST.get("next"):
        return HttpResponseRedirect(request.REQUEST.get("next"))
      elif request.REQUEST.get("format") == "json":
        return HttpResponse(encode_json_for_js({'status': 0}), mimetype="application/json")
      else:
        raise MessageException("Job Killed")
    time.sleep(1)
    job = Job.from_id(jt=request.jt, jobid=job.jobId)

  raise Exception(_("Job did not appear as killed within 15 seconds."))
예제 #4
0
def job_single_logs(request, jobid):
  """
  We get here from /jobs/jobid/logs
  """
  job = Job.from_id(jt=request.jt, jobid=jobid)

  def cmp_exec_time(task1, task2):
    return cmp(task1.execStartTimeMs, task2.execStartTimeMs)

  task = None

  failed_tasks = job.filter_tasks(task_states=('failed',))
  failed_tasks.sort(cmp_exec_time)
  if failed_tasks:
    task = failed_tasks[0]
  else:
    recent_tasks = job.filter_tasks(task_states=('running', 'succeeded',), task_types=('map', 'reduce',))
    recent_tasks.sort(cmp_exec_time, reverse=True)
    if recent_tasks:
      task = recent_tasks[0]

  if task is None:
    raise PopupException(_("No tasks found for job %(id)s") % dict(id=jobid))

  return single_task_attempt_logs(request, **{'jobid': jobid, 'taskid': task.taskId, 'attemptid': task.taskAttemptIds[-1]})
예제 #5
0
 def decorate(request, *args, **kwargs):
   jobid = kwargs['jobid']
   job = Job.from_id(jt=request.jt, jobid=jobid)
   if not conf.SHARE_JOBS.get() and not request.user.is_superuser \
     and job.user != request.user.username:
     raise PopupException(_("You don't have the permissions to access"
                            " job %(id)s") % dict(id=jobid))
   return view_func(request, *args, **kwargs)
예제 #6
0
 def decorate(request, *args, **kwargs):
     jobid = kwargs['jobid']
     job = Job.from_id(jt=request.jt, jobid=jobid)
     if not conf.SHARE_JOBS.get() and not request.user.is_superuser \
       and job.user != request.user.username:
         raise PopupException(
             _("You don't have the permissions to access"
               " job %(id)s.") % dict(id=jobid))
     return view_func(request, *args, **kwargs)
예제 #7
0
파일: views.py 프로젝트: anutron/hue
def kill_job(request, jobid):
  """
  We get here from /jobs/jobid/kill
  """
  if request.method != "POST":
    raise Exception("kill_job may only be invoked with a POST (got a %s)" % request.method)
  job = Job.from_id(jt=request.jt, jobid=jobid)
  if job.user != request.user.username and not request.user.is_superuser:
    access_warn(request, 'Insufficient permission')
    raise MessageException("Permission denied.  User %s cannot delete user %s's job." %
                           (request.user.username, job.profile.user))

  job.kill()
  cur_time = time.time()
  while time.time() - cur_time < 15:
    job = Job.from_id(jt=request.jt, jobid=jobid)

    if job.status not in ["RUNNING", "QUEUED"]:
      return render_json({})
    time.sleep(1)
    job = Job.from_id(jt=request.jt, jobid=jobid)

  raise Exception("Job did not appear as killed within 15 seconds")
예제 #8
0
파일: views.py 프로젝트: shreepadma/hue
def single_job(request, jobid):
    """
  We get here from /jobs/jobid
  """
    job = Job.from_id(jt=request.jt, jobid=jobid)

    def cmp_exec_time(task1, task2):
        return cmp(task1.execStartTimeMs, task2.execStartTimeMs)

    failed_tasks = job.filter_tasks(task_states=("failed",))
    failed_tasks.sort(cmp_exec_time)
    recent_tasks = job.filter_tasks(task_states=("running", "succeeded"))
    recent_tasks.sort(cmp_exec_time, reverse=True)

    return render(
        "job.mako",
        request,
        {"request": request, "job": job, "failed_tasks": failed_tasks[:5], "recent_tasks": recent_tasks[:5]},
    )
예제 #9
0
def single_job(request, jobid):
  """
  We get here from /jobs/jobid
  """
  job = Job.from_id(jt=request.jt, jobid=jobid)

  def cmp_exec_time(task1, task2):
    return cmp(task1.execStartTimeMs, task2.execStartTimeMs)

  failed_tasks = job.filter_tasks(task_states=('failed',))
  failed_tasks.sort(cmp_exec_time)
  recent_tasks = job.filter_tasks(task_states=('running', 'succeeded',))
  recent_tasks.sort(cmp_exec_time, reverse=True)

  return render("job.mako", request, {
    'request': request,
    'job': job,
    'failed_tasks': failed_tasks[:5],
    'recent_tasks': recent_tasks[:5]
  })
예제 #10
0
def single_job(request, jobid):
    """
  We get here from /jobs/jobid
  """
    job = Job.from_id(jt=request.jt, jobid=jobid)

    def cmp_exec_time(foo, bar):
        return cmp(foo.execStartTimeMs, bar.execStartTimeMs)

    failed_tasks = job.filter_tasks(task_states=set(['failed']))
    failed_tasks.sort(cmp_exec_time)
    recent_tasks = job.filter_tasks(task_states=set(['running', 'succeeded']))
    recent_tasks.sort(cmp_exec_time, reverse=True)

    return render(
        "job.mako", request, {
            'request': request,
            'job': job,
            'failed_tasks': failed_tasks[:5],
            'recent_tasks': recent_tasks[:5]
        })
예제 #11
0
def job_single_logs(request, jobid):
    """
  We get here from /jobs/jobid/logs
  """
    job = Job.from_id(jt=request.jt, jobid=jobid)

    def cmp_exec_time(task1, task2):
        return cmp(task1.execStartTimeMs, task2.execStartTimeMs)

    task = None

    failed_tasks = job.filter_tasks(task_states=('failed', ))
    failed_tasks.sort(cmp_exec_time)
    if failed_tasks:
        task = failed_tasks[0]
    else:
        recent_tasks = job.filter_tasks(task_states=(
            'running',
            'succeeded',
        ),
                                        task_types=(
                                            'map',
                                            'reduce',
                                        ))
        recent_tasks.sort(cmp_exec_time, reverse=True)
        if recent_tasks:
            task = recent_tasks[0]

    if task is None:
        raise PopupException(
            _("No tasks found for job %(id)s") % dict(id=jobid))

    return single_task_attempt_logs(
        request, **{
            'jobid': jobid,
            'taskid': task.taskId,
            'attemptid': task.taskAttemptIds[-1]
        })
예제 #12
0
def job_counters(request, jobid):
  """
  We get here from /jobs/jobid/counters
  """
  job = Job.from_id(jt=request.jt, jobid=jobid)
  return render("counters.html", request, {"counters":job.counters})
예제 #13
0
def get_single_job(request, jobid):
  """
  Returns the job which matches jobid.
  """
  return Job.from_id(jt=request.jt, jobid=jobid)
예제 #14
0
def job_counters(request, jobid):
    """
  We get here from /jobs/jobid/counters
  """
    job = Job.from_id(jt=request.jt, jobid=jobid)
    return render("counters.html", request, {"counters": job.counters})
예제 #15
0
파일: api.py 프로젝트: Andrea1988/hue
 def get_job(self, jobid):
   return Job.from_id(jt=self.jt, jobid=jobid)
예제 #16
0
def get_single_job(request, jobid):
    """
  Returns the job which matches jobid.
  """
    return Job.from_id(jt=request.jt, jobid=jobid)
예제 #17
0
 def get_job(self, jobid):
     return Job.from_id(jt=self.jt, jobid=jobid)