Exemple #1
0
    def get(self, request, *args, **kwargs):
        """插件版本信息展示"""
        result = {}
        try:

            page = request.GET.get("page", 1)
            page_size = request.GET.get("page_size", 8)
            region = self.request.COOKIES.get('region')
            if not region:
                return JsonResponse(general_message(404, "region not specify",
                                                    "数据中心未指定"),
                                    status=404)
            pbvs = plugin_svc.get_tenant_plugin_versions(
                region, self.tenant, self.plugin_id)
            paginator = JuncheePaginator(pbvs, int(page_size))
            show_pbvs = paginator.page(int(page))
            update_status_thread = threading.Thread(
                target=plugin_svc.update_plugin_build_status,
                args=(region, self.tenant))
            update_status_thread.start()
            data = [pbv.to_dict() for pbv in show_pbvs]
            result = general_message(200,
                                     "success",
                                     "查询成功",
                                     list=data,
                                     current_page=int(page),
                                     next_page=int(page) + 1)
        except Exception as e:
            logger.exception(e)
            result = error_message()
        return JsonResponse(result, status=result["code"])
 def get(self, request, *args, **kwargs):
     context = self.get_context()
     context["tenantName"] = self.tenantName
     context['serviceAlias'] = self.serviceAlias
     date_scope = request.GET.get("datescope", "7")
     per_page = request.GET.get("perpage", "10")
     page = request.GET.get("page", "1")
     context["date_scope"] = date_scope
     context["curpage"] = page
     context["per_page"] = per_page
     try:
         tenant_id = self.tenant.tenant_id
         diffDay = int(date_scope)
         if diffDay > 0:
             end = datetime.datetime.now()
             endTime = end.strftime("%Y-%m-%d %H:%M:%S")
             start = datetime.date.today() - datetime.timedelta(
                 days=int(date_scope))
             startTime = start.strftime('%Y-%m-%d') + " 00:00:00"
             recharges = TenantRecharge.objects.filter(
                 tenant_id=self.tenant.tenant_id,
                 time__range=(startTime, endTime)).order_by("-time")
         else:
             recharges = TenantRecharge.objects.filter(
                 tenant_id=self.tenant.tenant_id).order_by("-time")
         paginator = JuncheePaginator(recharges, int(per_page))
         tenantRecharges = paginator.page(int(page))
         context["rechargeTypeMap"] = RechargeTypeMap
         context["tenantRecharges"] = tenantRecharges
     except Exception as e:
         logger.exception(e)
     return TemplateResponse(self.request, "www/recharge-list.html",
                             context)
Exemple #3
0
    def get_service_event(self, tenant, service, page, page_size,
                          start_time_str):
        # 前端传入时间到分钟,默认会加上00,这样一来刚部署的应用的日志无法查询到,所有将当前时间添加一分钟
        if start_time_str:
            start_time = str_to_time(start_time_str, fmt="%Y-%m-%d %H:%M")
            start_time_str = time_to_str(start_time +
                                         datetime.timedelta(minutes=1))

        events = event_repo.get_events_before_specify_time(
            tenant.tenant_id, service.service_id, start_time_str)
        event_paginator = JuncheePaginator(events, int(page_size))
        total = event_paginator.count
        page_events = event_paginator.page(page)
        has_next = True
        if page_size * page >= total:
            has_next = False
        self.__sync_region_service_event_status(service.service_region,
                                                tenant.tenant_name,
                                                page_events)

        re_events = []
        for event in list(page_events):
            event_re = event.to_dict()
            # codeVersion = "版本:4c042b9 上传者:黄峻贤 Commit:Merge branch 'developer' into 'test'"
            version_info = self.wrapper_code_version(service, event)
            if version_info:
                event_re["code_version"] = version_info
            type_cn = self.translate_event_type(event.type)
            event_re["type_cn"] = type_cn
            re_events.append(event_re)
        return re_events, has_next
    def get_current_region_service_events(self,region, team, page, page_size):
        events = event_repo.get_specified_region_events(team.tenant_id,region)
        paginator = JuncheePaginator(events, int(page_size))
        show_events = paginator.page(int(page))
        service_ids = [e.service_id for e in show_events]
        services = service_repo.get_services_by_service_ids(*service_ids)
        id_service_map = {s.service_id: s for s in services}
        event_list = []
        try:
            self.__sync_region_service_event_status(region, team.tenant_name, show_events, False)
        except Exception as e:
            logger.exception("synchorized services events error !")

        for event in show_events:
            result = event.to_dict()
            result["nick_name"] = result["user_name"]
            result["type_cn"] = result["user_name"]
            s = id_service_map.get(event.service_id, None)
            if s:
                result["service_alias"] = s.service_alias
                result["service_cname"] = s.service_cname
            else:
                if event.type == "truncate":
                    logger.debug("========> {0}".format(event.message))
                    result["service_alias"] = event.message
                    result["service_cname"] = event.message
            event_list.append(result)

        return event_list
Exemple #5
0
    def get_service_mnt_details(self, tenant, service, volume_types, page=1, page_size=20):

        all_mnt_relations = mnt_repo.get_service_mnts_filter_volume_type(tenant.tenant_id, service.service_id, volume_types)
        total = len(all_mnt_relations)
        mnt_paginator = JuncheePaginator(all_mnt_relations, int(page_size))
        mnt_relations = mnt_paginator.page(page)
        mounted_dependencies = []
        if mnt_relations:
            for mount in mnt_relations:
                dep_service = service_repo.get_service_by_service_id(mount.dep_service_id)
                if dep_service:
                    gs_rel = group_service_relation_repo.get_group_by_service_id(dep_service.service_id)
                    group = None
                    if gs_rel:
                        group = group_repo.get_group_by_pk(tenant.tenant_id, service.service_region, gs_rel.group_id)
                    dep_volume = volume_repo.get_service_volume_by_name(dep_service.service_id, mount.mnt_name)
                    if dep_volume:
                        mounted_dependencies.append({
                            "local_vol_path": mount.mnt_dir,
                            "dep_vol_name": dep_volume.volume_name,
                            "dep_vol_path": dep_volume.volume_path,
                            "dep_vol_type": dep_volume.volume_type,
                            "dep_app_name": dep_service.service_cname,
                            "dep_app_group": group.group_name if group else '未分组',
                            "dep_vol_id": dep_volume.ID,
                            "dep_group_id": group.ID if group else -1,
                            "dep_app_alias": dep_service.service_alias
                        })
        return mounted_dependencies, total
