password = '******', database = 'autorelease', ) mongo_conn = Mongo( host = '127.0.0.1', database = 'log', table = 'log_'+id, ) mongo_conn.drop() mongo_conn.insert( id = id, run_id = run_id, content = "", update_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(int(time.time()))) ) while True: content = l.load() result = os.popen("/usr/local/ctier/pkgs/ctl-3.6.1/bin/ctl-queue").read() if run_id in result: mongo_conn.update(condition={'id':id}, data={"content":content}) continue else: mongo_conn.update(condition={'id':id}, data={"content":content})
def run(request, id, env): #env == percent print id, env user, email, usernum = request.user.username.split("|")[:] Content.objects.filter(id=id).update(env=env) ROOT = os.path.abspath(os.path.dirname(__file__)) version, ctl_id = "", 0 cursor = connection.cursor() sql = """ select tc.version, tp.ctl_id from task_content tc left join task_project tp on tc.project = tp.name where tc.id = '%s' and tp.gradation = '%s'; """ % (id, env) cursor.execute(sql) row = cursor.fetchone() version, ctl_id = row[0:] #result = subprocess.call("ctl-run -i %d -- -Version %s" % (ctl_id, version), shell=True, stderr=subprocess.STDOUT) result = os.popen( "source /root/.bash_profile; /usr/local/ctier/pkgs/ctl-3.6.1/bin/ctl-run -i %d -- -Version %s" % (ctl_id, version)) #update or insert case status mongo_conn = Mongo( host='127.0.0.1', database='release', table='percent', ) mongo_conn.remove(task_id=int(id)) mongo_conn.insert(task_id=int(id), status='running', percent=1) cursor = connection.cursor() sql = """ select tp.name, tp.group, tp.gradation, tc.status from task_content tc left join task_project tp on tc.project = tp.name and tc.env = tp.gradation where tc.id = '%s' """ % id cursor.execute(sql) row = cursor.fetchone() project, group, percent, status = row[0], row[1], row[2], row[3] run_id = "" print result for i in result: if re.search("^\[(\d+)\].*", i): run_id = re.search("^\[(\d+)\].*", i).group(1) print run_id Content.objects.filter(id=id).update( run_id=run_id, deploy_time=int(time.time()), deploy_user=user, status=101, ) send(request, id, project, 101) print "nohup /usr/bin/python /data/python/web/autorelease/scripts/log_tail.py %s %s %s %s %s u >> /tmp/run.log &\n" % ( id, run_id, project, group, percent) print time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(int(time.time()))) cmd = "nohup /usr/bin/python /data/python/web/autorelease/scripts/log_tail.py %s %s %s %s %s u >> /tmp/run.log &\n" % ( id, run_id, project, group, percent) f = open("/tmp/task", "a") f.write(cmd) f.close() # subprocess.call( # "nohup python %s/../scripts/log_tail.py %s %s %s %s %s u >/dev/null 2>&1 &" % (ROOT, id, run_id, project, group, percent), # shell=True, # stdout=open('/dev/null', 'w'), # stderr=subprocess.STDOUT # ) #os.system("nohup python %s/../scripts/log_tail.py %s %s %s %s %s u >/dev/null 2>&1 &" % (ROOT, id, run_id, project, group, percent)) return HttpResponseRedirect("/task/view/%s?m=1&p=%s" % (id, project))
def main(id, run_id, project, group, percent, stat): """ A demo daemon main routine, write a datestamp to /tmp/daemon-log every 10 seconds. """ import time mysql_conn = Mysql( host='127.0.0.1', user='******', password='******', database='autorelease', ) mongo_conn = Mongo( host='127.0.0.1', database='log', table='log_' + id, ) #stat: u(update) ro r(rollback) try: int(percent) except: l = Log(project, group, percent) else: l = Log(project, group, "%s%%" % percent) content = l.load() mongo_conn.drop() mongo_conn.insert( id=id, run_id=run_id, content="", update_time=time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(int(time.time()))) ) while True: content = l.load() result = os.popen("/usr/local/ctier/pkgs/ctl-3.6.1/bin/ctl-queue").read() if run_id in result: mongo_conn.update(condition={'id': id}, data={"content": content}) continue else: mongo_conn.update(condition={'id': id}, data={"content": content}) if stat == 'u': mysql_conn.save( "update task_content set finish_time = '%s', status = '102' where id = '%s'" % (int(time.time()), id)) time.sleep(10) send("", id, project, 102) #history content_result = Content.objects.filter(id=id, project=project, env=percent).order_by('-finish_time').values()[0] h = History( task_id=content_result['id'], type=content_result['type'], project=content_result['project'], env=content_result['env'], run_id=content_result['run_id'], version=content_result['version'], status=content_result['status'], deploy_time=content_result['deploy_time'], finish_time=content_result['finish_time'], create_user=content_result['create_user'], deploy_user=content_result['deploy_user'], ) h.save() elif stat == 'r': mysql_conn.save( "update task_content set finish_time = '%s', status = '105' where id = '%s'" % (int(time.time()), id)) time.sleep(10) rollback_history_id = Rollback.objects.filter(task_id=id).order_by('-start_time').values()[0]['id'] Rollback.objects.filter(id=rollback_history_id, task_id=id).update(finish_time=int(time.time())) send("", id, project, 105) exit() time.sleep(10)
def run(request, id, env): #env == percent print id,env user, email, usernum = request.user.username.split("|")[:] Content.objects.filter(id=id).update(env=env) ROOT = os.path.abspath(os.path.dirname(__file__)) version, ctl_id = "", 0 cursor = connection.cursor() sql = """ select tc.version, tp.ctl_id from task_content tc left join task_project tp on tc.project = tp.name where tc.id = '%s' and tp.gradation = '%s'; """ % (id, env) cursor.execute(sql) row = cursor.fetchone() version, ctl_id = row[0:] #result = subprocess.call("ctl-run -i %d -- -Version %s" % (ctl_id, version), shell=True, stderr=subprocess.STDOUT) result = os.popen("source /root/.bash_profile; /usr/local/ctier/pkgs/ctl-3.6.1/bin/ctl-run -i %d -- -Version %s" % (ctl_id, version)) #update or insert case status mongo_conn = Mongo( host = '127.0.0.1', database = 'release', table = 'percent', ) mongo_conn.remove( task_id = int(id) ) mongo_conn.insert( task_id = int(id), status = 'running', percent = 1 ) cursor = connection.cursor() sql = """ select tp.name, tp.group, tp.gradation, tc.status from task_content tc left join task_project tp on tc.project = tp.name and tc.env = tp.gradation where tc.id = '%s' """ % id cursor.execute(sql) row = cursor.fetchone() project, group, percent, status = row[0], row[1], row[2], row[3] run_id = "" print result for i in result: if re.search("^\[(\d+)\].*", i): run_id = re.search("^\[(\d+)\].*", i).group(1) print run_id Content.objects.filter(id=id).update( run_id=run_id, deploy_time = int(time.time()), deploy_user = user, status = 101, ) send(request, id, project, 101) print "nohup /usr/bin/python /data/python/web/autorelease/scripts/log_tail.py %s %s %s %s %s u >> /tmp/run.log &\n" % (id, run_id, project, group, percent) print time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(int(time.time()))) cmd = "nohup /usr/bin/python /data/python/web/autorelease/scripts/log_tail.py %s %s %s %s %s u >> /tmp/run.log &\n" % (id, run_id, project, group, percent) f = open("/tmp/task", "a") f.write(cmd) f.close() # subprocess.call( # "nohup python %s/../scripts/log_tail.py %s %s %s %s %s u >/dev/null 2>&1 &" % (ROOT, id, run_id, project, group, percent), # shell=True, # stdout=open('/dev/null', 'w'), # stderr=subprocess.STDOUT # ) #os.system("nohup python %s/../scripts/log_tail.py %s %s %s %s %s u >/dev/null 2>&1 &" % (ROOT, id, run_id, project, group, percent)) return HttpResponseRedirect("/task/view/%s?m=1&p=%s" % (id, project))