Esempio n. 1
0
def start_job(request):
    if "autosave" in request.session:
        del request.session['autosave']
    t = Templeton(request.user.username)
    statusdir = "/tmp/.pigjobs/%s/%s_%s" % (
        request.user.username, request.POST['title'].lower().replace(
            " ", "_"), datetime.now().strftime("%s"))
    script_file = statusdir + "/script.pig"
    pig_script = request.POST['pig_script']
    pig_script = process_pig_script(pig_script, request, statusdir)
    _do_newfile_save(request.fs, script_file, pig_script, "utf-8")
    args = filter(bool, request.POST.getlist("pigParams"))
    job_type = Job.EXECUTE
    execute = None
    if request.POST.get("explain"):
        execute = "explain -script %s" % (request.fs.fs_defaultfs +
                                          script_file)
        job_type = Job.EXPLAINE
        script_file = None
    if request.POST.get("syntax_check"):
        args.append("-check")
        job_type = Job.SYNTAX_CHECK
    callback = request.build_absolute_uri("/pig/notify/$jobId/")
    LOG.debug(
        "User %s started pig job via webhcat: curl -s -d file=%s -d statusdir=%s -d callback=%s %s"
        % (request.user.username, script_file, statusdir, callback, "".join(
            ["-d arg=%s " % a for a in args])))
    job = t.pig_query(pig_file=script_file,
                      execute=execute,
                      statusdir=statusdir,
                      callback=callback,
                      arg=args)

    if request.POST.get("script_id"):
        script = PigScript.objects.get(pk=request.POST['script_id'])
    else:
        script = PigScript(user=request.user,
                           saved=False,
                           title=request.POST['title'])
    script.pig_script = request.POST['pig_script']
    script.python_script = request.POST['python_script']
    script.arguments = "\t".join(args)
    script.save()
    Job.objects.create(user=script.user,
                       job_id=job['id'],
                       statusdir=statusdir,
                       script_title=script.title,
                       job_type=job_type,
                       email_notification=bool(request.POST.get('email')))
    return HttpResponse(
        json.dumps({
            "job_id":
            job['id'],
            "text":
            "The Job <a href='%s' target='_blank'>%s</a> has been started successfully. <br>\
                You can always go back to <a href='%s'>Query History</a> for results after the run."
            % (reverse("single_job",
                       args=[job['id']]), job['id'], reverse("query_history"))
        }))
Esempio n. 2
0
def kill_job(request):
    t = Templeton(request.user.username)
    try:
        job_id = request.POST['job_id']
        t.kill_job(job_id)
        Job.objects.get(job_id=request.POST['job_id']).delete()
        return HttpResponse(json.dumps({"text": "Job %s was killed" % job_id}))
    except:
        return HttpResponse(json.dumps({"text": "An error was occured"}))
Esempio n. 3
0
def kill_job(request):
    t = Templeton(request.user.username)
    try:
        job_id = request.POST['job_id']
        t.kill_job(job_id)
        Job.objects.get(job_id=request.POST['job_id']).delete()
        return HttpResponse(json.dumps({"text": "Job %s was killed" % job_id}))
    except:
        return HttpResponse(json.dumps({"text": "An error was occured"}))
Esempio n. 4
0
def start_job(request):
    if "autosave" in request.session:
        del request.session['autosave']
    t = Templeton(request.user.username)
    statusdir = "/tmp/.pigjobs/%s/%s_%s" % (request.user.username, request.POST['title'].lower().replace(" ", "_"),  datetime.now().strftime("%s"))
    script_file = statusdir + "/script.pig"
    pig_script = request.POST['pig_script']
    pig_script = process_pig_script(pig_script, request, statusdir)
    _do_newfile_save(request.fs, script_file, pig_script, "utf-8")
    args = filter(bool, request.POST.getlist("pigParams"))
    job_type = Job.EXECUTE
    execute = None
    if request.POST.get("explain"):
        execute = "explain -script %s" % (request.fs.fs_defaultfs + script_file)
        job_type = Job.EXPLAINE
        script_file = None
    if request.POST.get("syntax_check"):
        args.append("-check")
        job_type = Job.SYNTAX_CHECK
    callback = request.build_absolute_uri("/pig/notify/$jobId/")
    LOG.debug("User %s started pig job via webhcat: curl -s -d file=%s -d statusdir=%s -d callback=%s %s" % (
        request.user.username, script_file, statusdir, callback, "".join(["-d arg=%s " % a for a in args])
    ))
    job = t.pig_query(pig_file=script_file, execute=execute, statusdir=statusdir, callback=callback, arg=args)

    if request.POST.get("script_id"):
        script = PigScript.objects.get(pk=request.POST['script_id'])
    else:
        script = PigScript(user=request.user, saved=False, title=request.POST['title'])
    script.pig_script = request.POST['pig_script']
    script.python_script = request.POST['python_script']
    script.arguments = "\t".join(args)
    script.save()
    Job.objects.create(user=script.user,
                       job_id=job['id'],
                       statusdir=statusdir,
                       script_title=script.title,
                       job_type=job_type,
                       email_notification=bool(request.POST.get('email')))
    return HttpResponse(
        json.dumps(
            {
                "job_id": job['id'],
                "text": "The Job <a href='%s' target='_blank'>%s</a> has been started successfully. <br>\
                You can always go back to <a href='%s'>Query History</a> for results after the run." % (
                    reverse("single_job", args=[job['id']]),
                    job['id'],
                    reverse("query_history")
                )
            }
        )
    )
