class NodeRespBuilder: """构造节点 API 返回 TODO: 现阶段返回先方便前端处理,拆分后,调整返回为{manifest: xxx, manifest_ext: xxx} manifest中放置原始node数据, manifest_ext中存放处理的状态等数据 """ def __init__(self, ctx_cluster: CtxCluster): self.client = Node(ctx_cluster) def list_nodes(self) -> Dict: """查询节点列表""" nodes = self.client.list(is_format=False) return { "manifest": nodes.data.to_dict(), "manifest_ext": { node.metadata["uid"]: { "status": node.node_status, "labels": { key: "readonly" for key in filter_label_keys(node.labels.keys()) }, } for node in nodes.items }, } def query_labels(self, node_names: List[str]) -> Dict[str, Dict]: """查询节点标签 TODO: 这里是兼容处理,方便前端使用,后续前端直接通过列表获取数据 """ node_labels = self.client.filter_nodes_field_data( "labels", filter_node_names=node_names, default_data={}) return node_labels
def query_taints(self, request, project_id, cluster_id): """查询node的污点""" params = self.params_validate(slz.QueryNodeListSLZ) node_client = Node(request.ctx_cluster) return Response( node_client.filter_nodes_field_data("taints", params["node_name_list"]))