From 0ebfddc7cfac0d7ba2a38e388cdcb1286813cc2a Mon Sep 17 00:00:00 2001 From: gqp <446105468@qq.com> Date: Wed, 22 Jan 2025 11:29:51 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=8F=92=E4=BB=B6=E5=8C=85=E5=8E=86?= =?UTF-8?q?=E5=8F=B2=E4=BC=98=E5=8C=96=20(closed=20#2538)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/node_man/tools/plugin_v2.py | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/apps/node_man/tools/plugin_v2.py b/apps/node_man/tools/plugin_v2.py index c670dce3d..9a8e16907 100644 --- a/apps/node_man/tools/plugin_v2.py +++ b/apps/node_man/tools/plugin_v2.py @@ -93,24 +93,28 @@ def get_packages_node_numbers(cls, projects: List[str], keys: List[str]) -> Dict name__in=projects, source_type=models.ProcessStatus.SourceType.DEFAULT, is_latest=True, - ).values("bk_host_id", "name", "version") + ) + .extra( + tables=[f"{models.Host._meta.db_table}"], + where=[f"{models.Host._meta.db_table}.bk_host_id = {models.ProcessStatus._meta.db_table}.bk_host_id"], + select={ + "os_type": f"{models.Host._meta.db_table}.os_type", + "cpu_arch": f"{models.Host._meta.db_table}.cpu_arch", + }, + ) + .values("bk_host_id", "name", "version", "os_type", "cpu_arch") ) # proc_list有重复的情况会在此步骤构建映射时自动去重 proj_host_id_proc_map = {f"{proc['name']}_{proc['bk_host_id']}": proc for proc in proc_list} - host_list = models.Host.objects.filter(bk_host_id__in={proc["bk_host_id"] for proc in proc_list}).values( - "bk_host_id", "os_type", "cpu_arch" - ) - proj_deploy_infos = [] - for host in host_list: - host.update({"os": host["os_type"].lower()}) + for proc in proc_list: proj_deploy_infos.extend( [ - {**host, **proj_host_id_proc_map[f"{project}_{host['bk_host_id']}"], "project": project} + {**proc, "project": project, "os": proc["os_type"].lower()} for project in projects - if f"{project}_{host['bk_host_id']}" in proj_host_id_proc_map + if f"{project}_{proc['bk_host_id']}" in proj_host_id_proc_map ] ) deploy_infos_group_by_keys = groupby(