Exemple #1
0
def GetProjectActive(request):
    if request.method == 'POST':
        clientip = getIp(request)
        username = request.user.username
        try:
            role = request.user.userprofile.role
        except:
            role = 'none'

        if not username:
            logger.info('user: 用户名未知 | [POST]%s is requesting. %s' %
                        (clientip, request.get_full_path()))
            return HttpResponseServerError("用户名未知!")

        projects = getProjects(request, "execute")  #获取项目

        logger.info('%s is requesting %s' %
                    (clientip, request.get_full_path()))

        projectlist = []
        for project in projects:
            tmpdict = {}
            tmpdict['envir'] = project.get_envir_display()
            tmpdict['product'] = project.get_product_display()
            tmpdict['project'] = project.get_project_display()
            tmpdict['server_type'] = project.get_server_type_display()
            tmpdict['svn'] = project.svn
            tmpdict['minion_id'] = [
                minion.minion_id
                for minion in project.minion_id.filter(status=1).all()
            ]
            projectlist.append(tmpdict)
        #logger.info(projectlist)
        return HttpResponse(json.dumps(projectlist))
    elif request.method == 'GET':
        return HttpResponse('You get nothing!')
    else:
        return HttpResponse('nothing!')
Exemple #2
0
def GetServersRecords(request):
    if request.method == 'GET':
        return HttpResponse('You get nothing!')
    elif request.method == 'POST':
        clientip = getIp(request)
        username = request.user.username
        try:
            role = request.user.userprofile.role
        except:
            role = 'none'
        if not username:
            logger.info('user: 用户名未知 | [POST]%s is requesting. %s' %
                        (clientip, request.get_full_path()))
            return HttpResponseServerError("用户名未知!")
        logger.info('[POST]%s is requesting. %s' %
                    (clientip, request.get_full_path()))

        projects = []

        try:
            data = json.loads(request.body)
            logger.info(data)

            try:
                projects = getProjects(request, "read", data)  #获取项目
                #authoritys = request.user.userprofile.servers.filter(read=1).all()
                #for authority in authoritys:
                #    projects += [ project for project in authority.project.all().order_by('product')]
            except:
                projects = []

            #projects = project_t.objects.filter(envir__in=data['envir'], product__in=data['product'], project__in=data['project'], customer__in=data['customer'], server_type__in=data['server_type']).all().order_by('product')
            #authoritys = request.user.userprofile.servers.filter(read=1).all()
            #for authority in authoritys:
            #    projects += [ project for project in authority.project.filter(envir__in=data['envir'], product__in=data['product'], project__in=data['project'], customer__in=data['customer'], server_type__in=data['server_type']).all().order_by('product')]
        except Exception as e:
            logger.error(str(e))
            projects = []

        servers_list = []
        return_list = []

        for project in projects:  #将项目数据循环获取
            if project.status == 0:
                continue  #禁用的项目不做展示

            tmp_dict = {
                'project_id':
                project.id,
                'envir': (project.envir, project.get_envir_display()),
                'product': (project.product, project.get_product_display()),
                'project': (project.project, project.get_project_display()),
                'customer': (project.customer, project.get_customer_display()),
                'server_type':
                (project.server_type, project.get_server_type_display()),
                'password':
                decryptPasswd(request, project, project.password),
                'user':
                project.user,
                'port':
                project.port,
                'role':
                project.role,
                'url':
                project.url,
                'info':
                project.info,
                'minions': [],
            }

            for minion in project.minion_id.all():  #将服务器属性数据循环获取
                if minion.status == 0:
                    continue  #禁用的服务器不做展示

                ips = minion_ip_t.objects.filter(
                    minion_id=minion.minion_id).all()

                minion_tmp_dict = {
                    'minion_id': minion.minion_id,
                    'system': minion.system,
                    'user': minion.user,
                    'port': minion.port,
                    'service_type': minion.get_service_type_display(),
                    'password': decryptPasswd(request, project,
                                              minion.password),
                    'price': minion.price,
                    'provider': minion.get_provider_display(),
                    'info': minion.info,
                    'ip': [i.ip_addr for i in ips if i.status != 0]
                }

                #ip 刷选
                try:
                    data = json.loads(request.body)
                    ips = data['ips']
                except:
                    tmp_dict['minions'].append(minion_tmp_dict)
                else:
                    if len(ips) != 0:
                        for ip in ips:
                            if isStrinList(ip, minion_tmp_dict['ip']):
                                tmp_dict['minions'].append(minion_tmp_dict)
                                break
                    else:
                        tmp_dict['minions'].append(minion_tmp_dict)

            servers_list.append(tmp_dict)

        response = HttpResponse(json.dumps(servers_list))
        setCookies(request, response, setcookieV)

        return response
    else:
        return HttpResponse('nothing!')
