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)
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
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
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
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)
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"])
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
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
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"])
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"])
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
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"])
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)
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)
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"])
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
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)
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"])
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"])
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)
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"])
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"])
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)