Exemple #6
0
 def get(self, request, *args, **kwargs):
     """
     获取本地市场应用
     ---
     parameters:
         - name: scope
           description: 范围
           required: false
           type: string
           paramType: query
         - name: app_name
           description: 应用名字
           required: false
           type: string
           paramType: query
         - name: page
           description: 当前页
           required: true
           type: string
           paramType: query
         - name: page_size
           description: 每页大小,默认为10
           required: true
           type: string
           paramType: query
     """
     scope = request.GET.get("scope", None)
     app_name = request.GET.get("app_name", None)
     page = request.GET.get("page", 1)
     page_size = request.GET.get("page_size", 10)
     try:
         apps = market_app_service.get_visiable_apps(
             self.tenant, scope, app_name).order_by("-install_number",
                                                    "-is_official")
         paginator = JuncheePaginator(apps, int(page_size))
         show_apps = paginator.page(int(page))
         app_list = []
         for app in show_apps:
             min_memory = self.__get_service_group_memory(
                 app.app_template, app.group_name)
             export_status = export_service.get_export_record_status(
                 self.tenant.enterprise_id, app)
             app_bean = app.to_dict()
             app_bean["min_memory"] = min_memory
             app_bean["export_status"] = export_status
             app_bean.pop("app_template")
             app_list.append(app_bean)
         result = general_message(200,
                                  "success",
                                  "查询成功",
                                  list=app_list,
                                  total=paginator.count,
                                  next_page=int(page) + 1)
     except Exception as e:
         logger.exception(e)
         result = error_message()
     return Response(result, status=result["code"])
    def get_service_unmnt_details(self, tenant, service, service_ids, page,
                                  page_size):

        services = service_repo.get_services_by_service_ids(*service_ids)
        current_tenant_services_id = service_ids
        # 已挂载的服务路径
        dep_mnt_names = mnt_repo.get_service_mnts(
            tenant.tenant_id, service.service_id).values_list('mnt_name',
                                                              flat=True)
        # 当前未被挂载的共享路径
        service_volumes = volume_repo.get_services_volumes(
            current_tenant_services_id).filter(
                volume_type__in=[self.SHARE, self.CONFIG]).exclude(
                    service_id=service.service_id).exclude(
                        volume_name__in=dep_mnt_names)
        # 只展示无状态的服务组件(有状态服务的存储类型为config-file也可)
        logger.debug('----------volumes----->{0}'.format(
            type(service_volumes)))
        volumes = list(service_volumes)
        for volume in volumes:
            service_obj = service_repo.get_service_by_service_id(
                volume.service_id)
            if service_obj:
                if service_obj.extend_method != "stateless" and volume.volume_type != "config-file":
                    volumes.remove(volume)
        total = len(volumes)
        volume_paginator = JuncheePaginator(volumes, int(page_size))
        page_volumes = volume_paginator.page(page)
        un_mount_dependencies = []
        for volume in page_volumes:
            gs_rel = group_service_relation_repo.get_group_by_service_id(
                volume.service_id)
            group = None
            if gs_rel:
                group = group_repo.get_group_by_pk(tenant.tenant_id,
                                                   service.service_region,
                                                   gs_rel.group_id)
            un_mount_dependencies.append({
                "dep_app_name":
                services.get(service_id=volume.service_id).service_cname,
                "dep_app_group":
                group.group_name if group else '未分组',
                "dep_vol_name":
                volume.volume_name,
                "dep_vol_path":
                volume.volume_path,
                "dep_vol_type":
                volume.volume_type,
                "dep_vol_id":
                volume.ID,
                "dep_group_id":
                group.ID if group else -1,
                "dep_app_alias":
                services.get(service_id=volume.service_id).service_alias
            })
        return un_mount_dependencies, total
Exemple #8
0
    def get(self, request, *args, **kwargs):
        """
        获取企业下用户信息列表
        """
        try:
            enterprise_id = request.GET.get("enterprise_id", None)
            page_num = int(request.GET.get("page_num", 1))
            page_size = int(request.GET.get("page_size", 5))
            user_name = request.GET.get("user_name", None)
            if not enterprise_id:
                enter = console_enterprise_service.get_enterprise_by_id(enterprise_id=self.user.enterprise_id)
                enterprise_id = enter.enterprise_id
            enter = console_enterprise_service.get_enterprise_by_id(enterprise_id=enterprise_id)
            if user_name:
                euser = user_services.get_user_by_user_name(enterprise_id, user_name)
                list = []
                if not euser:
                    result = general_message("0000", "success", "查询成功", list=list, total=0)
                    return Response(result)
                result_map = dict()
                result_map["user_id"] = euser.user_id
                result_map["email"] = euser.email
                result_map["nick_name"] = euser.nick_name
                result_map["phone"] = euser.phone if euser.phone else "暂无"
                result_map["create_time"] = time_to_str(euser.create_time, "%Y-%m-%d %H:%M:%S")
                tenant_list = user_services.get_user_tenants(euser.user_id)
                result_map["tenants"] = tenant_list
                result_map["enterprise_alias"] = enter.enterprise_alias
                list.append(result_map)
                result = general_message("0000", "success", "查询成功", list=list, total=1)
                return Response(result)
            user_list = user_repo.get_user_by_enterprise_id(enterprise_id=enterprise_id)
            for user1 in user_list:
                if user1.nick_name == self.user.nick_name:
                    user_list.delete(user1)
            user_paginator = JuncheePaginator(user_list, int(page_size))
            users = user_paginator.page(int(page_num))
            list = []
            for user in users:
                result_map = dict()
                result_map["user_id"] = user.user_id
                result_map["email"] = user.email
                result_map["nick_name"] = user.nick_name
                result_map["phone"] = user.phone if user.phone else "暂无"
                result_map["create_time"] = time_to_str(user.create_time, "%Y-%m-%d %H:%M:%S")
                tenant_list = user_services.get_user_tenants(user.user_id)
                result_map["tenants"] = tenant_list
                result_map["enterprise_alias"] = enter.enterprise_alias
                list.append(result_map)

            result = general_message("0000", "success", "查询成功", list=list, total=user_paginator.count)

        except Exception as e:
            logger.debug(e)
            result = error_message()
        return Response(result)
