Skip to content

Commit

Permalink
fix(backend): 修改ES校验参数 #2685
Browse files Browse the repository at this point in the history
  • Loading branch information
iSecloud committed Dec 19, 2023
1 parent fa3a339 commit 4b543c6
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 12 deletions.
1 change: 1 addition & 0 deletions dbm-ui/backend/configuration/handlers/password.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ def query_mysql_admin_password(
if end_time:
filters.update(end_time=end_time)

# 获取密码生效实例结果
mysql_admin_password_data = MySQLPrivManagerApi.get_mysql_admin_password(params=filters)
mysql_admin_password_data["results"] = mysql_admin_password_data.pop("items")
cloud_info = ResourceQueryHelper.search_cc_cloud(get_cache=True)
Expand Down
25 changes: 16 additions & 9 deletions dbm-ui/backend/db_services/mysql/resources/tendbcluster/query.py
Original file line number Diff line number Diff line change
Expand Up @@ -188,24 +188,31 @@ def _filter_instance_qs(query_conditions, query_params):
]

# 获取remote实例的查询集
remote_insts = StorageInstance.objects.annotate(role=F("instance_role"), inst_port=F("port")).filter(
query_conditions
remote_insts = (
StorageInstance.objects.select_related("machine")
.prefetch_related("cluster")
.annotate(role=F("instance_role"), inst_port=F("port"))
.filter(query_conditions)
)
# 获取spider实例的查询集
spider_insts = ProxyInstance.objects.annotate(
role=F("tendbclusterspiderext__spider_role"), inst_port=F("port")
).filter(query_conditions)
spider_insts = (
ProxyInstance.objects.select_related("machine")
.prefetch_related("cluster")
.annotate(role=F("tendbclusterspiderext__spider_role"), inst_port=F("port"))
.filter(query_conditions)
)

# 涉及spider_controller的查询
if query_params.get("spider_ctl"):
# 额外获取spider master混部的中控节点的查询集 这里有一点: 通过value和annotate来将admin_port覆写port,达到过滤效果
filter_spider_master = Q(tendbclusterspiderext__spider_role=TenDBClusterSpiderRole.SPIDER_MASTER.value)
controller_insts = (
ProxyInstance.objects.values("admin_port")
ProxyInstance.objects.select_related("machine")
.prefetch_related("cluster")
.values("admin_port")
.annotate(port=F("admin_port"))
.values(role=Value("spider_ctl"), inst_port=F("admin_port"))
.filter(
query_conditions & Q(tendbclusterspiderext__spider_role=TenDBClusterSpiderRole.SPIDER_MASTER.value)
)
.filter(query_conditions & filter_spider_master)
)
# ⚠️这里的union不要用链式union(eg: s1.union(s2).union(s3)),否则django解析sql语句会生成额外的扩号导致mysql语法错误。
instances = remote_insts.union(spider_insts, controller_insts).values(*fields).order_by("-create_at")
Expand Down
11 changes: 9 additions & 2 deletions dbm-ui/backend/db_services/mysql/resources/tendbha/query.py
Original file line number Diff line number Diff line change
Expand Up @@ -115,9 +115,16 @@ def _filter_instance_qs(query_conditions, query_params):
"""获取过滤的queryset"""
instances_qs = (
# 此处的实例视图需要同时得到 storage instance 和 proxy instance
StorageInstance.objects.annotate(role=F("instance_inner_role"))
StorageInstance.objects.select_related("machine")
.prefetch_related("cluster")
.annotate(role=F("instance_inner_role"))
.filter(query_conditions)
.union(ProxyInstance.objects.annotate(role=F("access_layer")).filter(query_conditions))
.union(
ProxyInstance.objects.annotate(role=F("access_layer"))
.select_related("machine")
.prefetch_related("cluster")
.filter(query_conditions)
)
.values(
"id",
"role",
Expand Down
3 changes: 2 additions & 1 deletion dbm-ui/backend/ticket/builders/es/es_shrink.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,8 @@ def validate(self, attrs):

all_shrink_hosts = []
all_exist_hosts = []
for role in [InstanceRole.ES_DATANODE_HOT, InstanceRole.ES_DATANODE_COLD, InstanceRole.ES_CLIENT]:
# 暂时只需要校验hot节点至少保留一台,cold和client不校验
for role in [InstanceRole.ES_DATANODE_HOT]:
shrink_hosts = {host["bk_host_id"] for host in role_hash[role]}
exist_hosts = set(
cluster.storageinstance_set.filter(instance_role=role).values_list("machine__bk_host_id", flat=True)
Expand Down

0 comments on commit 4b543c6

Please sign in to comment.