def run(self, jobuuid, jobType, jobTarget, jobSubmitedby, jobScheduleAt, job_lastrun_at, job_if_daily, job_groupOrIP, userName): jobout = {} jobout['confComp_uuid'] = jobuuid jobout['confComp_type'] = jobType _jobTarget = self.getJobTargetIPList(jobType, jobTarget) jobout['confComp_target'] = _jobTarget jobout['confComp_submited_by'] = jobSubmitedby jobout['confComp_scheduled_at'] = jobScheduleAt jobout['confComp_lastrun_at'] = job_lastrun_at jobout['confComp_if_daily'] = job_if_daily jobout['confComp_groupOrIP'] = job_groupOrIP jobDetailOut = {} jobDetail_uuid = uuid.uuid1() jobDetailOut['confCompDetail_uuid'] = str(jobDetail_uuid) jobDetailOut['confCompDetail_scheduled_at'] = jobScheduleAt jobDetailOut['confCompDetail_status'] = 0 jobDetailOut['confCompDetail_submited_by'] = jobSubmitedby jobDetailOut['confComp_uuid'] = jobuuid jobDetailOut['confCompDetail_target'] = _jobTarget jobDetailOut['confCompDetail_groupOrIP'] = job_groupOrIP jobDetailOut['confCompDetail_if_daily'] = job_if_daily jobDetailOut[ 'confCompDetail_detail'] = './configCompare_outline.do?confComptype=' + jobType + '&confCompDetail_uuid=' + str( jobDetail_uuid) jobout['confComp_detail'] = './configCompare_outline.do?confComptype=' + jobType + '&confCompDetail_uuid=' + str( jobDetail_uuid ) + '&confCompDetail_if_daily=' + job_if_daily + '&confCompRunResult_datetime=' + self.convertScheduledatDate( jobScheduleAt) try: mongoOps.db().confCompJobs.insert(jobout) mongoOps.db().confCompJobDetails.insert(jobDetailOut) if job_if_daily == '0' or job_if_daily == '2': tasks.configCompare_run_playbook.apply_async( args=[ jobuuid, str(jobDetail_uuid), _jobTarget, jobType.lower() + 'cc', self.convertScheduledatDate(jobScheduleAt), job_if_daily, jobScheduleAt, userName ], queue='queue_configCompare_run_playbook') except Exception as e: raise e return "error" return True
def get(self): out = [] result = mongoOps.db().logCatch.find() for res in result: out.append(res) print json.dumps(out) self.write(json.dumps(out)) self.finish()
def get(self): curPage = self.get_argument('curPage') #judge current page is which if curPage == 'outline': jobDetail_uuid = self.get_argument("jobDetail_uuid") healthJobsRunResult_datetime = self.get_argument( "healthJobsRunResult_datetime") if len(healthJobsRunResult_datetime ) > 5 and jobDetail_uuid != None: out = [] result = mongoOps.db().healthJobRunResult.find( { 'jobDetail_uuid': jobDetail_uuid, 'healthJobsRunResult_datetime': healthJobsRunResult_datetime }, {'_id': 0}) for res in result: out.append(res) self.write({'status': 1, 'msg': json.dumps(out)}) self.finish() elif jobDetail_uuid != None: out = [] #result=mongoOps.db().healthJobRunResult.find({'jobDetail_uuid':jobDetail_uuid},{'_id':0}).sort('healthJobsRunResult_datetime',pymongo.DESCENDING) result = mongoOps.db().healthJobRunResult.find( { 'jobDetail_uuid': jobDetail_uuid }, { '_id': 0 }).sort('healthJobsRunResult_datetime', pymongo.ASCENDING) for res in result: out.append(res) self.write({'status': 1, 'msg': json.dumps(out)}) self.finish() # find everyday job if curPage == 'summary': healthJobsRunResult_uuid = self.get_argument( 'healthJobsRunResult_uuid') if healthJobsRunResult_uuid != None: out = {} result = mongoOps.db().healthJobRunResult.find_one( {'healthJobsRunResult_uuid': healthJobsRunResult_uuid}, {'_id': 0}) self.write({'status': 1, 'msg': result}) self.finish()
def checkUser(self, userName): if userName == None: raise ValueError('参数不能为空') result = mongoOps.db().login.find_one({'name': userName}) if result: self.write({'status': 1, 'msg': 1}) else: self.write({'status': 1, 'msg': 0}) self.finish()
def getAllPlayBooks(self): result = mongoOps.db().playbooks.find({}, { '_id': 0 }).sort('created_at', pymongo.DESCENDING) #降序 out = [] for playbook in result: out.append(playbook) self.write(json.dumps(out)) self.finish()
def get(self): cursor = mongoOps.db().healthJobs.find({}, { '_id': 0 }).sort('job_scheduled_at', pymongo.DESCENDING) out = [] for res in cursor: out.append(res) self.write(json.dumps(out)) self.finish()
def modifyServer(self,server): result=mongoOps.db().servers.update({'uuid':server['uuid']},{'$set':{'userid':server['userid'],\ 'password':server['password'],'ip':server['ip'],'product':server['product']}}) if result['n']==1: #tasks.updateServerInfo.delay(server) tasks.updateServerInfo.apply_async(args=[server,'modifyIP'],queue='default') self.write({'status':1,'message':'修改成功'}) else: self.write({'status':0,'message':'修改失败'}) self.finish()
def get(self): out = [] ip = self.get_argument('ip') result = mongoOps.db().confCompRunResult.find( { 'confCompJobRunResult_ip': ip, 'confCompJobRunResult_result': 0 }, { '_id': 0, 'confCompJobRunResult_result': 0, 'confCompDetail_uuid': 0, 'confComp_uuid': 0, 'confCompJobRunResult_detail': 0, 'confCompJobRunResult_uuid': 0 }) for res in result: if res.has_key('confCompRunResult_errmsg'): continue elif res.has_key('confCompJobRunResult_retJson'): out.append(res) else: pass ''' for res in result: retJsonstr=res['confCompJobRunResult_retJson'] retJson=json.loads(retJsonstr) dic={} dic['product']=retJson['product'] dic['datetime']=res['confCompJobRunResult_datetime'] datas=retJson['data'] for arr in datas: ''' ''' for res in result: retJsonstr=res['confCompJobRunResult_retJson'] retJson=json.loads(retJsonstr) dic={} #array=[] dic['ip']=ip dic['product']=retJson['product'] dic['datetime']=res['confCompJobRunResult_datetime'] innerArray = retJson['data'] for arr in innerArray: inner={} inner['name']=arr['name'] inner['version']=arr['version'] inner['type']=arr['type'] dic['proInfo']=inner out.append(dic) ''' retValue = json.dumps(out) self.write({'status': 1, 'msg': retValue}) self.finish()
def getOneServer(self, uuid): result = mongoOps.db().servers.find_one({"uuid": uuid}, {'_id': 0}) if result is None: self.write({ "status": "info", "message": "您找的" + str(uuid) + "不存在!" }) self.finish() else: self.write(json.dumps(result)) self.finish()
def getOneTask(self, uuid): result = mongoOps.db().tasks.find_one({"uuid": uuid}, {'_id': 0}) if result is None: self.write({ "status": "info", "message": "您找的" + str(uuid) + "不存在!" }) self.finish() else: self.write(str(result).decode('utf8')) self.finish()
def importExcel(self,lists): out=lists #定义已经存在的IP,无法通过excel导入 for server in lists: try: result=mongoOps.db().servers.insert(server) except pymongo.errors.DuplicateKeyError,e1: out.remove(server) continue except Exception ,e : self.write({'status':0,'message':'出错,出错原因为:'+str(e)}) self.finish()
def getJobDetailList(self,jobuuid): out=[] #change to array to printout res=mongoOps.db().confCompJobDetails.find({'confComp_uuid':jobuuid},{'_id':0}) for jobDetail in res: out.append(jobDetail) if len(out) == 0: self.write({'status':2,'msg':'no data found!'}) elif len(out) > 0 : self.write({'status':1,'msg':out}) else: self.write({'status':0,'msg':'faiulre'}) self.finish()
def getOneServerByIp(self, ipaddr): ips = ipaddr.encode('gbk') result = mongoOps.db().servers.find_one({"IP": ips}, {'_id': 0}) if result is None: self.write({ "status": "info", "message": "您找的" + str(ipaddr) + "不存在!" }) self.finish() else: self.write(json.dumps(result)) self.finish()
def get(self): uuid = self.get_argument("healthJobsRunResult_uuid", 'withoutuuid') try: result = mongoOps.db().healthJobRunResult.find_one( {'healthJobsRunResult_uuid': uuid}, {'_id': 0}) if result: self.write({'errmsg': result['healthJobsRunResult_errmsg']}) else: self.write({'errmsg': '没有找到本次任务的uuid!'}) except KeyError as err: self.write({'errmsg': '错误描述未产生!'}) self.finish()
def IPCheck(self,ip): try: result=mongoOps.db().servers.find({"ip":ip}) length=result.count() if length<=0: self.write({"status":0,"message":"不存在!"}) self.finish() else: self.write({"status":1,"message":"已经存在!"}) self.finish() except Exception ,e : self.write({"status":0,"message":"调用mongodb IPCheck出错,错误描述为:"+str(e)}) self.finish()
def addLog(self, body): proj_log.log().info(self.request.body) body = json.loads(self.request.body) ip = body['ip'] product = body['product'] version = body['version'] task_timestamp = body['task_timestamp'] instance = body['instance'] job = {} job['ip'] = ip job['product'] = product job['version'] = version job['task_timestamp'] = task_timestamp job['instance'] = instance uuid1 = str(uuid.uuid1()) job['_id'] = uuid1 mongoOps.db().logCatch.insert(job) tasks.logCatch_run_playbook.apply_async( args=[uuid1, ip, product, instance, task_timestamp], queue='queue_logCatch_run_playbook') self.write({'status': 1, 'msg': 'success'}) self.finish()
def getJobTargetIPList(self, jobType, jobTarget): if jobTarget == 'All': result = mongoOps.db().healthCheckGroups.find_one( {'group': jobType.lower()}, { '_id': 0, 'group': 0 }) if result: out = '' for res in result['iplist']: out += res + ',' return out else: return jobTarget
def post(self): body = json.loads(self.request.body) _id = body['_id'] res = mongoOps.db().logCatch.find_one({'_id': _id}) location = res['loc'] buf_size = 1000 self.set_header('Content-Type', 'application/ostet-stream') #很重要 with open(location, 'rb') as f: while True: data = f.read(buf_size) if not data: break self.write(data) self.finish()
def post(self): body=json.loads(self.request.body) runResult=body['healthJobsRunResult_uuid'] res=mongoOps.db().healthJobRunResult.find_one({'healthJobsRunResult_uuid':runResult},{'_id':0}) if body['product'] == 'os': summary_location=res['healthJobsRunResult_os_summary_loc'] else: summary_location=res['healthJobsRunResult_summary_loc'] buf_size=1000 with open(summary_location,'rb') as f: while True: data=f.read(buf_size) if not data: break self.write(data) self.finish()
def getAPlayBookTasks(self, uuid): result = mongoOps.db().tasks.find({ "playbook_uuid": uuid }, { '_id': 0 }).sort('created_at', pymongo.ASCENDING) #按照时间升序 if result is None: self.write({ "status": "info", "message": "您找的playbook" + str(uuid) + "不存在!" }) self.finish() else: out = [] for task in result: out.append(task) self.write(json.dumps(out)) self.finish()
def post(self): playbookstatusbody = base64.b64decode(self.request.body) body = json.loads(playbookstatusbody) out = [] vers = '' for uuid in body: inner_data = {} result = mongoOps.db().playbooks.find_one( {'uuid': uuid['playbookuuid']}, {'_id': 0}) status = result['status'] inner_data[uuid['playbookuuid']] = status out.append(inner_data) vers = json.dumps(out) if vers != '': self.write({'status': 1, 'msg': vers}) else: self.write({'status': 0, 'msg': 'failed'}) self.finish()
def addUser(self, name, password, role, email, product): user = { 'name': 'default', 'password': '******', 'role': 0, 'email': '*****@*****.**', 'product': [] } user['name'] = name user['password'] = password user['role'] = role user['email'] = email user['product'] = product result = mongoOps.db().login.insert(user) if result: self.write({'status': 1, 'msg': '添加用户成功'}) else: self.write({'status': 0, 'msg': '添加用户失败'}) self.finish()
def createFinalJson(self, ip, product, datetime, instance, db): result = mongoOps.db().confCompRunResult.find( { 'confCompJobRunResult_ip': ip, 'confCompJobRunResult_datetime': datetime, 'confCompJobRunResult_result': 0 }, {'_id': 0}) #首先找出所有的ip 和datetime 在同一个时间点的数据 out = [] if result: for res in result: # 在找出这个IP和时间点不同的产品和版本 retJsonStr = res['confCompJobRunResult_retJson'] retJson = json.loads(retJsonStr) if product == retJson['product']: # 找到一类产品 接着找产品的实例 for data in retJson['data']: if db == '-' and data['type'] == 'database': continue else: dic = {} dic['confCompJobRunResult_ip'] = ip dic['confCompJobRunResult_datetime'] = datetime dic['confCompJobRunResult_retJson'] = data out.append(dic) return out
def deleteJob(self, job_param): try: userName = job_param['userName'] cron = CronTab(user=userName) job_uuid = job_param['job_uuid'] jobuuids = job_uuid.split(',') for jobuuid in jobuuids: #delete more mongoOps.db().healthJobs.remove({'job_uuid': jobuuid}) mongoOps.db().healthJobDetails.remove({'job_uuid': jobuuid}) mongoOps.db().healthJobRunResult.remove({'job_uuid': jobuuid}) jobs = cron.find_command( jobuuid ) #findajob which to be deleted if run immediately not do for job in jobs: cron.remove(job) cron.write(user=userName) self.write({'status': 1, 'msg': 'deleted '}) except Exception as e: self.write({'status': 0, 'msg': str(e)}) self.finish()
def post(self): result = mongoOps.db().confCompRunResult.distinct( 'confCompJobRunResult_ip') vers = json.dumps(result) self.write({'status': 1, 'msg': vers}) self.finish()
def findAllGroups(): result = mongoOps.db().healthCheckGroups.find({}, {'_id': 0, 'iplist': 0}) for res in result: print res
def get(self): confCompDetail_uuid=self.get_argument('confCompDetail_uuid') cursor = mongoOps.db().confCompJobDetails.find_one({'confCompDetail_uuid':confCompDetail_uuid},{'_id':0}) self.write(cursor) self.finish()