def list(self, request, project_id): """get project cluster list""" cluster_info = self.get_cluster_list(request, project_id) cluster_data = cluster_info.get("results") or [] cluster_node_map = self.cluster_has_node(request, project_id) # add allow delete perm for info in cluster_data: info["environment"] = cluster_env_transfer(info["environment"]) # allow delete cluster allow_delete = False if cluster_node_map.get(info["cluster_id"]) else True info["allow"] = info["allow_delete"] = allow_delete perm_can_use = True if request.GET.get("perm_can_use") == "1" else False self.register_function_controller(cluster_data) cluster_results = Cluster.hook_perms(request, project_id, cluster_data, filter_use=perm_can_use) # add can create cluster perm for prod/test can_create_test, can_create_prod = self.get_cluster_create_perm(request, project_id) return response.Response( { "code": ErrorCode.NoError, "data": {"count": len(cluster_results), "results": cluster_results}, "permissions": { "test": can_create_test, "prod": can_create_prod, "create": can_create_test or can_create_prod, }, } )
def get_cluster_env(self, request, project_id): """get cluster env map""" data = self.get_all_cluster(request, project_id) results = data.get('results') or [] return { info['cluster_id']: cluster_env_transfer(info['environment']) for info in results if info.get('cluster_id') }
def retrieve(self, request, project_id, cluster_id): cluster_data = self.get_cluster(request, project_id, cluster_id) cluster_data["environment"] = cluster_env_transfer(cluster_data["environment"]) # 添加功能白名单 self.register_function_controller(cluster_data) return response.Response({"code": ErrorCode.NoError, "data": cluster_data})
def _cluster_id_map(self, access_token, project_id): clusters = node_utils.get_clusters(access_token, project_id) return { cluster["cluster_id"]: { "cluster_env": cluster_env_transfer(cluster["environment"]), "cluster_name": cluster["name"], } for cluster in clusters }
def get_cluster_id_info_map(self, request, project_id): """get cluster info map format: {'cluster_id': {'cluster_name': xxx, 'cluster_env': xxx}} """ data = self.get_all_cluster(request, project_id) results = data.get('results') or [] return { info['cluster_id']: { 'cluster_env': cluster_env_transfer(info['environment']), 'cluster_name': info['name'], } for info in results if info.get('cluster_id') }
def update(self, request, project_id, cluster_id): cluster_perm = Cluster(request, project_id, cluster_id) cluster_perm.can_edit(raise_exception=True) data = self.get_params(request) data = self.update_data(data, project_id, cluster_id, cluster_perm) # update cluster info with client.ContextActivityLogClient( project_id=project_id, user=request.user.username, resource_type="cluster", resource_id=cluster_id, ).log_modify(): cluster_info = self.update_cluster(request, project_id, cluster_id, data) # render environment for frontend cluster_info["environment"] = cluster_env_transfer(cluster_info["environment"]) return response.Response(cluster_info)
def retrieve(self, request, project_id, cluster_id): cluster_data = self.get_cluster(request, project_id, cluster_id) cluster_data["environment"] = cluster_env_transfer(cluster_data["environment"]) return response.Response({"code": ErrorCode.NoError, "data": cluster_data})
def list(self, request, project_id): """获取集群列表""" clusters = self.get_cluster_list(request, project_id) for info in clusters.get("results") or []: info["environment"] = cluster_env_transfer(info["environment"]) return Response(clusters)