Exemple #9
0
    def get(self, request, *args, **kwargs):
        """
        查询从公有云同步的应用
        ---
        parameters:
            - name: app_name
              description: 搜索的服务名
              required: false
              type: string
              paramType: query
            - name: is_complete
              description: 是否已下载
              required: false
              type: boolean
              paramType: query
            - name: page
              description: 当前页
              required: true
              type: string
              paramType: query
            - name: page_size
              description: 每页大小,默认为10
              required: true
              type: string
              paramType: query
        """
        page = request.GET.get("page", 1)
        page_size = request.GET.get("page_size", 10)
        app_name = request.GET.get("app_name", None)
        is_complete = request.GET.get("is_complete", None)
        try:
            if not self.user.is_sys_admin:
                return Response(general_message(403, "you are not admin",
                                                "无权限执行此操作"),
                                status=403)
            apps = market_app_service.get_all_goodrain_market_apps(
                app_name, is_complete)
            paginator = JuncheePaginator(apps, int(page_size))
            show_apps = paginator.page(int(page))
            app_list = []
            for app in show_apps:
                app_bean = app.to_dict()
                app_bean.pop("app_template")
                app_list.append(app_bean)

            result = general_message(200,
                                     "success",
                                     "查询成功",
                                     list=app_list,
                                     total=paginator.count,
                                     next_page=int(page) + 1)
        except Exception as e:
            logger.exception(e)
            result = error_message(e.message)
        return Response(result, status=result["code"])
Exemple #10
0
    def get_service_unmnt_details(self, tenant, service, service_ids, page,
                                  page_size, q):

        services = service_repo.get_services_by_service_ids(service_ids)
        current_tenant_services_id = service_ids
        # 已挂载的组件路径
        dep_mnts = mnt_repo.get_service_mnts(tenant.tenant_id,
                                             service.service_id)
        dep_volume_ids = [dep_mnt.volume_id for dep_mnt in dep_mnts]
        # 当前未被挂载的共享路径
        service_volumes = volume_repo.get_services_volumes(current_tenant_services_id) \
            .filter(volume_type__in=[self.SHARE, self.CONFIG]) \
            .exclude(service_id=service.service_id) \
            .exclude(ID__in=dep_volume_ids).filter(q)
        # 只展示无状态的组件(有状态组件的存储类型为config-file也可)
        volumes = list(service_volumes)
        copy_volumes = copy.copy(volumes)
        for volume in copy_volumes:
            service_obj = service_repo.get_service_by_service_id(
                volume.service_id)
            if service_obj:
                if is_state(service_obj.extend_method):
                    if volume.volume_type != "config-file":
                        volumes.remove(volume)
        total = len(volumes)
        volume_paginator = JuncheePaginator(volumes, int(page_size))
        page_volumes = volume_paginator.page(page)
        un_mount_dependencies = []
        for volume in page_volumes:
            gs_rel = group_service_relation_repo.get_group_by_service_id(
                volume.service_id)
            group = None
            if gs_rel:
                group = group_repo.get_group_by_pk(tenant.tenant_id,
                                                   service.service_region,
                                                   gs_rel.group_id)
            un_mount_dependencies.append({
                "dep_app_name":
                services.get(service_id=volume.service_id).service_cname,
                "dep_app_group":
                group.group_name if group else '未分组',
                "dep_vol_name":
                volume.volume_name,
                "dep_vol_path":
                volume.volume_path,
                "dep_vol_type":
                volume.volume_type,
                "dep_vol_id":
                volume.ID,
                "dep_group_id":
                group.ID if group else -1,
                "dep_app_alias":
                services.get(service_id=volume.service_id).service_alias
            })
        return un_mount_dependencies, total
 def get_user_msgs(self, user, page_num, page_size, msg_type, is_read):
     query = Q()
     if msg_type:
         query &= Q(msg_type=msg_type)
     if is_read is not None:
         query &= Q(is_read=is_read)
     msgs = msg_repo.get_user_all_msgs(user.user_id).filter(query)
     msg_paginator = JuncheePaginator(msgs, int(page_size))
     total = msg_paginator.count
     page_msgs = msg_paginator.page(page_num)
     return page_msgs, total
