diff --git a/dbm-ui/backend/db_services/dbbase/resources/constants.py b/dbm-ui/backend/db_services/dbbase/resources/constants.py index 6f33434b0c..77e1a06211 100644 --- a/dbm-ui/backend/db_services/dbbase/resources/constants.py +++ b/dbm-ui/backend/db_services/dbbase/resources/constants.py @@ -19,3 +19,43 @@ class ResourceNodeType(StrStructuredEnum): BIZ = EnumField("biz", _("业务")) CLUSTER = EnumField("cluster", _("集群")) MODULE = EnumField("module", _("模块")) + + +DEFAULT_CLUSTER_DATA = { + "id": 0, + "db_type": "", + "phase": "", + "phase_name": "", + "status": "", + "operations": [], + "dns_to_clb": False, + "cluster_time_zone": "", + "cluster_name": "", + "cluster_alias": "", + "cluster_access_port": 0, + "cluster_stats": {}, + "cluster_type": "", + "cluster_type_name": "", + "cluster_subzones": [], + "cluster_subzone_ids": [], + "disaster_tolerance_level": "", + "master_domain": "", + "slave_domain": "", + "cluster_entry": [], + "bk_biz_id": 0, + "bk_biz_name": "", + "bk_cloud_id": 0, + "bk_cloud_name": "", + "major_version": "", + "region": "", + "city": "", + "db_module_name": "", + "db_module_id": 0, + "creator": "", + "updater": "", + "create_at": "", + "update_at": "", + "cluster_spec": {}, + "tags": [], + "zone_list": [], +} diff --git a/dbm-ui/backend/db_services/dbbase/resources/query.py b/dbm-ui/backend/db_services/dbbase/resources/query.py index bd958abead..5b2a22366b 100644 --- a/dbm-ui/backend/db_services/dbbase/resources/query.py +++ b/dbm-ui/backend/db_services/dbbase/resources/query.py @@ -32,6 +32,7 @@ ) from backend.db_meta.models.city_map import BKSubzone from backend.db_services.dbbase.instances.handlers import InstanceHandler +from backend.db_services.dbbase.resources.constants import DEFAULT_CLUSTER_DATA from backend.db_services.dbbase.resources.query_base import ( build_q_for_cluster_name_or_alias, build_q_for_domain_by_cluster, @@ -692,20 +693,27 @@ def _filter_cluster_hook( ): dns_to_clb = True - cluster_info = cls._to_cluster_representation( - cluster=cluster, - cluster_entry=cluster_entry, - db_module_names_map=db_module_names_map, - cluster_entry_map=cluster_entry_map, - cluster_operate_records_map=cluster_operate_records_map, - cloud_info=cloud_info, - biz_info=biz_info, - cluster_stats_map=cluster_stats_map, - dns_to_clb=dns_to_clb, - cluster_zone_map=cluster_zone_map, - **kwargs, - ) - clusters.append(cluster_info) + try: + cluster_info = cls._to_cluster_representation( + cluster=cluster, + cluster_entry=cluster_entry, + db_module_names_map=db_module_names_map, + cluster_entry_map=cluster_entry_map, + cluster_operate_records_map=cluster_operate_records_map, + cloud_info=cloud_info, + biz_info=biz_info, + cluster_stats_map=cluster_stats_map, + dns_to_clb=dns_to_clb, + cluster_zone_map=cluster_zone_map, + **kwargs, + ) + clusters.append(cluster_info) + except Exception as e: + error_cluster = DEFAULT_CLUSTER_DATA.copy() + error_cluster["id"] = cluster.id + error_cluster["master_domain"] = cluster.immute_domain + error_cluster["error"] = str(e) + clusters.append(error_cluster) return ResourceList(count=count, data=clusters)