Ejemplo n.º 1
0
def CommandDeploy(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()

        #配置文件目录
        conf_dir = "/srv/salt/nginx/files"

        for postdata in request.websocket:
            if not postdata:
                break
            #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))

            ### final step ###
            info_final = {}
            info_final['step'] = 'final'

            commandexe = Command(data['minion_id'],
                                 'state.sls',
                                 expr_form='list')

            #同步配置文件

            info_final['results'] = commandexe.StateSls('nginx.conf')

            #reload服务
            info_final['results'] = commandexe.StateSls('nginx.reload')
            #info_final['results'] = dict(info_final['results'], **commandexe.StateSls('nginx.reload'))

            request.websocket.send(json.dumps(info_final))
        ### close websocket ###
        request.websocket.close()
Ejemplo n.º 2
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()
Ejemplo n.º 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))