Exemple #12
0
    def get_service_unmount_volume_list(self, tenant, service, service_ids, page, page_size, is_config=False):
        """
        1. 获取租户下其他所有组件列表,方便后续进行名称的冗余
        2. 获取其他组件的所有可共享的存储
        3. 获取已经使用的存储,方便后续过滤
        4. 遍历存储,组装信息
        """

        for serviceID in service_ids:
            if serviceID == service.service_id:
                service_ids.remove(serviceID)
        services = service_repo.get_services_by_service_ids(service_ids)
        state_services = []  # 有状态组件
        for svc in services:
            if is_state(svc.extend_method):
                state_services.append(svc)
        state_service_ids = [svc.service_id for svc in state_services]

        current_tenant_services_id = service_ids
        # 已挂载的组件路径
        mounted = mnt_repo.get_service_mnts(tenant.tenant_id, service.service_id)
        mounted_ids = [mnt.volume_id for mnt in mounted]
        # 当前未被挂载的共享路径
        service_volumes = []
        # 配置文件无论组件是否是共享存储都可以共享,只需过滤掉已经挂载的存储;其他存储类型则需要考虑排除有状态组件的存储
        if is_config:
            service_volumes = volume_repo.get_services_volumes(current_tenant_services_id).filter(volume_type=self.CONFIG) \
                .exclude(ID__in=mounted_ids)
        else:
            service_volumes = volume_repo.get_services_volumes(current_tenant_services_id).filter(volume_type=self.SHARE) \
                .exclude(ID__in=mounted_ids).exclude(service_id__in=state_service_ids)
        # TODO 使用函数进行存储的排查,确定哪些存储不可以进行共享,哪些存储可以共享,而不是现在这样简单的提供一个self.SHARE

        total = len(service_volumes)
        volume_paginator = JuncheePaginator(service_volumes, int(page_size))
        page_volumes = volume_paginator.page(page)
        un_mount_dependencies = []
        for volume in page_volumes:
            gs_rel = group_service_relation_repo.get_group_by_service_id(volume.service_id)
            group = None
            if gs_rel:
                group = group_repo.get_group_by_pk(tenant.tenant_id, service.service_region, gs_rel.group_id)
            un_mount_dependencies.append({
                "dep_app_name": services.get(service_id=volume.service_id).service_cname,
                "dep_app_group": group.group_name if group else '未分组',
                "dep_vol_name": volume.volume_name,
                "dep_vol_path": volume.volume_path,
                "dep_vol_type": volume.volume_type,
                "dep_vol_id": volume.ID,
                "dep_group_id": group.ID if group else -1,
                "dep_app_alias": services.get(service_id=volume.service_id).service_alias
            })
        return un_mount_dependencies, total
Exemple #13
0
 def get(self, request, *args, **kwargs):
     """
     查询备份信息
     ---
     parameters:
         - name: tenantName
           description: 团队名称
           required: true
           type: string
           paramType: path
         - name: page
           description: 页码
           required: false
           type: string
           paramType: query
         - name: page_size
           description: 每页数量
           required: false
           type: string
           paramType: query
         - name: group_id
           description: 组ID
           required: true
           type: string
           paramType: query
     """
     try:
         group_id = request.GET.get("group_id", None)
         if not group_id:
             return Response(general_message(400, "group id is not found",
                                             "请指定需要查询的组"),
                             status=400)
         page = int(request.GET.get("page", 1))
         page_size = int(request.GET.get("page_size", 10))
         backups = groupapp_backup_service.get_group_back_up_info(
             self.tenant, self.response_region, group_id)
         is_configed = groupapp_backup_service.is_hub_and_sftp_info_configed(
         )
         paginator = JuncheePaginator(backups, int(page_size))
         backup_records = paginator.page(int(page))
         bean = {"is_configed": is_configed}
         result = general_message(
             200,
             "success",
             "查询成功",
             bean=bean,
             list=[backup.to_dict() for backup in backup_records],
             total=paginator.count)
     except Exception as e:
         logger.exception(e)
         result = error_message(e.message)
     return Response(result, status=result["code"])
    def get_services_events(self, page, page_size, create_time, status, team):

        query = Q()
        status = "success" if status == "complete" else status
        if team:
            query &= Q(tenant_id=team.tenant_id)
        if create_time:
            query &= Q(start_time__gte=create_time)
        if status:
            query &= Q(status=status)

        events = ServiceEvent.objects.filter(query).order_by("-ID")
        logger.debug(events.query)
        total = events.count()
        paginator = JuncheePaginator(events, int(page_size))
        show_events = paginator.page(int(page))
        service_ids = list(set([e.service_id for e in show_events]))
        team_ids = list(set([e.tenant_id for e in show_events]))
        teams = team_repo.get_team_by_team_ids(team_ids)
        services = service_repo.get_services_by_service_ids(service_ids)
        id_service_map = {s.service_id: s for s in services}
        id_team_map = {t.tenant_id: t for t in teams}
        # 数据中心对应的event
        region_events_map = {}
        for event in show_events:
            service = id_service_map.get(event.service_id, None)
            t = id_team_map.get(event.tenant_id, None)
            if service:
                event.service_cname = service.service_cname
                event.service_alias = service.service_alias
                event.team_name = t.tenant_name if t else None
                event.service_region = service.service_region
                # 处理数据中心对应的event
                if event.final_status == "" and not status:
                    region_events = region_events_map.get(
                        service.service_region, [])
                    if region_events:
                        region_events.append(event)
                    else:
                        region_events_map[service.service_region] = [event]
            else:
                event.service_cname = None
                event.service_alias = None
                event.team_name = None
                event.service_region = None
        if not status:
            # 从数据中心更新信息
            for region, events in region_events_map.iteritems():
                # 同步数据中心信息
                self.__sync_events(region, events)

        return show_events, total
    def get(self, request, *args, **kwargs):
        """
        插件构建历史信息展示
        ---
        parameters:
            - name: tenantName
              description: 租户名
              required: true
              type: string
              paramType: path
            - name: plugin_id
              description: 插件ID
              required: true
              type: string
              paramType: path
            - name: page
              description: 当前页
              required: true
              type: string
              paramType: query
            - name: page_size
              description: 每页大小,默认为8
              required: true
              type: string
              paramType: query
        """
        try:
            page = request.GET.get("page", 1)
            page_size = request.GET.get("page_size", 8)
            pbvs = plugin_version_service.get_plugin_versions(
                self.plugin.plugin_id)
            paginator = JuncheePaginator(pbvs, int(page_size))
            show_pbvs = paginator.page(int(page))

            update_status_thread = threading.Thread(
                target=plugin_version_service.update_plugin_build_status,
                args=(self.response_region, self.tenant))
            update_status_thread.start()

            data = [pbv.to_dict() for pbv in show_pbvs]
            result = general_message(200,
                                     "success",
                                     "查询成功",
                                     list=data,
                                     total=paginator.count,
                                     current_page=int(page),
                                     next_page=int(page) + 1)

        except Exception as e:
            logger.exception(e)
            result = error_message(e.message)
        return Response(result, status=result["code"])
