Exemple #1
0
def result_json(request,project_name,job_pk):
    job=Job.objects.get(pk=job_pk);
    color = re.compile('(.\[0\;\d+m)?(.*?)(.\[\dm)?')
    job.result_stdout = color.sub(r'\2', job.result_stdout)
    job.result_stderr = color.sub(r'\2', job.result_stderr)
    job.result_traceback = color.sub(r'\2', job.result_traceback)

    data = {'status':job.status,'result_stdout':job.result_stdout,'result_stderr':job.result_stderr,'result_traceback':job.result_traceback}
    if job.status == "successful" or job.status == "failed":
        if job.email != '':
            sendmail(job.email, job.status, job_pk, project_name)
    return render_json(data)
Exemple #2
0
def delete_job(request,project_name):
    user = request.user
    project = Project.objects.get(name = project_name)
    if ( user.has_perm('execute_proj',project) == False ):
        raise PopupException('Sorry, you have not right to manage the project!')

    data=False
    try:
        job_pk = request.GET.get('job_pk')
        Job.objects.get(pk=job_pk).delete()
        data=True
    except Exception:
        data=False
    return render_json(data)
Exemple #3
0
def delete_job(request, project_name):
    user = request.user
    project = Project.objects.get(name=project_name)
    if (user.has_perm('execute_proj', project) == False):
        raise PopupException(
            'Sorry, you have not right to manage the project!')

    data = False
    try:
        job_pk = request.GET.get('job_pk')
        Job.objects.get(pk=job_pk).delete()
        data = True
    except Exception:
        data = False
    return render_json(data)
Exemple #4
0
def delete_template(request,project_name):
    user = request.user
    project=Project.objects.get(name=project_name)
    if ( user.has_perm('config_proj',project) == False ):
        raise PopupException('Sorry, you have not right to config the project!')

    data=False
    try:
        template_pk = request.GET.get('template_pk')

        JobTemplate.objects.get(pk=template_pk).delete()
        data=True

    except Exception:
        data=False

    return render_json(data)
Exemple #5
0
def delete_project(request,project_name):
    user = request.user
    project = Project.objects.get(name = project_name)
    if ( user.has_perm('manage_proj',project) == False ):
        raise PopupException('Sorry, you have not right to manage the project!')

    data=False
    try:
        Project.objects.get(name=project_name).delete()
        delete_project_dir(project_name)
        data=True

    except Exception:

        data=False

    return render_json(data)
Exemple #6
0
def result_json(request, project_name, job_pk):
    job = Job.objects.get(pk=job_pk)
    color = re.compile('(.\[0\;\d+m)?(.*?)(.\[\dm)?')
    job.result_stdout = color.sub(r'\2', job.result_stdout)
    job.result_stderr = color.sub(r'\2', job.result_stderr)
    job.result_traceback = color.sub(r'\2', job.result_traceback)

    data = {
        'status': job.status,
        'result_stdout': job.result_stdout,
        'result_stderr': job.result_stderr,
        'result_traceback': job.result_traceback
    }
    if job.status == "successful" or job.status == "failed":
        if job.email != '':
            sendmail(job.email, job.status, job_pk, project_name)
    return render_json(data)
Exemple #7
0
def delete_template(request, project_name):
    user = request.user
    project = Project.objects.get(name=project_name)
    if (user.has_perm('config_proj', project) == False):
        raise PopupException(
            'Sorry, you have not right to config the project!')

    data = False
    try:
        template_pk = request.GET.get('template_pk')

        JobTemplate.objects.get(pk=template_pk).delete()
        data = True

    except Exception:
        data = False

    return render_json(data)
