コード例 #1
0
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()
コード例 #2
0
ファイル: views.py プロジェクト: sadwebing/django_monitor
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()
コード例 #3
0
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))