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!')
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!')
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, })
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), } )