Skip to content

Commit

Permalink
fix(backend): 集群列表补充集群规格 TencentBlueKing#9024
Browse files Browse the repository at this point in the history
  • Loading branch information
ygcyao committed Jan 13, 2025
1 parent 035f68f commit bf0c20e
Show file tree
Hide file tree
Showing 7 changed files with 39 additions and 7 deletions.
28 changes: 27 additions & 1 deletion dbm-ui/backend/db_services/dbbase/resources/query.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,23 @@

import attr
from django.db.models import F, Prefetch, Q, QuerySet
from django.forms import model_to_dict
from django.http import HttpResponse
from django.utils.translation import ugettext_lazy as _

from backend.constants import IP_PORT_DIVIDER
from backend.db_meta.enums import ClusterEntryType, ClusterType, InstanceRole
from backend.db_meta.enums.comm import SystemTagEnum
from backend.db_meta.models import AppCache, Cluster, ClusterEntry, DBModule, Machine, ProxyInstance, StorageInstance
from backend.db_meta.models import (
AppCache,
Cluster,
ClusterEntry,
DBModule,
Machine,
ProxyInstance,
Spec,
StorageInstance,
)
from backend.db_services.dbbase.instances.handlers import InstanceHandler
from backend.db_services.dbbase.resources.query_base import (
build_q_for_domain_by_cluster,
Expand Down Expand Up @@ -237,6 +247,7 @@ class BaseListRetrieveResource(CommonQueryResourceMixin):

fields = [{"name": _("业务"), "key": "bk_biz_name"}]
cluster_types = []
storage_spec_role = None

@classmethod
@abc.abstractmethod
Expand Down Expand Up @@ -516,6 +527,12 @@ def _filter_cluster_hook(
# 获取集群统计信息,只需要获取一次
cluster_stats_map = Cluster.get_cluster_stats(bk_biz_id, cls.cluster_types)

# 预取remote的spec
db_types = set([ClusterType.cluster_type_to_db_type(cluster_type) for cluster_type in cls.cluster_types])
kwargs["remote_spec_map"] = {
spec.spec_id: spec for spec in Spec.objects.filter(spec_cluster_type__in=db_types)
}

for cluster in cluster_list:
cluster_info = cls._to_cluster_representation(
cluster=cluster,
Expand Down Expand Up @@ -556,8 +573,16 @@ def _to_cluster_representation(
@param cluster_entry_map: key 是 cluster.id, value 是当前集群对应的 entry 映射
@param cluster_operate_records_map: key 是 cluster.id, value 是当前集群对应的 操作记录 映射
"""
spec = None
cluster_entry_map_value = cluster_entry_map.get(cluster.id, {})
bk_cloud_name = cloud_info.get(str(cluster.bk_cloud_id), {}).get("bk_cloud_name", "")
if cls.storage_spec_role is not None:
storage_spec = next(
(storage for storage in cluster.storages if storage.instance_role == cls.storage_spec_role), None
)
if storage_spec:
spec_id = storage_spec.machine.spec_id
spec = kwargs["remote_spec_map"].get(spec_id)

return {
"id": cluster.id,
Expand Down Expand Up @@ -589,6 +614,7 @@ def _to_cluster_representation(
"updater": cluster.updater,
"create_at": datetime2str(cluster.create_at),
"update_at": datetime2str(cluster.update_at),
"cluster_spec": model_to_dict(spec) if spec else None,
}

@classmethod
Expand Down
3 changes: 2 additions & 1 deletion dbm-ui/backend/db_services/mongodb/resources/query.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
from django.db.models.functions import Concat
from django.utils.translation import ugettext_lazy as _

from backend.db_meta.enums import ClusterType, MachineType
from backend.db_meta.enums import ClusterType, InstanceRole, MachineType
from backend.db_meta.models import AppCache, NosqlStorageSetDtl, StorageInstanceTuple
from backend.db_meta.models.cluster import Cluster
from backend.db_meta.models.instance import ProxyInstance, StorageInstance
Expand All @@ -31,6 +31,7 @@ class MongoDBListRetrieveResource(query.ListRetrieveResource):
"""查看 mysql dbha 架构的资源"""

cluster_types = [ClusterType.MongoReplicaSet, ClusterType.MongoShardedCluster]
storage_spec_role = InstanceRole.MONGO_M1
fields = [
{"name": _("主域名"), "key": "domain"},
{"name": _("IP"), "key": "ip"},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

from backend.configuration.constants import DBType
from backend.db_meta.api.cluster.tendbcluster.detail import scan_cluster
from backend.db_meta.enums import InstanceInnerRole, TenDBClusterSpiderRole
from backend.db_meta.enums import InstanceInnerRole, InstanceRole, TenDBClusterSpiderRole
from backend.db_meta.enums.cluster_type import ClusterType
from backend.db_meta.enums.spec import SpecClusterType
from backend.db_meta.exceptions import DBMetaException
Expand All @@ -36,6 +36,7 @@ class ListRetrieveResource(query.ListRetrieveResource):

cluster_type = ClusterType.TenDBCluster
cluster_types = [ClusterType.TenDBCluster]
storage_spec_role = InstanceRole.REMOTE_MASTER

fields = [
{"name": _("集群名"), "key": "cluster_name"},
Expand Down
3 changes: 2 additions & 1 deletion dbm-ui/backend/db_services/mysql/resources/tendbha/query.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
from django.utils.translation import ugettext_lazy as _

from backend.db_meta.api.cluster.tendbha.detail import scan_cluster
from backend.db_meta.enums import ClusterEntryRole, InstanceInnerRole
from backend.db_meta.enums import ClusterEntryRole, InstanceInnerRole, InstanceRole
from backend.db_meta.enums.cluster_type import ClusterType
from backend.db_meta.enums.spec import SpecClusterType
from backend.db_meta.models import AppCache, Spec, StorageInstance
Expand All @@ -31,6 +31,7 @@ class ListRetrieveResource(query.ListRetrieveResource):
"""查看 mysql dbha 架构的资源"""

cluster_types = [ClusterType.TenDBHA]
storage_spec_role = InstanceRole.BACKEND_MASTER

fields = [
{"name": _("集群名"), "key": "cluster_name"},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
from django.utils.translation import ugettext_lazy as _

from backend.db_meta.api.cluster.tendbsingle.detail import scan_cluster
from backend.db_meta.enums import InstanceInnerRole
from backend.db_meta.enums import InstanceInnerRole, InstanceRole
from backend.db_meta.enums.cluster_type import ClusterType
from backend.db_meta.models import AppCache, StorageInstance
from backend.db_meta.models.cluster import Cluster
Expand All @@ -27,6 +27,7 @@ class ListRetrieveResource(query.ListRetrieveResource):
"""查看 mysql 单点部署的资源"""

cluster_types = [ClusterType.TenDBSingle]
storage_spec_role = InstanceRole.ORPHAN

fields = [
{"name": _("集群名"), "key": "cluster_name"},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
from django.utils.translation import ugettext_lazy as _

from backend.db_meta.api.cluster.sqlserverha.detail import scan_cluster
from backend.db_meta.enums import InstanceInnerRole
from backend.db_meta.enums import InstanceInnerRole, InstanceRole
from backend.db_meta.enums.cluster_type import ClusterType
from backend.db_meta.models import AppCache
from backend.db_meta.models.cluster import Cluster
Expand All @@ -26,6 +26,7 @@ class ListRetrieveResource(SqlserverListRetrieveResource):
"""查看 sqlserver ha 架构的资源"""

cluster_types = [ClusterType.SqlserverHA]
storage_spec_role = InstanceRole.BACKEND_MASTER

fields = [
{"name": _("集群名"), "key": "cluster_name"},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
from django.utils.translation import ugettext_lazy as _

from backend.db_meta.api.cluster.sqlserversingle.detail import scan_cluster
from backend.db_meta.enums import InstanceInnerRole
from backend.db_meta.enums import InstanceInnerRole, InstanceRole
from backend.db_meta.enums.cluster_type import ClusterType
from backend.db_meta.models import AppCache
from backend.db_meta.models.cluster import Cluster
Expand All @@ -26,6 +26,7 @@ class ListRetrieveResource(SqlserverListRetrieveResource):
"""查看 sqlserver ha 架构的资源"""

cluster_types = [ClusterType.SqlserverSingle]
storage_spec_role = InstanceRole.ORPHAN

fields = [
{"name": _("集群名"), "key": "cluster_name"},
Expand Down

0 comments on commit bf0c20e

Please sign in to comment.