Esempio n. 5
0
def config_validator(user):
    """
    config_validator() -> [ (config_variable, error_message) ]

    Called by core check_config() view.
    """
    from pig.templeton import Templeton

    t = Templeton()
    try:
        t.get("status")
    except Exception, error:
        return [(TEMPLETON_URL, "%s" % (error.message))]
Esempio n. 6
0
def config_validator(user):
    """
    config_validator() -> [ (config_variable, error_message) ]

    Called by core check_config() view.
    """
    from pig.templeton import Templeton

    t = Templeton()
    try:
        t.get("status")
    except Exception, error:
        return [(TEMPLETON_URL, "%s" % (error.message))]
Esempio n. 7
0
def notify_job_completed(request, job_id):
    t = Templeton(SERVER_USER.get())
    job = Job.objects.get(job_id=job_id)
    job.status = job.JOB_COMPLETED
    try:
        result = t.check_job(job_id)
        exitValue = result['exitValue'] if 'exitValue' in result else None
        completed = result['completed'] if 'completed' in result else None
        runState = result['status']['runState'] if 'status' in result and 'runState' in result['status'] else None
        if runState == job.TEMPLETON_JOB_RUN_STATE_KILLED:
            job.status = job.JOB_KILLED
        elif runState == job.TEMPLETON_JOB_RUN_STATE_FAILED or (completed and exitValue is not None and exitValue != 0):
            job.status = job.JOB_FAILED
    except Exception, ex:
        LOG.debug(unicode(ex))
Esempio n. 8
0
def check_running_job(request, job_id):
    t = Templeton(request.user.username)
    job = Job.objects.get(job_id=job_id)
    if job is not None:
        try:
            result = t.check_job(job_id)
            exitValue = result['exitValue'] if 'exitValue' in result else None
            completed = result['completed'] if 'completed' in result else None
            runState = result['status']['runState'] if 'status' in result and 'runState' in result['status'] else None
            if runState == job.TEMPLETON_JOB_RUN_STATE_KILLED:
                job.status = job.JOB_KILLED
            elif runState == job.TEMPLETON_JOB_RUN_STATE_FAILED or \
                    (completed and exitValue is not None and exitValue != 0):
                job.status = job.JOB_FAILED
            job.save()
            return HttpResponse(json.dumps({"status": job.status}))
        except Exception, ex:
            LOG.debug(unicode(ex))
Esempio n. 9
0
def notify_job_completed(request, job_id):
    t = Templeton(SERVER_USER.get())
    job = Job.objects.get(job_id=job_id)
    job.status = job.JOB_COMPLETED
    try:
        result = t.check_job(job_id)
        exitValue = result['exitValue'] if 'exitValue' in result else None
        completed = result['completed'] if 'completed' in result else None
        runState = result['status'][
            'runState'] if 'status' in result and 'runState' in result[
                'status'] else None
        if runState == job.TEMPLETON_JOB_RUN_STATE_KILLED:
            job.status = job.JOB_KILLED
        elif runState == job.TEMPLETON_JOB_RUN_STATE_FAILED or (
                completed and exitValue is not None and exitValue != 0):
            job.status = job.JOB_FAILED
    except Exception, ex:
        LOG.debug(unicode(ex))
