from model import model_ora request_data = {'timestamp': '222', 'type': 'oop_relations', 'get_time': '', 'oop_name': 'INST-TOD-IBEAVE'} response = {} instance_name = request_data['oop_name'] center_ips = request_data['center_ips'] if 'center_ips' in request_data else None oop_left, oop_right = [], [] if center_ips is None: oop_left = model_ora.get_left_business_accord_instance(instance_name) oop_right = model_ora.get_right_business_accord_instance(instance_name) else: # 需要测试实现方法 oop_left = model_ora.get_left_business_accord_instance_and_ips(instance_name, center_ips) oop_right = model_ora.get_right_business_accord_instance_and_ips(instance_name, center_ips) try: oop_left_set = [unicode(item[0], 'utf-8') for item in oop_left] oop_right_set = [unicode(item[0], 'utf-8') for item in oop_right] oop_left_json, oop_right_json = [], [] for item in oop_left_set: tmp = dict({ 'services_name': item, 'services_index': oop_left_set.index(item) }) oop_left_json.append(tmp) for item in oop_right_set: tmp = dict({ 'services_name': item,
def POST(self): request_data = eval(web.input().keys()[0])['request'] print request_data request_type = utils.s(request_data['type']) response = utils.generate_response_header(request_data) if request_type == 'get_ip_service': pass elif request_type == 'business_relations': business, ip_insts = Alert.preprocess_request_data(request_data) ips = list(set([ip[0] for ip in ip_insts])) insts_to_business = list(set([ip[1] for ip in ip_insts])) if business.find(',') != -1: business = business.split(',')[0] right_business, left_business = [], [] center_business_json, left_business_json, right_business_json = [], [], [] inst_to_ips_dict = {} if len(ips) != 0: for item in ip_insts: if item[1] in inst_to_ips_dict: inst_to_ips_dict[item[1]].add(item[0]) else: inst_to_ips_dict[item[1]] = set() inst_to_ips_dict[item[1]].add(item[0]) if len(insts_to_business) > 1: left_business = model_ora.get_left_business_accord_instances_and_ips(insts_to_business, ips) right_business = model_ora.get_right_business_accord_instances_and_ips(insts_to_business, ips) else: left_business = model_ora.get_left_business_accord_instance_and_ips(insts_to_business[0], ips) right_business = model_ora.get_right_business_accord_instance_and_ips(insts_to_business[0], ips) else: insts_to_business = model_ora.get_all_instances_accord_busi(business) left_business = model_ora.get_left_business(business) right_business = model_ora.get_right_business(business) all_businesses = list( set(list(set(item[0] for item in right_business)) + list(set(item[0] for item in left_business)))) alert_businesses, alert_instances = map(lambda x: list(set(x)), model_reporter.get_alert_businesses_insts()) busi_alert_dict = {} inst_alert_dict = {} for busi in all_businesses: if busi in alert_businesses: busi_alert_dict.update({busi: True}) for inst in insts_to_business: if inst in alert_instances: inst_alert_dict.update({inst: True}) right_business_set = list(set([unicode(item[0], 'utf-8') for item in right_business])) left_business_set = list(set([unicode(item[0], 'utf-8') for item in left_business])) for item in left_business: try: oop = item[1] tmp = { 'services_name': item[0], 'services_next': item[1], 'services_index': insts_to_business.index(item[1]) } if tmp['services_name'] in busi_alert_dict: tmp.update({'alert': True}) left_business_json.append(tmp) except: pass for item in right_business: try: tmp = { 'oop_name': item[1], 'oop_next': unicode(item[0], 'utf-8'), 'oop_index': right_business_set.index(unicode(item[0], 'utf-8')) } if tmp['oop_next'] == u'': continue if tmp['oop_name'] in inst_alert_dict: tmp.update({'alert': True}) if tmp['oop_name'] in inst_to_ips_dict: tmp.update({'center_ips': list(inst_to_ips_dict[tmp['oop_name']])}) center_business_json.append(tmp) except: pass for item in right_business_set: try: tmp = { 'services_name': item, 'services_index': right_business_set.index(item) } if tmp['services_name'] in busi_alert_dict: tmp.update({'alert': True}) right_business_json.append(tmp) except: pass if len(center_business_json) == 0: for i, item in enumerate(insts_to_business): tmp = { 'oop_name': item, 'oop_next': '', 'oop_index': i } center_business_json.append(tmp) data = { 'business_left': left_business_json, 'business_center': { 'services_name': business, 'service_data': center_business_json }, 'business_right': right_business_json} response.update({ 'data': data, 'result': 'success', 'services_name': business, 'message': 'OK' }) elif request_type == 'oop_relations': instance_name = request_data['oop_name'] center_ips = request_data['center_ips'] if 'center_ips' in request_data else None oop_left, oop_right = [], [] if center_ips is None: oop_left = model_ora.get_left_business_accord_instance(instance_name) oop_right = model_ora.get_right_business_accord_instance(instance_name) else: # 需要测试实现方法 oop_left = model_ora.get_left_business_accord_instance_and_ips(instance_name, center_ips) oop_right = model_ora.get_right_business_accord_instance_and_ips(instance_name, center_ips) try: oop_left_set = [unicode(item[0], 'utf-8') for item in oop_left] oop_right_set = [unicode(item[0], 'utf-8') for item in oop_right] oop_left_json, oop_right_json = [], [] for item in oop_left_set: tmp = dict({ 'services_name': item, 'services_index': oop_left_set.index(item) }) oop_left_json.append(tmp) for item in oop_right_set: tmp = dict({ 'services_name': item, 'services_index': oop_right_set.index(item)} ) oop_right_json.append(tmp) if string.lower('-'.join([instance_name.split('-')[0], instance_name.split('-')[-1]])) == 'inst-db': oop_right_json = [] response.update({ 'data': { 'oop_left': oop_left_json, 'oop_right': oop_right_json }, 'result': 'success', 'message': 'OK' }) except: pass elif request_type == 'oop_ip_list': instance_name = request_data['oop_name'] business_name = request_data['business_name'] # 如果center_ips不是空,则需要将不再center_ips中的ips都要剔除 center_ips = set(request_data['center_ips']) if 'center_ips' in request_data else None instance_infos = [] try: instance_infos = model_ora.get_detail_info_of_instance_to_business(instance_name, business_name) if center_ips is not None: for item in instance_infos: if item['ip_address'] in center_ips: instance_infos.remove(item) response.update({ 'result': 'success', 'data': instance_infos, 'message': 'OK' }) except Exception, e: response.update({ 'result': 'fail', 'message': e.message }) pass