def get(self, request, *args, **kwargs): # 获取单个tcp/udp策略信息 try: tcp_rule_id = request.GET.get("tcp_rule_id", None) # 判断参数 if not tcp_rule_id: return Response(general_message(400, "parameters are missing", "参数缺失"), status=400) tcpdomain = tcp_domain.get_service_tcpdomain_by_tcp_rule_id(tcp_rule_id) if tcpdomain: bean = tcpdomain.to_dict() service = service_repo.get_service_by_service_id(tcpdomain.service_id) service_alias = service.service_cname if service else '' group_name = '' g_id = 0 if service: gsr = group_service_relation_repo.get_group_by_service_id(service.service_id) if gsr: group = group_repo.get_group_by_id(int(gsr.group_id)) group_name = group.group_name if group else '' g_id = int(gsr.group_id) bean.update({"service_alias": service_alias}) bean.update({"group_name": group_name}) bean.update({"g_id": g_id}) result = general_message(200, "success", "查询成功", bean=bean) else: bean = dict() result = general_message(200, "success", "查询成功", bean=bean) except Exception as e: logger.exception(e) result = error_message(e.message) return Response(result, status=result["code"])
def update_tcpdomain(self, tenant, user, service, end_point, container_port, tcp_rule_id, protocol, type, rule_extensions, default_ip): ip = end_point.split(":")[0] ip.replace(' ', '') port = end_point.split(":")[1] data = dict() data["service_id"] = service.service_id data["container_port"] = int(container_port) if default_ip != ip: data["ip"] = ip data["port"] = int(port) data["tcp_rule_id"] = tcp_rule_id if rule_extensions: data["rule_extensions"] = rule_extensions try: # 给数据中心传送数据修改策略 region_api.updateTcpDomain(service.service_region, tenant.tenant_name, data) except region_api.CallApiError as e: if e.status != 404: raise e region = region_repo.get_region_by_region_name(service.service_region) # 先删除再添加 service_tcp_domain = tcp_domain.get_service_tcpdomain_by_tcp_rule_id( tcp_rule_id) service_tcp_domain.delete() domain_info = dict() domain_info["tcp_rule_id"] = tcp_rule_id domain_info["service_id"] = service.service_id domain_info["service_name"] = service.service_alias domain_info["service_alias"] = service.service_cname domain_info["create_time"] = datetime.datetime.now().strftime( '%Y-%m-%d %H:%M:%S') domain_info["container_port"] = int(container_port) domain_info["tenant_id"] = tenant.tenant_id domain_info["protocol"] = protocol domain_info["end_point"] = end_point domain_info["type"] = type rule_extensions_str = "" if rule_extensions: # 拼接字符串,存入数据库 for rule in rule_extensions: last_index = len(rule_extensions) - 1 if last_index == rule_extensions.index(rule): rule_extensions_str += rule["key"] + ":" + rule["value"] continue rule_extensions_str += rule["key"] + ":" + rule["value"] + "," domain_info["region_id"] = region.region_id tcp_domain.add_service_tcpdomain(**domain_info) return 200, u"success"
def unbind_tcpdomain(self, tenant, region, tcp_rule_id): service_tcp_domain = tcp_domain.get_service_tcpdomain_by_tcp_rule_id( tcp_rule_id) if not service_tcp_domain: raise ErrNotFoundStreamDomain data = dict() data["tcp_rule_id"] = tcp_rule_id try: # 给数据中心传送数据删除策略 region_api.unbindTcpDomain(region, tenant.tenant_name, data) except region_api.CallApiError as e: if e.status != 404: raise e service_tcp_domain.delete()
def unbind_tcpdomain(self, tenant, service, tcp_rule_id): service_tcp_domain = tcp_domain.get_service_tcpdomain_by_tcp_rule_id(tcp_rule_id) if not service_tcp_domain: return 404, u"策略不存在" data = dict() data["tcp_rule_id"] = tcp_rule_id try: # 给数据中心传送数据删除策略 region_api.unbindTcpDomain(service.service_region, tenant.tenant_name, data) except region_api.CallApiError as e: if e.status != 404: raise e service_tcp_domain.delete() return 200, u"success"