Exemple #16
0
 def get(self, request, team_name, *args, **kwargs):
     """
     初始化团队和数据中心信息
     ---
     parameters:
         - name: team_name
           description: 团队别名
           required: true
           type: string
           paramType: path
         - name: page_num
           description: 页码
           required: false
           type: string
           paramType: query
         - name: page_size
           description: 每页数量
           required: false
           type: string
           paramType: query
     """
     try:
         # 判断角色
         identity_list = team_services.get_user_perm_identitys_in_permtenant(
             user_id=request.user.user_id, tenant_name=team_name)
         page_num = int(request.GET.get("page_num", 1))
         page_size = int(request.GET.get("page_size", 5))
         rt_list = []
         total = 0
         # 是管理员
         if "owner" or "admin" in identity_list:
             # 查询申请用户
             applicants = apply_repo.get_applicants(team_name=team_name)
             for applicant in applicants:
                 is_pass = applicant.is_pass
                 if is_pass == 0:
                     rt_list.append(applicant.to_dict())
             apc_paginator = JuncheePaginator(rt_list, int(page_size))
             total = apc_paginator.count
             page_aplic = apc_paginator.page(page_num)
             rt_list = [apc for apc in page_aplic]
         # 返回
         result = general_message(200,
                                  "success",
                                  "查询成功",
                                  list=rt_list,
                                  total=total)
     except Exception as e:
         logger.exception(e)
         result = error_message(e.message)
     return Response(result, status=result["code"])
Exemple #17
0
 def get_plugin_used_services(self, plugin_id, tenant_id, page, page_size):
     aprr = app_plugin_relation_repo.get_used_plugin_services(plugin_id)
     service_ids = [r.service_id for r in aprr]
     service_plugin_version_map = {r.service_id: r.build_version for r in aprr}
     services = service_repo.get_services_by_service_ids(*service_ids).filter(tenant_id=tenant_id)
     paginator = JuncheePaginator(services, int(page_size))
     show_apps = paginator.page(int(page))
     data = dict()
     for s in show_apps:
         data["service_id"] = s.service_id
         data["service_alias"] = s.service_alias
         data["service_cname"] = s.service_cname
         data["build_version"] = service_plugin_version_map[s.service_id]
     return data
Exemple #18
0
 def get(self, request, *args, **kwargs):
     """
     查询当前团队 数据中心下所有备份信息
     ---
     parameters:
         - name: tenantName
           description: 团队名称
           required: true
           type: string
           paramType: path
         - name: page
           description: 页码
           required: false
           type: string
           paramType: query
         - name: page_size
           description: 每页数量
           required: false
           type: string
           paramType: query
     """
     try:
         page = int(request.GET.get("page", 1))
         page_size = int(request.GET.get("page_size", 10))
         backups = groupapp_backup_service.get_all_group_back_up_info(
             self.tenant, self.response_region)
         paginator = JuncheePaginator(backups, int(page_size))
         backup_records = paginator.page(int(page))
         backup_list = list()
         if backup_records:
             for backup in backup_records:
                 backup_dict = backup.to_dict()
                 group_obj = group_repo.get_group_by_id(
                     backup_dict["group_id"])
                 if group_obj:
                     backup_dict["group_name"] = group_obj.group_name
                     backup_dict["is_delete"] = False
                 else:
                     backup_dict["group_name"] = "应用已删除"
                     backup_dict["is_delete"] = True
                 backup_list.append(backup_dict)
         result = general_message(200,
                                  "success",
                                  "查询成功",
                                  list=backup_list,
                                  total=paginator.count)
     except Exception as e:
         logger.exception(e)
         result = error_message(e.message)
     return Response(result, status=result["code"])
Exemple #19
0
    def get(self, request, *args, **kwargs):
        """
        获取所有租户信息
        ---
        parameters:
            - name: page_num
              description: 页码
              required: false
              type: string
              paramType: query
            - name: page_size
              description: 每页数量
              required: false
              type: string
              paramType: query

        """
        try:
            page = request.GET.get("page_num", 1)
            page_size = request.GET.get("page_size", 20)
            tenant_list = tenant_service.get_all_tenants()
            tenant_paginator = JuncheePaginator(tenant_list, int(page_size))
            tenants = tenant_paginator.page(int(page))
            tenants_num = Tenants.objects.count()
            allow_num = 9999999

            list = []

            for tenant in tenants:
                tenant_dict = {}
                user_list = tenant_service.get_tenant_users(
                    tenant["tenant_name"])
                tenant_dict["user_num"] = len(user_list)
                tenant_dict.update(tenant)
                list.append(tenant_dict)
            bean = {
                "total_tenant_num": allow_num,
                "cur_tenant_num": tenants_num
            }

            result = generate_result("0000",
                                     "success",
                                     "查询成功",
                                     bean=bean,
                                     list=list,
                                     total=tenant_paginator.count)
        except Exception as e:
            logger.exception(e)
            result = generate_error_result()
        return Response(result)
Exemple #20
0
    def get(self, request, *args, **kwargs):
        """
        应用事件动态
        ---
        parameters:
            - name: team_name
              description: 团队名
              required: true
              type: string
              paramType: path
            - name: page
              description: 页数(默认第一页)
              required: false
              type: string
              paramType: query
            - name: page_size
              description: 每页展示个数(默认3个)
              required: false
              type: string
              paramType: query
        """
        try:
            page = request.GET.get("page", 1)
            page_size = request.GET.get("page_size", 3)
            total = 0
            event_service_dynamic_list = service_event_dynamic.get_current_region_service_events(
                self.response_region, self.tenant)
            # event_service_dynamic_list = event_repo.get_evevt_by_tenant_id_region(self.tenant.tenant_id)
            event_service_list = []
            for event in event_service_dynamic_list:
                type_cn = event_service.translate_event_type(event["type"])
                event["type_cn"] = type_cn
                event_service_list.append(event)
            event_paginator = JuncheePaginator(event_service_list,
                                               int(page_size))
            event_page_list = event_paginator.page(page)
            total = event_paginator.count
            event_list = [event for event in event_page_list]
            result = general_message(200,
                                     'success',
                                     "查询成功",
                                     list=event_list,
                                     total=total)
            return Response(result, status=result["code"])

        except Exception as e:
            code = 500
            logger.exception(e)
            result = error_message(e.message)
            return Response(result, status=code)
