Ejemplo n.º 1
0
    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"])
Ejemplo n.º 2
0
    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"
Ejemplo n.º 3
0
 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()
Ejemplo n.º 4
0
 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"