def post(self):
        op = self.get_argument('op', '')
        if op == 'show':
            name = self.get_argument('name', '')
            job = Job.get_job_fromdb(name)
            self.write('<pre>%s</pre>' % str(job))
            return

        title = '任务配置'
        #需要先从azkaban登陆
        session_id = self.get_argument('session_id', '')
        login_user = self.get_argument('login_user', '')
        if session_id == '' or login_user == '':
            self.render('to_login.html')
            return
        #参数
        query_name = self.get_argument('query_name', '')
        query_project_name = self.get_argument('query_project_name', '')
        query_server_host = self.get_argument('query_server_host', '')
        query_user = self.get_argument('query_user', '')
        #任务
        name = self.get_argument('name', '')
        is_copy = self.get_argument('is_copy', 'false')
        job = Job()
        if name != '':
            job = Job.get_job_fromdb(name)
        if is_copy == 'true':
            job.name = ''
            job.loc = ''
        projects = Job.get_projects(login_user)
        jobs = Job.get_alljobs(login_user=login_user)
        all_jobs = Job.get_alljobs()

        query_dict = {
            'query_name': query_name,
            'query_project_name': query_project_name,
            'query_server_host': query_server_host,
            'query_user': query_user,
            'session_id': session_id,
            'login_user': login_user
        }

        logging.info('to update job [%s]' % name)
        self.render('to_update.html',
                    title=title,
                    job=job,
                    jobs=jobs,
                    all_jobs=all_jobs,
                    projects=projects,
                    query_dict=query_dict)
Пример #2
0
 def get_alljobs(self):
     job_list = Job.get_alljobs()
     jobs = map(lambda x: {
         'name': x.name,
         'project_name': x.project_name
     }, job_list)
     self.write(json.dumps(jobs))
Пример #3
0
    def post(self):
        title = '调度任务列表'
        #需要先从azkaban登陆
        session_id = self.get_argument('session_id', '')
        login_user = self.get_argument('login_user', '')
        if session_id == '' or login_user == '':
            self.render('to_login.html')
            return
        #参数
        query_name = self.get_argument('query_name', '')
        query_project_name = self.get_argument('query_project_name', '')
        query_server_host = self.get_argument('query_server_host', '')
        query_user = self.get_argument('query_user', '')
        #列表
        jobs = Job.get_alljobs(query_name, query_project_name,
                               query_server_host, query_user, login_user)

        query_dict = {
            'query_name': query_name,
            'query_project_name': query_project_name,
            'query_server_host': query_server_host,
            'query_user': query_user,
            'session_id': session_id,
            'login_user': login_user
        }

        logging.info('query job list [%s]' % query_dict)
        self.render('list.html', title=title, jobs=jobs, query_dict=query_dict)
Пример #4
0
    def post(self):
        #更新完跳转到列表页
        title = '调度任务列表'
        #需要先从azkaban登陆
        session_id = self.get_argument('session_id','')
        login_user = self.get_argument('login_user','')
        if session_id=='' or login_user=='':
            self.render('to_login.html')
            return
        #参数
        query_name = self.get_argument('query_name','')
        query_project_name = self.get_argument('query_project_name','')
        query_server_host = self.get_argument('query_server_host','')
        query_user = self.get_argument('query_user','')
        #生成job
        attr_list = Job.get_attr_list()
        dependencies_box = self.get_argument('dependencies_box','')
        logging.info('>>>>>>>>>>>'+str(type(dependencies_box)))
        logging.info('>>>>>>>>>>>'+str(dependencies_box))
        job = Job()
        #动态加载字段,默认均为字符串
        for attr in attr_list:
            value = str(self.get_argument(attr,'')).strip()
            if value!='':
                setattr(job,attr,value)
                logging.info(attr+':'+value)
        #默认设置
        job.name = job.name.replace('.','-')
        job.updater = login_user
        job.update_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
        if job.creator == '':
            job.creator = job.updater
            job.create_time = job.update_time
        #更新
        job.update_job()

        #列表
        jobs = Job.get_alljobs(query_name,query_project_name,query_server_host,query_user,login_user)

        query_dict = {
                'query_name':query_name,
                'query_project_name':query_project_name,
                'query_server_host':query_server_host,
                'query_user':query_user,
                'session_id':session_id,
                'login_user':login_user
        }

        logging.info('[%s] update job [%s]' % (login_user,job.name))
        self.render('list.html',title=title,jobs=jobs,query_dict=query_dict)