Exemple #8
0
def deploykey(request, project_name):
    user = request.user
    project = Project.objects.get(name=project_name)
    if (user.has_perm('execute_proj', project) == False):
        raise PopupException(
            'Sorry, you have not right to execute the project!')

    result = []
    page_errors = None
    if request.method == 'POST':
        inventory = request.POST.get('inventory')
        hosts = request.POST.get('hosts')
        user = request.POST.get('user')
        password = request.POST.get('password')
        key = request.POST.get('sshkey')

        if inventory == '<--None-->':
            file_content = hosts
            if file_content.count(','):
                file_content = '\n'.join(file_content.split(','))
            elif file_content.count(';'):
                file_content = '\n'.join(file_content.split(';'))
            else:
                file_content = '\n'.join(file_content.split(' '))
            file_name = 'hosts'
            inventory = create_tmp_task_file(project_name, file_name,
                                             file_content)

        inventory = get_inventory_local_path(project_name, inventory)
        hostlist = get_hosts(inventory, hosts)
        result = get_sshkey_deploy(hostlist, user, password, key)
        results = {}
        for i in range(len(result)):
            results[i] = result[i]
        results = [results]
        return render_json(results)

    return render(
        "ansible/deploykey.html", request, {
            'project': project,
            'result': result,
            'page_errors': page_errors,
            'request': request,
        })
Exemple #9
0
def deploykey(request,project_name):
    user = request.user
    project = Project.objects.get(name = project_name)
    if ( user.has_perm('execute_proj',project) == False ):
        raise PopupException('Sorry, you have not right to execute the project!')

    result = []
    page_errors = None
    if request.method == 'POST':
        inventory = request.POST.get('inventory')
        hosts = request.POST.get('hosts')
        user = request.POST.get('user')
        password = request.POST.get('password')
        key = request.POST.get('sshkey')
        
        if inventory == '<--None-->':
            file_content = hosts
            if file_content.count(','):
                file_content = '\n'.join(file_content.split(','))
            elif file_content.count(';'):
                file_content = '\n'.join(file_content.split(';'))
            else :
                file_content = '\n'.join(file_content.split(' '))
            file_name = 'hosts'
            inventory = create_tmp_task_file(project_name,file_name,file_content)
            
        inventory = get_inventory_local_path(project_name,inventory)
        hostlist = get_hosts(inventory, hosts)
        result = get_sshkey_deploy(hostlist, user, password, key)
        results = {}
        for i in range(len(result)):
            results[i] = result[i]
        results = [results]
        return render_json(results)
        
                      
    return render("ansible/deploykey.html",request,{
        'project': project,
        'result': result,
        'page_errors':page_errors,
        'request': request,
        })
Exemple #10
0
  def process_exception(self, request, exception):


    import traceback
    tb = traceback.format_exc()

    if isinstance(exception, PopupException):
        return exception.response(request)

    if isinstance(exception, StructuredException):
      if request.ajax:
        response = render_json(exception.response_data)
        response[MIDDLE_WARE_HEADER] = 'EXCEPTION'
        response.status_code = getattr(exception, 'error_code', 500)
        return response
      else:
        response = render("error.html", request,dict(error=exception.response_data.get("message")))
        response.status_code = getattr(exception, 'error_code', 500)
        return response

    return None
Exemple #11
0
def delete_project(request, project_name):
    user = request.user
    project = Project.objects.get(name=project_name)
    if (user.has_perm('manage_proj', project) == False):
        raise PopupException(
            'Sorry, you have not right to manage the project!')

    data = False
    try:
        Job.objects.filter(project=project).delete()
        JobTemplate.objects.filter(project=project).delete()
        Package.objects.filter(project=project).delete()
        Project.objects.get(name=project_name).delete()
        delete_project_dir(project_name)
        data = True

    except Exception:

        data = False

    return render_json(data)
Exemple #12
0
    def process_exception(self, request, exception):

        import traceback
        tb = traceback.format_exc()

        if isinstance(exception, PopupException):
            return exception.response(request)

        if isinstance(exception, StructuredException):
            if request.ajax:
                response = render_json(exception.response_data)
                response[MIDDLE_WARE_HEADER] = 'EXCEPTION'
                response.status_code = getattr(exception, 'error_code', 500)
                return response
            else:
                response = render(
                    "error.html", request,
                    dict(error=exception.response_data.get("message")))
                response.status_code = getattr(exception, 'error_code', 500)
                return response

        return None