Exemple #21
0
 def get(self, request, *args, **kwargs):
     """
     获取市场应用
     ---
     parameters:
         - name: scope
           description: 范围
           required: false
           type: string
           paramType: query
         - name: app_name
           description: 应用名字
           required: false
           type: string
           paramType: query
         - name: page
           description: 当前页
           required: true
           type: string
           paramType: query
         - name: page_size
           description: 每页大小,默认为10
           required: true
           type: string
           paramType: query
     """
     scope = request.GET.get("scope", None)
     app_name = request.GET.get("app_name", None)
     page = request.GET.get("page", 1)
     page_size = request.GET.get("page_size", 10)
     try:
         apps = market_app_service.get_visiable_apps(
             self.tenant, scope, app_name)
         paginator = JuncheePaginator(apps, int(page_size))
         show_apps = paginator.page(int(page))
         app_list = []
         for app in show_apps:
             app_bean = app.to_dict()
             app_bean.pop("app_template")
             app_list.append(app_bean)
         result = general_message(200,
                                  "success",
                                  "查询成功",
                                  list=app_list,
                                  total=paginator.count,
                                  next_page=int(page) + 1)
     except Exception as e:
         logger.exception(e)
         result = error_message()
     return Response(result, status=result["code"])
Exemple #22
0
    def get(self, request, *args, **kwargs):
        """
        查询备份信息
        ---
        parameters:
            - name: tenantName
              description: 团队名称
              required: true
              type: string
              paramType: path
            - name: page
              description: 页码
              required: false
              type: string
              paramType: query
            - name: page_size
              description: 每页数量
              required: false
              type: string
              paramType: query
            - name: group_id
              description: 组ID
              required: true
              type: string
              paramType: query
        """
        group_id = request.GET.get("group_id", None)
        if not group_id:
            return Response(general_message(400, "group id is not found",
                                            "请指定需要查询的组"),
                            status=400)
        page = int(request.GET.get("page", 1))
        page_size = int(request.GET.get("page_size", 10))

        backups = groupapp_backup_service.get_group_back_up_info(
            self.tenant, self.region_name, group_id)
        paginator = JuncheePaginator(backups, int(page_size))
        backup_records = paginator.page(int(page))
        obj_storage = EnterpriseConfigService(
            self.user.enterprise_id).get_cloud_obj_storage_info()
        bean = {"is_configed": obj_storage is not None}
        result = general_message(
            200,
            "success",
            "查询成功",
            bean=bean,
            list=[backup.to_dict() for backup in backup_records],
            total=paginator.count)
        return Response(result, status=result["code"])
    def get_service_unmnt_details(self, tenant, service, service_ids, page,
                                  page_size):

        services = service_repo.get_services_by_service_ids(*service_ids)
        current_tenant_services_id = service_ids
        # 已挂载的服务路径
        dep_mnt_names = mnt_repo.get_service_mnts(
            tenant.tenant_id, service.service_id).values_list('mnt_name',
                                                              flat=True)
        # 当前未被挂载的共享路径
        volumes = volume_repo.get_services_volumes(
            current_tenant_services_id).filter(volume_type=self.SHARE).exclude(
                service_id=service.service_id).exclude(
                    volume_name__in=dep_mnt_names)
        total = len(volumes)
        volume_paginator = JuncheePaginator(volumes, int(page_size))
        page_volumes = volume_paginator.page(page)
        un_mount_dependencies = []
        for volume in page_volumes:
            gs_rel = group_service_relation_repo.get_group_by_service_id(
                volume.service_id)
            group = None
            if gs_rel:
                group = group_repo.get_group_by_pk(tenant.tenant_id,
                                                   service.service_region,
                                                   gs_rel.group_id)
            un_mount_dependencies.append({
                "dep_app_name":
                services.get(service_id=volume.service_id).service_cname,
                "dep_app_group":
                group.group_name if group else '未分组',
                "dep_vol_name":
                volume.volume_name,
                "dep_vol_path":
                volume.volume_path,
                "dep_vol_type":
                volume.volume_type,
                "dep_vol_id":
                volume.ID,
                "dep_group_id":
                group.ID if group else -1,
                "dep_app_alias":
                services.get(service_id=volume.service_id).service_alias
            })
        return un_mount_dependencies, total
Exemple #24
0
    def get(self, request, *args, **kwargs):
        """
        获取所有用户信息
        ---
        parameters:
            - name: page_num
              description: 页码
              required: false
              type: string
              paramType: query
            - name: page_size
              description: 每页数量
              required: false
              type: string
              paramType: query

        """
        result = {}
        try:
            page = request.GET.get("page_num", 1)
            page_size = request.GET.get("page_size", 20)
            user_list = user_service.get_all_users()
            user_paginator = JuncheePaginator(user_list, int(page_size))
            users = user_paginator.page(int(page))
            list = []
            for user in users:
                result_map = {}
                result_map["user_id"] = user.user_id
                result_map["email"] = user.email
                result_map["nick_name"] = user.nick_name
                tenant_list = user_service.get_user_tenants(user.user_id)
                result_map["tenants"] = tenant_list
                list.append(result_map)

            result = generate_result("0000",
                                     "success",
                                     "查询成功",
                                     list=list,
                                     total=user_paginator.count)

        except Exception as e:
            logger.debug(e)
            result = generate_error_result()
        return Response(result)