Пример #5
0
def generate_files(username='',session_id=''):
    #1/清空所有文件
    dir_path = '%s/../files/' % CURRENTPATH
    os.system('rm -rf %s' % dir_path)
    os.system('mkdir %s' % dir_path)
    #2/生成文件目录
    
    #3/生成文件
    job_list = Job.get_alljobs(login_user=username)
    for job in job_list:
        #2/生成文件目录
        project_path = dir_path+job.project_name+'/'
        zip_path = dir_path+job.project_name+'.zip'
        if not os.path.exists(project_path):
            os.system('mkdir %s' % project_path)
        #3/生成文件
        file_name = job.name+'.job'
        file_path = project_path+file_name
    
        f = open(file_path,'wb')
        f.write(job.get_file_str())
        f.close()
        
        #4/zip包
        zf = zipfile.ZipFile(zip_path,'w',zipfile.ZIP_DEFLATED)
        #遍历所有文件
        for dirpath, dirnames, filenames in os.walk(project_path):
            for filename in filenames:
                zf.write(os.path.join(dirpath,filename))
        zf.close()
        
        print '任务%s.job文件已生成' % job.name

    result_list = []
    #5/上传zip包
    for filename in os.listdir(dir_path):
        if filename.endswith('.zip'):
            zip_path = dir_path+'/'+filename
            project_name = filename.replace('.zip','')
            result = upload_zip(session_id,project_name,zip_path)
            result_list.append(result)

    print result_list
    return result_list
Пример #6
0
    def post(self):
        #需要先从azkaban登陆
        op = self.get_argument('op', '')
        login_user = self.get_argument('login_user', '')
        project_name = self.get_argument('project_name', '')
        if login_user == '':
            self.render('to_login.html')
            return

        if op == 'edit':
            #项目
            jobs = Job.get_alljobs(project_name=project_name,
                                   login_user=login_user)
            has_dependce_jobs = set()
            is_dependced_jobs = set()

            for job in jobs:
                if job.dependencies != '':
                    has_dependce_jobs.add(job.name)
                    is_dependced_jobs.update(job.dependencies.split(','))

            for job in jobs:
                job.has_dependce = True if job.name in has_dependce_jobs else False
                job.is_dependced = True if job.name in is_dependced_jobs else False

            logging.info('to edit dag [%s][%s]' % (project_name, login_user))
            self.render('dag_edit.html',
                        project_name=project_name,
                        jobs=jobs,
                        login_user=login_user)
        elif op == 'save':
            try:
                nodes = self.get_argument('nodes', '')
                links = self.get_argument('links', '')
                ns = json.loads(nodes)
                ls = json.loads(links)

                Job.update_dag(login_user, ns, ls)
                logging.info('edit dag [%s][%s]' % (project_name, login_user))
                self.write("保存成功")
            except Exception, e:
                logging.info(e)
                self.write('保存失败[%s]' % str(e))
Пример #7
0
    def post(self):
        title = '任务配置'
        #需要先从azkaban登陆
        session_id = self.get_argument('session_id','')
        login_user = self.get_argument('login_user','')
        if session_id=='' or login_user=='':
            self.render('to_login.html')
            return
        #参数
        query_name = self.get_argument('query_name','')
        query_project_name = self.get_argument('query_project_name','')
        query_server_host = self.get_argument('query_server_host','')
        query_user = self.get_argument('query_user','')
        #任务删除
        name = self.get_argument('name','')
        job = Job.get_job_fromdb(name)
        #job = Job()
        #job.name = name
        job.updater = login_user
        job.unschedule_flow()
        job.delete_dependencies()
        job.delete_job()
        
        #列表
        jobs = Job.get_alljobs(query_name,query_project_name,query_server_host,query_user,login_user)

        query_dict = {
                'query_name':query_name,
                'query_project_name':query_project_name,
                'query_server_host':query_server_host,
                'query_user':query_user,
                'session_id':session_id,
                'login_user':login_user
        }

        logging.info('[%s] delete job [%s]' % (login_user,name))
        self.render('list.html',title=title,jobs=jobs,query_dict=query_dict)