1717from backend .configuration .constants import DBType
1818from backend .db_dirty .models import DirtyMachine
1919from backend .db_meta .enums import ClusterPhase , ClusterType
20+ from backend .db_meta .models import DBModule
2021from backend .db_services .dbbase .constants import ResourceType
22+ from backend .db_services .dbbase .resources .query_base import build_q_for_domain_by_cluster
2123from backend .db_services .dbbase .resources .serializers import ListResourceSLZ
2224from backend .db_services .ipchooser .query .resource import ResourceQueryHelper
2325from backend .db_services .redis .resources .redis_cluster .query import RedisListRetrieveResource
2426from backend .dbm_init .constants import CC_APP_ABBR_ATTR
2527from backend .ticket .constants import TicketType
2628
29+ db_module_id_name_map = DBModule .db_module_map ()
30+ db_module_name_id_map = {module_name : module_id for module_id , module_name in db_module_id_name_map .items ()}
31+
2732
2833class IsClusterDuplicatedSerializer (serializers .Serializer ):
2934 cluster_type = serializers .ChoiceField (help_text = _ ("集群类型" ), choices = ClusterType .get_choices ())
@@ -37,23 +42,57 @@ class Meta:
3742
3843
3944class QueryAllTypeClusterSerializer (serializers .Serializer ):
40- bk_biz_id = serializers .IntegerField (help_text = _ ("业务ID" ))
45+ bk_biz_id = serializers .IntegerField (help_text = _ ("业务ID" ), required = False )
4146 cluster_types = serializers .CharField (help_text = _ ("集群类型(逗号分隔)" ), required = False )
4247 immute_domain = serializers .CharField (help_text = _ ("集群域名" ), required = False )
4348 # 额外过滤参数
4449 phase = serializers .ChoiceField (help_text = _ ("集群阶段状态" ), required = False , choices = ClusterPhase .get_choices ())
50+ name = serializers .CharField (help_text = _ ("集群英文名" ), required = False )
51+ alias = serializers .CharField (help_text = _ ("集群别名" ), required = False )
52+ db_module_id = serializers .IntegerField (help_text = _ ("模块id" ), required = False )
53+ major_version = serializers .CharField (help_text = _ ("主版本号" ), required = False )
54+ status = serializers .CharField (help_text = _ ("状态" ), required = False )
55+ bk_cloud_id = serializers .IntegerField (help_text = _ ("云区域 ID" ), required = False )
56+ region = serializers .CharField (help_text = _ ("地域" ), required = False )
57+ db_module_name = serializers .CharField (help_text = _ ("模块名" ), required = False )
58+ cluster_type = serializers .CharField (help_text = _ ("集群类型" ), required = False )
4559
4660 def get_conditions (self , attr ):
47- conditions = {"bk_biz_id" : attr ["bk_biz_id" ]}
61+ conditions = Q ()
62+
4863 if attr .get ("cluster_types" ):
49- conditions ["cluster_type__in" ] = attr ["cluster_types" ].split ("," )
64+ conditions &= Q (cluster_type__in = attr ["cluster_types" ].split ("," ))
65+ attr .pop ("cluster_types" )
66+
67+ if attr .get ("db_module_name" ):
68+ db_module_id = db_module_name_id_map .get (attr ["db_module_name" ])
69+ if db_module_id is not None :
70+ conditions &= Q (db_module_id = db_module_id )
71+ attr .pop ("db_module_name" )
72+
5073 if attr .get ("immute_domain" ):
51- conditions ["immute_domain__icontains" ] = attr ["immute_domain" ]
52- # 额外过滤参数
53- if attr .get ("phase" ):
54- conditions ["phase" ] = attr ["phase" ]
74+ # 支持从域名查询
75+ conditions &= build_q_for_domain_by_cluster (domains = attr .get ("immute_domain" , "" ).split ("," ))
76+ attr .pop ("immute_domain" )
77+
78+ for field in self .fields .keys ():
79+ if field in attr :
80+ conditions &= Q (** {field : attr [field ]})
81+
5582 return conditions
5683
84+ def to_representation (self , instance ):
85+ representation = super ().to_representation (instance )
86+ db_module_id = representation .get ("db_module_id" )
87+ cloud_info = ResourceQueryHelper .search_cc_cloud (get_cache = True )
88+ representation ["db_module_name" ] = db_module_id_name_map .get (db_module_id , "" )
89+ try :
90+ representation ["bk_cloud_name" ] = cloud_info [str (representation ["bk_cloud_id" ])]["bk_cloud_name" ]
91+ except Exception :
92+ representation ["bk_cloud_name" ] = ""
93+
94+ return representation
95+
5796
5897class QueryAllTypeClusterResponseSerializer (serializers .Serializer ):
5998 class Meta :
0 commit comments