示例#1
0
    def get_groups_and_services(self, tenant, region, query=""):
        groups = group_repo.get_tenant_region_groups(tenant.tenant_id, region,
                                                     query)
        services = service_repo.get_tenant_region_services(
            region, tenant.tenant_id).values("service_id", "service_cname",
                                             "service_alias")
        service_id_map = {s["service_id"]: s for s in services}
        service_group_relations = group_service_relation_repo.get_service_group_relation_by_groups(
            [g.ID for g in groups])
        service_group_map = {
            sgr.service_id: sgr.group_id
            for sgr in service_group_relations
        }
        group_services_map = dict()
        for k, v in service_group_map.iteritems():
            service_list = group_services_map.get(v, None)
            service_info = service_id_map.get(k, None)
            if service_info:
                if not service_list:
                    group_services_map[v] = [service_info]
                else:
                    service_list.append(service_info)
                service_id_map.pop(k)

        result = []
        for g in groups:
            bean = dict()
            bean["group_id"] = g.ID
            bean["group_name"] = g.group_name
            bean["service_list"] = group_services_map.get(g.ID)
            result.insert(0, bean)

        return result
示例#2
0
 def post(self, request, team_id, region_name, *args, **kwargs):
     serializers = TeamAppsCloseSerializers(data=request.data)
     serializers.is_valid(raise_exception=True)
     service_id_list = serializers.data.get("service_ids", None)
     services = service_repo.get_tenant_region_services(self.region_name, self.team.tenant_id)
     if not services:
         return Response(None, status=200)
     service_ids = services.values_list("service_id", flat=True)
     if service_id_list:
         service_ids = list(set(service_ids) & set(service_id_list))
     code, msg = app_manage_service.batch_action(self.region_name, self.team, self.user, "stop", service_ids, None,
                                                 self.oauth_instance)
     if code != 200:
         raise ServiceHandleException(status_code=code, msg="batch manage error", msg_show=msg)
     return Response(None, status=200)
示例#3
0
    def get_undependencies(self, tenant, service):

        # 打开对内端口才能被依赖
        services = service_repo.get_tenant_region_services(service.service_region,
                                                           tenant.tenant_id).exclude(service_id=service.service_id)
        not_dependencies = []
        dep_services = dep_relation_repo.get_service_dependencies(tenant.tenant_id, service.service_id)
        dep_service_ids = [dep.dep_service_id for dep in dep_services]
        for s in services:
            # 查找打开内部访问的组件
            open_inner_services = port_repo.get_service_ports(tenant.tenant_id, s.service_id).filter(is_inner_service=True)
            if open_inner_services:
                if s.service_id not in dep_service_ids:
                    not_dependencies.append(s)
        return not_dependencies