diff --git a/console/services/team_services.py b/console/services/team_services.py index 1a56fbe1f..e114de34b 100644 --- a/console/services/team_services.py +++ b/console/services/team_services.py @@ -511,13 +511,13 @@ def get_tenant_resource(self, team, region_name): return data return None - def get_tenant_list_by_region(self, eid, region_id, page=1, page_size=10): + def get_tenant_list_by_region(self, eid, region_id, page=1, page_size=10, tenant_ids=""): teams = team_repo.get_team_by_enterprise_id(eid) team_maps = {} if teams: for team in teams: team_maps[team.tenant_id] = team - res, body = region_api.list_tenants(eid, region_id, page, page_size) + res, body = region_api.list_tenants(eid, region_id, page, page_size, tenant_ids) tenant_list = [] total = 0 if body.get("bean"): diff --git a/console/views/enterprise.py b/console/views/enterprise.py index 19942a277..7a5ca2020 100644 --- a/console/views/enterprise.py +++ b/console/views/enterprise.py @@ -171,20 +171,21 @@ def get(self, request, enterprise_id, *args, **kwargs): page = int(request.GET.get("page", 1)) page_size = int(request.GET.get("page_size", 10)) name = request.GET.get("name", None) - teams, total = team_services.get_enterprise_teams(enterprise_id, query=name, user=self.user) + teams, total = team_services.get_enterprise_teams( + enterprise_id, query=name, page=page, page_size=page_size, user=self.user) tenant_names = {tenant["team_name"]: tenant for tenant in teams} usable_regions = region_repo.get_usable_regions(enterprise_id) user_id_list = PermRelTenant.objects.filter().values("tenant_id", "user_id") user_id_dict = dict() tenants = Tenants.objects.filter() tenant_ids = {tenant_id.ID: tenant_id.tenant_id for tenant_id in tenants} + json_tenant_ids = json.dumps([ten.tenant_id for ten in tenants]) for user_id in user_id_list: user_id_dict[tenant_ids.get(user_id["tenant_id"])] = user_id_dict.get(tenant_ids.get(user_id["tenant_id"]), 0) + 1 - ret_team = list() for usable_region in usable_regions: try: region_tenants, _ = team_services.get_tenant_list_by_region( - enterprise_id, usable_region.region_id, page=page, page_size=page_size) + enterprise_id, usable_region.region_id, page=1, page_size=9999, tenant_ids=json_tenant_ids) for region_tenant in region_tenants: tenant = tenant_names.get(region_tenant["tenant_name"]) if tenant: @@ -193,10 +194,10 @@ def get(self, request, enterprise_id, *args, **kwargs): tenant["memory_request"] = tenant.get("memory_request", 0) + region_tenant["memory_request"] tenant["cpu_request"] = tenant.get("cpu_request", 0) + region_tenant["cpu_request"] tenant["set_limit_memory"] = tenant.get("set_limit_memory", 0) + region_tenant["set_limit_memory"] - ret_team.append(tenant) except Exception as e: logger.exception(e) - data = {"total_count": total, "page": page, "page_size": page_size, "list": ret_team} + teams = sorted(teams, key=lambda team: team.get("memory_request", 0), reverse=True) + data = {"total_count": total, "page": page, "page_size": page_size, "list": teams} result = general_message(200, "success", None, bean=data) return Response(result, status=status.HTTP_200_OK) diff --git a/www/apiclient/regionapi.py b/www/apiclient/regionapi.py index d6cded7a9..ea18776a5 100644 --- a/www/apiclient/regionapi.py +++ b/www/apiclient/regionapi.py @@ -1957,13 +1957,13 @@ def add_resource(self, enterprise_id, region, data): res, body = self._post(url, self.default_headers, body=json.dumps(data), region=region_info.region_name, timeout=30) return res, body - def list_tenants(self, enterprise_id, region, page=1, page_size=10): + def list_tenants(self, enterprise_id, region, page=1, page_size=10, tenant_ids=""): """list tenants""" region_info = self.get_enterprise_region_info(enterprise_id, region) if not region_info: raise ServiceHandleException("region not found") url = region_info.url - url += "/v2/tenants?page={0}&pageSize={1}&eid={2}".format(page, page_size, enterprise_id) + url += "/v2/tenants?page={0}&pageSize={1}&eid={2}&tenant_ids={3}".format(page, page_size, enterprise_id, tenant_ids) try: res, body = self._get(url, self.default_headers, region=region_info.region_name) return res, body