Exemple #25
0
 def get(self, request, *args, **kwargs):
     """
     获取企业可加入的团队列表
     """
     try:
         enterprise_id = request.GET.get("enterprise_id", None)
         page_num = int(request.GET.get("page_num", 1))
         page_size = int(request.GET.get("page_size", 5))
         if not enterprise_id:
             enter = enterprise_services.get_enterprise_by_id(
                 enterprise_id=self.user.enterprise_id)
             enterprise_id = enter.enterprise_id
         total = 0
         t_list = []
         owner_name = None
         team_list = team_services.get_enterprise_teams(
             enterprise_id=enterprise_id)
         team_paginator = JuncheePaginator(team_list, int(page_size))
         total = team_paginator.count
         page_team = team_paginator.page(page_num)
         t_list = [{
             "enterprise_id":
             team_info.enterprise_id,
             "create_time":
             team_info.create_time,
             "team_name":
             team_info.tenant_name,
             "team_alias":
             team_info.tenant_alias,
             "owner":
             user_repo.get_user_nickname_by_id(user_id=team_info.creater)
         } for team_info in page_team]
         result = general_message(200,
                                  "success",
                                  "查询成功",
                                  list=t_list,
                                  total=total)
     except Exception as e:
         logger.exception(e)
         result = error_message(e.message)
     return Response(result, status=result["code"])
Exemple #26
0
 def get(self, request, team_name, *args, **kwargs):
     """
     初始化团队和数据中心信息
     ---
     parameters:
         - name: team_name
           description: 团队别名
           required: true
           type: string
           paramType: path
         - name: page_num
           description: 页码
           required: false
           type: string
           paramType: query
         - name: page_size
           description: 每页数量
           required: false
           type: string
           paramType: query
     """
     page_num = int(request.GET.get("page_num", 1))
     page_size = int(request.GET.get("page_size", 5))
     rt_list = []
     applicants = apply_repo.get_applicants(team_name=team_name)
     for applicant in applicants:
         is_pass = applicant.is_pass
         if is_pass == 0:
             rt_list.append(applicant.to_dict())
     apc_paginator = JuncheePaginator(rt_list, int(page_size))
     total = apc_paginator.count
     page_aplic = apc_paginator.page(page_num)
     rt_list = [apc for apc in page_aplic]
     # 返回
     result = general_message(200,
                              "success",
                              "查询成功",
                              list=rt_list,
                              total=total)
     return Response(result, status=result["code"])
Exemple #27
0
    def get(self, request, *args, **kwargs):
        """
        获取团队信息
        ---
        parameters:
            - name: page_num
              description: 页码
              required: false
              type: string
              paramType: query
            - name: page_size
              description: 每页数量
              required: false
              type: string
              paramType: query
            - name: enterprise_alias
              description: 企业别名
              required: false
              type: string
              paramType: query
            - name: tenant_alias
              description: 团队别名
              required: false
              type: string
              paramType: query
            - name: tenant_name
              description: 团队名称
              required: false
              type: string
              paramType: query

        """
        try:
            page = request.GET.get("page_num", 1)
            page_size = request.GET.get("page_size", 20)
            enterprise_alias = request.GET.get("enterprise_alias", None)
            tenant_alias = request.GET.get("tenant_alias", None)
            tenant_name = request.GET.get("tenant_name", None)
            enterprise_id = None
            if enterprise_alias:
                enter = enterprise_services.get_enterprise_by_enterprise_alias(
                    enterprise_alias)
                if not enter:
                    return Response(
                        generate_result("0404", "enterprise is not found",
                                        "企业{0}不存在".format(enterprise_alias)))
                enterprise_id = enter.enterprise_id

            if tenant_alias:
                team = console_team_service.get_team_by_team_alias(
                    tenant_alias)
                if not team:
                    return Response(
                        generate_result("0404", "team is not found",
                                        "团队别名{0}不存在".format(tenant_alias)))

            if tenant_name:
                team = console_team_service.get_tenant_by_tenant_name(
                    tenant_name)
                if not team:
                    return Response(
                        generate_result("0404", "team is not found",
                                        "团队名称{0}不存在".format(tenant_name)))

            tenant_list = tenant_service.get_team_by_name_or_alias_or_enter(
                tenant_name, tenant_alias, enterprise_id)
            tenant_paginator = JuncheePaginator(tenant_list, int(page_size))
            tenants = tenant_paginator.page(int(page))

            tenants_num = Tenants.objects.count()
            # 需要license控制,现在没有,默认为一百万
            allow_num = 1000000

            list = []

            for tenant in tenants:
                tenant_dict = {}
                user_list = tenant_service.get_tenant_users(tenant.tenant_name)
                tenant_dict["user_num"] = len(user_list)
                tenant_dict.update(tenant.to_dict())
                list.append(tenant_dict)
            bean = {
                "total_tenant_num": allow_num,
                "cur_tenant_num": tenants_num
            }

            result = generate_result("0000",
                                     "success",
                                     "查询成功",
                                     bean=bean,
                                     list=list,
                                     total=tenant_paginator.count)
        except Exception as e:
            logger.exception(e)
            result = generate_error_result()
        return Response(result)
