Exemple #1
0
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
Exemple #2
0
 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"]))