Esempio n. 10
0
def check_running_job(request, job_id):
    t = Templeton(request.user.username)
    job = Job.objects.get(job_id=job_id)
    if job is not None:
        try:
            result = t.check_job(job_id)
            exitValue = result['exitValue'] if 'exitValue' in result else None
            completed = result['completed'] if 'completed' in result else None
            runState = result['status'][
                'runState'] if 'status' in result and 'runState' in result[
                    'status'] else None
            if runState == job.TEMPLETON_JOB_RUN_STATE_KILLED:
                job.status = job.JOB_KILLED
            elif runState == job.TEMPLETON_JOB_RUN_STATE_FAILED or \
                    (completed and exitValue is not None and exitValue != 0):
                job.status = job.JOB_FAILED
            job.save()
            return HttpResponse(json.dumps({"status": job.status}))
        except Exception, ex:
            LOG.debug(unicode(ex))
Esempio n. 11
0
def start_job(request):
    if "autosave" in request.session:
        del request.session['autosave']
    t = Templeton(request.user.username)
    statusdir = "/tmp/.pigjobs/%s" % datetime.now().strftime("%s")
    script_file = statusdir + "/script.pig"
    pig_script = request.POST['pig_script']
    if request.POST.get("python_script"):
        pig_script = augmate_python_path(request.POST.get("python_script"),
                                         pig_script)
    pig_script = process_pig_script(pig_script, request)
    _do_newfile_save(request.fs, script_file, pig_script, "utf-8")
    job = t.pig_query(
        pig_file=script_file,
        statusdir=statusdir,
        callback=request.build_absolute_uri("/pig/notify/$jobId/"))

    if request.POST.get("script_id"):
        script = PigScript.objects.get(pk=request.POST['script_id'])
    else:
        script = PigScript(user=request.user,
                           saved=False,
                           title=request.POST['title'])
    script.pig_script = request.POST['pig_script']
    script.python_script = request.POST['python_script']
    script.save()
    Job.objects.create(job_id=job['id'],
                       statusdir=statusdir,
                       script=script,
                       email_notification=bool(request.POST['email']))
    return HttpResponse(
        json.dumps({
            "job_id":
            job['id'],
            "text":
            "The Job <a href='%s' target='_blank'>%s</a> has been started successfully. <br>\
                You can always go back to <a href='%s'>Query History</a> for results after the run."
            % (reverse("single_job",
                       args=[job['id']]), job['id'], reverse("query_history"))
        }))
Esempio n. 12
0
def start_job(request):
    if "autosave" in request.session:
        del request.session['autosave']
    t = Templeton(request.user.username)
    statusdir = "/tmp/.pigjobs/%s" % datetime.now().strftime("%s")
    script_file = statusdir + "/script.pig"
    pig_script = request.POST['pig_script']
    if request.POST.get("python_script"):
        pig_script = augmate_python_path(request.POST.get("python_script"), pig_script)
    pig_script = process_pig_script(pig_script, request)
    _do_newfile_save(request.fs, script_file, pig_script, "utf-8")
    job = t.pig_query(pig_file=script_file, statusdir=statusdir, callback=request.build_absolute_uri("/pig/notify/$jobId/"))

    if request.POST.get("script_id"):
        script = PigScript.objects.get(pk=request.POST['script_id'])
    else:
        script = PigScript(user=request.user, saved=False, title=request.POST['title'])
    script.pig_script = request.POST['pig_script']
    script.python_script = request.POST['python_script']
    script.save()
    Job.objects.create(job_id=job['id'],
                       statusdir=statusdir,
                       script=script,
                       email_notification=bool(request.POST['email']))
    return HttpResponse(
        json.dumps(
            {
                "job_id": job['id'],
                "text": "The Job <a href='%s' target='_blank'>%s</a> has been started successfully. <br>\
                You can always go back to <a href='%s'>Query History</a> for results after the run." % (
                    reverse("single_job", args=[job['id']]),
                    job['id'],
                    reverse("query_history")
                )
            }
        )
    )
Esempio n. 13
0
def ping_job(request, job_id):
    t = Templeton(request.user.username)
    try:
        result = t.check_job(job_id)
    except Exception, ex:
        result = {"status": {"failureInfo": unicode(ex)}}
Esempio n. 14
0
def ping_job(request, job_id):
    t = Templeton(request.user.username)
    try:
        result = t.check_job(job_id)
    except Exception, ex:
        result = {"status": {"failureInfo": unicode(ex)}}