Exemple #3
0
def Index(request):
    title = u'服务器-列表'
    clientip = getIp(request)
    username = request.user.username
    try:
        role = request.user.userprofile.role
    except:
        role = 'none'

    if not username:
        logger.info('user: 用户名未知 | [POST]%s is requesting. %s' %
                    (clientip, request.get_full_path()))
        return HttpResponseServerError("用户名未知!")

    projects = getProjects(request, "read")  #获取项目

    logger.info('%s is requesting %s' % (clientip, request.get_full_path()))

    items = {
        'item': [],
        'envir': [],
        'product': [],
        'project': [],
        'customer': [],
        'server_type': [],
    }

    #projects = project_t.objects.all()
    for project in projects:
        items['envir'].append((project.envir, project.get_envir_display()))
        items['item'].append(('_'.join([
            str(project.envir),
            str(project.product),
            str(project.project),
            str(project.server_type)
        ]), '_'.join([
            project.get_envir_display(),
            project.get_product_display(),
            project.get_project_display(),
            project.get_server_type_display()
        ])))
        items['product'].append(
            (project.product, project.get_product_display())),
        items['project'].append(
            (project.project, project.get_project_display())),
        items['customer'].append(
            (project.customer, project.get_customer_display())),
        items['server_type'].append(
            (project.server_type, project.get_server_type_display())),
    items['envir'] = list(set(items['envir']))
    items['product'] = list(set(items['product']))
    items['project'] = list(set(items['project']))
    items['customer'] = list(set(items['customer']))
    items['server_type'] = list(set(items['server_type']))

    return render(
        request, 'servers/index.html', {
            'title': title,
            'clientip': clientip,
            'role': role,
            'username': username,
            'items': items,
        })
Exemple #4
0
def remoteExe(request):
    title = u'升级中心-远程执行'
    clientip = getIp(request)
    username = request.user.username
    try:
        role = request.user.userprofile.role
    except:
        role = 'none'

    if not username:
        logger.info('user: 用户名未知 | [POST]%s is requesting. %s' %(clientip, request.get_full_path()))
        return HttpResponseServerError("用户名未知!")
    
    logger.info('%s is requesting %s' %(clientip, request.get_full_path()))

    projects = getProjects(request, 'execute') #用户必须具有执行权限才能升级

    items = []
    for project in projects:
        if project.svn_mst_alive == 0: continue
        if project.project != "caipiao": continue
        svn_customer_together = [ svn_customer.replace(' ', '') for svn_customer in project.svn_customer_together.split('\r\n') if svn_customer.strip() != "" ] if project.svn_customer_together else []
        svn_customer_single   = []
        svn_customer_all      = []
        svn_customer_tmp      = []

        for rec in svn_customer_together:
            for i in rec.strip().split(','):
                if i.strip() != '': svn_customer_tmp.append(i.strip())

        for rec in project.svn_customer.all():
            name = rec.name.replace(' ', '')
            tmpdict = {
                'id': rec.id,
                'name': name,
                'isrsynccode': rec.isrsynccode,
            }
            svn_customer_all.append(tmpdict)
            #if rec.isrsynccode == 0: continue
            if name not in svn_customer_tmp:
                    svn_customer_single.append(name)

        tmpdict = {
            'id':       project.id,
            'envir':    (project.envir, project.get_envir_display()),
            'product':  (project.product, project.get_product_display()),
            'project':  (project.project, project.get_project_display()),
            'customer': (project.customer, project.get_customer_display()),
            'server_type': (project.server_type, project.get_server_type_display()),
            'info':     project.info,
            'svn_master':  {
                'id':         project.svn_master.id,
                'name':       project.svn_master.name,
                'minion_id':  project.svn_master.minion_id.minion_id,
                'api':        project.svn_master.api,
                'gray_env':   [cmd.strip() for cmd in project.svn_master.gray_env.split('\r\n') if cmd.strip() != "" ],
                'online_env': [cmd.strip() for cmd in project.svn_master.online_env.split('\r\n') if cmd.strip() != "" ],
                'rollback':   [cmd.strip() for cmd in project.svn_master.rollback.split('\r\n') if cmd.strip() != "" ],
            },
            'svn_customer': {
                'in': svn_customer_all,
                'ex': svn_customer_single + svn_customer_together,
            },

        }

        items.append(tmpdict)

    return render(
        request,
        'upgrade/remote_exe.html',
        {
            'title':    title,
            'clientip': clientip,
            'role':     role,
            'username': username,
            'items':    json.dumps(items),
        }
    )