def CommandExecute(request): if request.is_websocket(): global username, role, clientip username = request.user.username try: role = request.user.userprofile.role except: role = 'none' clientip = request.META['REMOTE_ADDR'] for postdata in request.websocket: if not postdata: break data = json.loads(postdata) logger.info('%s is requesting. %s 执行参数:%s' % (clientip, request.get_full_path(), data)) #request.websocket.send(json.dumps(data)) ### step one ## info_one = {} info_one['step'] = 'one' request.websocket.send(json.dumps(info_one)) #time.sleep(2) ### final step ### info_final = {} info_final['step'] = 'final' arglist = ["runas=%s" % data['exe_user']] arglist.append(data['arguments']) commandexe = Command( data['target'], data['function'], arglist, data['expr_form'], ) if data['function'] == 'test.ping': info_final['results'] = commandexe.TestPing() elif data['function'] == 'cmd.run': info_final['results'] = commandexe.CmdRun() elif data['function'] == 'state.sls': info_final['results'] = commandexe.StateSls(data['arguments']) #logger.info(json.dumps(info_final)) request.websocket.send(json.dumps(info_final)) ### close websocket ### request.websocket.close()
def CommandRestart(request): if request.is_websocket(): global username, role, clientip username = request.user.username try: role = request.user.userprofile.role except: role = 'none' clientip = request.META['REMOTE_ADDR'] logger.info(dir(request.websocket)) #message = request.websocket.wait() for postdata in request.websocket: #logger.info(type(postdata)) data = json.loads(postdata) ### step one ### info_one = {} info_one['step'] = 'one' info_one['project'] = data['project'] info_one['minion_id'] = data['minion_id'] request.websocket.send(json.dumps(info_one)) logger.info('%s is requesting. %s 执行参数:%s' % (clientip, request.get_full_path(), data)) #results = [] ### final step ### info_final = {} info_final['step'] = 'final' project = data['project'] restart = tomcat_project.objects.filter( project=project).first().script if restart == '': arg = "/web/%s/bin/restart.sh" % project else: arg = "%s restart" % restart #logger.info(restart) arglist = ["runas=tomcat"] arglist.append(arg) logger.info("重启参数:%s" % arglist) commandexe = Command(data['minion_id'], 'cmd.run', arglist) info_final['result'] = commandexe.CmdRun()[data['minion_id']] request.websocket.send(json.dumps(info_final)) ### close websocket ### request.websocket.close()
def DeployExe(request): global username, role, clientip username = request.user.username try: role = request.user.userprofile.role except: role = 'none' clientip = request.META['REMOTE_ADDR'] if request.is_websocket(): for postdata in request.websocket: logger.info('%s is requesting. %s 执行参数:%s' % (clientip, request.get_full_path(), postdata)) #logger.info(type(postdata)) data = json.loads(postdata) ### step one ### info_one = {} info_one['step'] = 'one' request.websocket.send(json.dumps(info_one)) time.sleep(1) ### final step ### info_final = {} info_final['step'] = 'final' info_final['minion_all'] = len(data['minion_id']) info_final['minion_count'] = 0 #set timeout for specific module if data['module'] == 'init': timeout = 600 elif data['module'] == 'tomcat': timeout = 1200 elif data['module'] == 'php': timeout = 1800 else: timeout = 300 #execute deploy module for minion_id in data['minion_id']: info_final['minion_id'] = minion_id info_final['module'] = data['module'] info_final['project'] = data['project'] info_final['result'] = "" request.websocket.send(json.dumps(info_final)) logger.info('部署参数:%s' % info_final) info_final['minion_count'] += 1 if data['module'] == 'tomcat': commandexe = Command('WTT_100_109', 'cmd.run', '/srv/shell/install_tomcat.sh %s %s' % (minion_id, data['project']), 'glob', timeout=timeout) info_final['result'] = commandexe.CmdRun()['WTT_100_109'] logger.info("%s 部署完成。" % data['project']) else: commandexe = Command(minion_id, 'state.sls', data['module'], 'glob', timeout=timeout) info_final['result'] = commandexe.StateSls()[minion_id] logger.info("%s 部署完成。" % data['module']) request.websocket.send(json.dumps(info_final))