def list_nodes(self, request, project_id, cluster_id): """查询集群下nodes NOTE: 限制查询一个集群下的节点 """ # 以集群中节点为初始数据,如果bcs cc中节点不在集群中,处于初始化中或者初始化失败,也需要展示 cluster_nodes = node.query_cluster_nodes(request.ctx_cluster) bcs_cc_nodes = node.query_bcs_cc_nodes(request.ctx_cluster) # 组装数据 cluster = get_cluster(request.user.token.access_token, request.project.project_id, cluster_id) client = node.NodesData(bcs_cc_nodes, cluster_nodes, cluster_id, cluster.get("name", "")) return Response(client.nodes())
def list(self, request, project_id): # get cluster id by request cluster_id = self.get_cluster_id(request) # get node info node_list = self.get_node_list(request, project_id, cluster_id) node_list = node_list.get('results') or [] if not node_list: return Response({'code': 0, 'result': []}) node_id_info_map = self.exclude_removed_status_node(node_list) # get node labels node_label_list = self.get_labels_by_node(request, project_id, node_id_info_map.keys()) # render cluster id, cluster name and cluster environment cluster_name_env = self.get_cluster_id_info_map(request, project_id) # 获取节点的taint ctx_cluster = CtxCluster.create(token=request.user.token.access_token, id=cluster_id, project_id=project_id) nodes = query_cluster_nodes(ctx_cluster) node_list = self.compose_nodes( node_id_info_map, node_label_list, request.project['english_name'], cluster_name_env, nodes ) # add perm for node nodes_results = bcs_perm.Cluster.hook_perms(request, project_id, node_list) return Response({'count': len(node_list), 'results': nodes_results})
def test_query_cluster_nodes(client, create_and_delete_node, ctx_cluster): cluster_nodes = node_tools.query_cluster_nodes(ctx_cluster) assert FAKE_INNER_IP in cluster_nodes assert cluster_nodes[FAKE_INNER_IP]["name"] == FAKE_NODE_NAME assert cluster_nodes[FAKE_INNER_IP]["status"] == NodeConditionStatus.Ready assert not cluster_nodes[FAKE_INNER_IP]["unschedulable"]
def test_query_cluster_nodes(client, create_and_delete_node, ctx_cluster): cluster_nodes = node_tools.query_cluster_nodes(ctx_cluster) assert fake_inner_ip in cluster_nodes assert cluster_nodes[fake_inner_ip]["name"] == fake_node_name assert cluster_nodes[fake_inner_ip]["status"] == NodeConditionStatus.Ready assert not cluster_nodes[fake_inner_ip]["unschedulable"]
def query_cluster_nodes(mock_list): cluster_nodes = node.query_cluster_nodes(fake_ctx_cluster) assert fake_inner_ip in cluster_nodes assert cluster_nodes[fake_inner_ip]["node_name"] == fake_node_name assert cluster_nodes[fake_inner_ip]["status"] == NodeConditionStatus.Ready assert not cluster_nodes[fake_inner_ip]["unschedulable"]