Exemple #28
0
    def get(self, request, *args, **kwargs):
        """
        获取本地市场应用
        ---
        parameters:
            - name: scope
              description: 范围
              required: false
              type: string
              paramType: query
            - name: app_name
              description: 应用名字
              required: false
              type: string
              paramType: query
            - name: page
              description: 当前页
              required: true
              type: string
              paramType: query
            - name: page_size
              description: 每页大小,默认为10
              required: true
              type: string
              paramType: query
        """
        scope = request.GET.get("scope", None)
        app_name = request.GET.get("app_name", None)
        page = request.GET.get("page", 1)
        page_size = request.GET.get("page_size", 10)
        try:
            apps = market_app_service.get_visiable_apps(
                self.tenant, scope, app_name).order_by("-install_number",
                                                       "-is_official")
            paginator = JuncheePaginator(apps, int(page_size))
            show_apps = paginator.page(int(page))
            app_list = []
            show_app_list = []
            group_key_list = []
            for app in show_apps:
                if app.group_key not in group_key_list:
                    group_key_list.append(app.group_key)
            logger.debug(
                '==========0=================0{0}'.format(group_key_list))
            if group_key_list:
                for group_key in group_key_list:
                    app_dict = dict()
                    group_version_list = []
                    for app in show_apps:
                        if app.group_key == group_key:
                            if app.version not in group_version_list:
                                group_version_list.append(app.version)
                    group_version_list.sort(reverse=True)

                    logger.debug(
                        '----------group_version_list------__>{0}'.format(
                            group_version_list))
                    logger.debug(
                        '----------group_key------__>{0}'.format(group_key))
                    for app in show_apps:
                        if app.version == group_version_list[
                                0] and app.group_key == group_key:
                            app_dict["ID"] = app.ID
                            app_dict["group_key"] = group_key
                            app_dict["group_version_list"] = group_version_list
                            app_dict["group_name"] = app.group_name
                            app_dict["share_user"] = app.share_user
                            app_dict["record_id"] = app.record_id
                            app_dict["share_team"] = app.share_team
                            app_dict[
                                "tenant_service_group_id"] = app.tenant_service_group_id
                            app_dict["pic"] = app.pic
                            app_dict["source"] = app.source
                            app_dict["describe"] = app.describe
                            app_dict["is_complete"] = app.is_complete
                            app_dict["is_ingerit"] = app.is_ingerit
                            app_dict["template_version"] = app.template_version
                            app_dict["create_time"] = app.create_time
                            app_dict["update_time"] = app.update_time
                            app_dict["enterprise_id"] = app.enterprise_id
                            app_dict["install_number"] = app.install_number
                            app_dict["is_official"] = app.is_official
                            app_dict["details"] = app.details
                            app_dict["upgrade_time"] = app.upgrade_time
                            min_memory = self.__get_service_group_memory(
                                app.app_template)
                            if min_memory:
                                app_dict["min_memory"] = min_memory
                            export_status = export_service.get_export_record_status(
                                self.tenant.enterprise_id, group_key,
                                group_version_list[0])
                            if export_status:
                                app_dict["export_status"] = export_status
                            show_app_list.append(app_dict)

            result = general_message(200,
                                     "success",
                                     "查询成功",
                                     list=show_app_list,
                                     total=paginator.count,
                                     next_page=int(page) + 1)
        except Exception as e:
            logger.exception(e)
            result = error_message()
        return Response(result, status=result["code"])
Exemple #29
0
    def get(self, request, *args, **kwargs):
        """
        组件事件动态
        ---
        parameters:
            - name: team_name
              description: 团队名
              required: true
              type: string
              paramType: path
            - name: page
              description: 页数(默认第一页)
              required: false
              type: string
              paramType: query
            - name: page_size
              description: 每页展示个数(默认3个)
              required: false
              type: string
              paramType: query
        """
        page = request.GET.get("page", 1)
        page_size = request.GET.get("page_size", 3)
        total = 0
        regionsList = region_repo.get_team_opened_region(self.tenant)
        event_service_dynamic_list = []
        for region in regionsList:
            try:
                events, event_count, has_next = event_service.get_target_events(
                    "tenant", self.tenant.tenant_id, self.tenant,
                    region.region_name, int(page), int(page_size))
                event_service_dynamic_list = event_service_dynamic_list + events
                total = total + event_count
            except Exception as e:
                logger.error(
                    "Region api return error {0}, ignore it".format(e))

        event_service_dynamic_list = sorted(event_service_dynamic_list,
                                            self.__sort_events)

        service_ids = []
        for event in event_service_dynamic_list:
            if event["Target"] == "service":
                service_ids.append(event["TargetID"])

        services = service_repo.get_service_by_service_ids(service_ids)

        event_service_list = []
        for event in event_service_dynamic_list:
            if event["Target"] == "service":
                for service in services:
                    if service.service_id == event["TargetID"]:
                        event["service_alias"] = service.service_alias
                        event["service_name"] = service.service_cname
            event_service_list.append(event)

        event_paginator = JuncheePaginator(event_service_list, int(page_size))
        event_page_list = event_paginator.page(page)
        total = event_paginator.count
        event_list = [event for event in event_page_list]
        result = general_message(200,
                                 'success',
                                 "查询成功",
                                 list=event_list,
                                 total=total)
        return Response(result, status=result["code"])
Exemple #30
0
    def get(self, request, *args, **kwargs):
        """
        获取所有用户信息
        ---
        parameters:
            - name: page_num
              description: 页码
              required: false
              type: string
              paramType: query
            - name: page_size
              description: 每页数量
              required: false
              type: string
              paramType: query
            - name: user_name
              description: 用户名称(可以是邮箱,用户名,手机号)
              required: false
              type: string
              paramType: query

        """
        result = {}
        try:
            page = request.GET.get("page_num", 1)
            page_size = request.GET.get("page_size", 20)
            user_name = request.GET.get("user_name", None)
            user_list = user_service.get_by_username_or_phone_or_email(
                user_name)
            user_paginator = JuncheePaginator(user_list, int(page_size))
            users = user_paginator.page(int(page))
            list = []
            uid_eid_map = {u.user_id: u.enterprise_id for u in users}
            eids = [u.enterprise_id for u in users]
            enterprises = console_enterprise_service.get_enterprise_by_eids(
                eids)
            eid_enterprise_map = {
                e.enterprise_id: e.enterprise_alias
                for e in enterprises
            }
            for user in users:
                result_map = {}
                result_map["user_id"] = user.user_id
                result_map["email"] = user.email
                result_map["nick_name"] = user.nick_name
                result_map["phone"] = user.phone if user.phone else "暂无"
                result_map["create_time"] = time_to_str(
                    user.create_time, "%Y-%m-%d %H:%M:%S")
                tenant_list = user_service.get_user_tenants(user.user_id)
                result_map["tenants"] = tenant_list
                eid = uid_eid_map.get(user.user_id, None)
                if eid:
                    result_map["enterprise_alias"] = eid_enterprise_map.get(
                        eid, "暂无企业信息")
                else:
                    result_map["enterprise_alias"] = "暂无企业信息"
                list.append(result_map)

            result = generate_result("0000",
                                     "success",
                                     "查询成功",
                                     list=list,
                                     total=user_paginator.count)

        except Exception as e:
            logger.debug(e)
            result = generate_error_result()
        return Response(result)