def task_index(request): proj_base_dir = get_dir("pro_path") inventory = get_ansible_config("inventory") default_check_HostsFile = inventory.split('/')[-1] temp_name = "sktask/sktask_header.html" all_HostsFile = get_hostsFile(ansible_dir) all_ansible_hosts_dic, list_key, all_group_key = get_AnsibleHostsDic( inventory) all_ansible_hosts_ip = get_IpList(inventory) all_ansible_hosts = all_group_key + all_ansible_hosts_ip all_projects = project.objects.filter(online_status=1) return render_to_response('sktask/task_index.html', locals(), RequestContext(request))
def job_detail(request, ids): proj_base_dir = get_dir("pro_path") obj = {} obj_job = get_object(job, id=ids) obj_playbook = obj_job.playbook obj_project = get_object(project, name=obj_job.project) obj_pro_path = obj_project.path pkfile = proj_base_dir + obj_pro_path + "/" + obj_playbook obj["name"] = obj_playbook with open(pkfile, 'r') as f: obj["content"] = f.read() return render_to_response('sktask/job_detail.html', locals(), RequestContext(request))
def _wrapped_view(request, *args, **kwargs): iToken = get_dir('token') if request.POST: pToken = request.POST.get('token') if iToken == pToken: return view_func(request, *args, **kwargs) else: message = "forbidden your token error!!" print message return HttpResponse(status=403) if request.GET: pToken = request.GET['token'] if iToken == pToken: return view_func(request, *args, **kwargs) else: message = "forbidden your token error!!" print message return HttpResponse(status=403) return HttpResponse(status=403)
from models import job, extravars, project import os from skconfig.views import get_dir from django.contrib.auth.decorators import login_required from skaccounts.permission import permission_verify import logging from lib.log import log from lib.setup import get_playbook, get_roles from .models import history from .forms import Job_form from django.shortcuts import render_to_response, RequestContext from skcmdb.api import get_object import json # var info proj_base_dir = get_dir("pro_path") @login_required() @permission_verify() def job_index(request): temp_name = "sktask/sktask_header.html" alljob = job.objects.all() return render_to_response('sktask/job_index.html', locals(), RequestContext(request)) @login_required() @permission_verify() def job_add(request): temp_name = "sktask/sktask_header.html"
''' Created on 2020年6月17日 @author: admin ''' #! /usr/bin/env python # -*- coding: utf-8 -*- from skconfig.views import get_dir from django.contrib.auth.decorators import login_required from skaccounts.permission import permission_verify from lib.setup import get_AnsibleHostsDic, get_hostsFile from django.shortcuts import render ansible_dir = get_dir("a_path") @login_required() @permission_verify() def index(request): temp_name = "sktask/setup-header.html" list_hostsFile = get_hostsFile(ansible_dir) dic_dic_groups = {} dic_list_key = {} for h in list_hostsFile: all_ansible_groups, list_key, list_key_gp = get_AnsibleHostsDic( ansible_dir + h) dic_dic_groups[h] = all_ansible_groups dic_list_key[h] = list_key
def task_submit(request): proj_base_dir = get_dir("pro_path") ret = [] temp_name = "sktask/sktask_header.html" h_obj = "" extra_vars = "" if request.method == 'POST': user = request.user if request.META.has_key('HTTP_X_FORWARDED_FOR'): ip = request.META['HTTP_X_FORWARDED_FOR'] else: ip = request.META['REMOTE_ADDR'] if request.POST.get('ansible_hosts'): h_obj = request.POST.get('ansible_hosts') extra_vars = "hosts=%s" % h_obj if request.POST.get('iCheck_extravars'): e_obj = request.POST.get('iCheck_extravars') extra_vars = extra_vars + " " + e_obj if request.POST.get('iCheck_HostsFile'): f_obj = request.POST.get('iCheck_HostsFile') f_obj = ansible_dir + f_obj p_obj = request.POST.get('iCheck_project') j_obj = request.POST.get('iCheck_job') playbook_dir = proj_base_dir + p_obj job_obj = playbook_dir + "/" + j_obj print job_obj if j_obj.endswith('.yml'): # cmd = "ansible-playbook"+ " " + "-i" + " " + " " + f_obj + playbook_dir +"/"+ j_obj + " " + "-e '%s'" % extra_vars cmd = "ansible-playbook %s -i %s -e '%s'" % (job_obj, f_obj, extra_vars) print cmd elif j_obj.endswith('.ans'): # cmd = "bash"+" " + playbook_dir +"/"+ j_obj + " " + h_obj hosts_vars = "%s -i %s" % (h_obj, f_obj) cmd = "bash %s '%s'" % (job_obj, hosts_vars) else: ret.append( "您定义的job任务脚本不符合规范,playbook脚本名称必须以yml结尾,shell封装的ansible命令任务脚本ans结尾") return render(request, 'sktask/task_result.html', locals()) try: time_start = datetime.now().strftime('%Y-%m-%d %H:%M:%S') pcmd = Popen(cmd, stdout=PIPE, stderr=PIPE, shell=True) data = pcmd.communicate() # ret.append(data) ret = data print ret except: exinfo = sys.exc_info() logging.error(exinfo) retcode = pcmd.poll() if retcode == 0: retcode = "success" else: retcode = "failed" dic_his = { 'login_user': user, 'src_ip': ip, 'cmd_object': h_obj, 'cmd': cmd, 'cmd_result': retcode, 'cmd_detail': ret[0], 'time_task_start': time_start, # 'time_task_finished':time_finished, 'task_name': j_obj } history.objects.create(**dic_his) return render(request, 'sktask/task_result.html', locals())
import logging from lib.log import log from lib.setup import get_playbook, get_roles, get_AnsibleHostsDic, get_IpList, get_hostsFile from .models import history from .forms import Project_form from django.shortcuts import render_to_response, RequestContext from skcmdb.api import get_object import json import logging from billiard.util import INFO import sys from .models import history from datetime import datetime from sktask.models import ONLINE_STATUS level = get_dir("log_level") log_path = get_dir("log_path") log("sktask.log", level, log_path) ansible_dir = get_dir("a_path") @login_required() @permission_verify() def task_index(request): proj_base_dir = get_dir("pro_path") inventory = get_ansible_config("inventory") default_check_HostsFile = inventory.split('/')[-1] temp_name = "sktask/sktask_header.html" all_HostsFile = get_hostsFile(ansible_dir) all_ansible_hosts_dic, list_key, all_group_key = get_AnsibleHostsDic(
from lib.file import new_file from .forms import WorkOrder_form from django.shortcuts import render from django.template import RequestContext from lib.com import get_object import json import logging from billiard.util import INFO import sys from datetime import datetime from lib.lib_config import get_config_var level = get_dir("log_level") log_path = get_dir("log_path") log("skworkorders.log", level, log_path) git_path = get_dir("git_path") proj_base_dir = get_dir("pro_path") @login_required() @permission_verify() def WorkOrder_index(request): temp_name = "skworkorders/skworkorders-header.html" tpl_all = WorkOrder.objects.filter(template_enable = False) return render(request,'skworkorders/WorkOrder_index.html', locals()) @login_required()