Skip to content

Commit 727fdf6

Browse files
v_ycggyaoiSecloud
authored andcommitted
fix(backend): tendbcluster定点构造v2 TencentBlueKing#14364
1 parent cf3c2fd commit 727fdf6

File tree

5 files changed

+34
-6
lines changed

5 files changed

+34
-6
lines changed

dbm-ui/backend/db_services/dbbase/resources/query.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -345,12 +345,14 @@ def export_instance(cls, bk_biz_id: int, bk_host_ids: list) -> HttpResponse:
345345
return ExcelHandler.response(wb, f"{biz_name}({bk_biz_id}){db_type}_instances.xlsx")
346346

347347
@classmethod
348-
def get_temporary_cluster_info(cls, cluster, ticket_type):
348+
def get_temporary_cluster_info(cls, cluster, ticket_types):
349349
"""如果当前集群是临时集群,则补充临时集群相关信息。"""
350350
tags = [tag.key for tag in cluster.tags.all() if tag.system]
351351
if SystemTagEnum.TEMPORARY.value not in tags:
352352
return {}
353-
record = ClusterOperateRecord.objects.filter(cluster_id=cluster.id, ticket__ticket_type=ticket_type).first()
353+
record = ClusterOperateRecord.objects.filter(
354+
cluster_id=cluster.id, ticket__ticket_type__in=ticket_types
355+
).first()
354356
# 临时集群名称的构造规则是: {cluster_name}_{20201212}_{ticket_id}
355357
source_cluster_name = cluster.alias.rsplit("-", 2)[0]
356358
# 获取回档源集群信息,如果源集群已被卸载,则忽略

dbm-ui/backend/db_services/mongodb/resources/query.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,7 @@ def _to_cluster_representation(
278278
"shard_num": shard_num, # 集群分片数
279279
"shard_node_count": shard_node_count, # 每分片节点数
280280
"single_host_shard_num": single_host_shard_num, # 获取单机分片数
281-
"temporary_info": cls.get_temporary_cluster_info(cluster, TicketType.MONGODB_PITR_RESTORE),
281+
"temporary_info": cls.get_temporary_cluster_info(cluster, [TicketType.MONGODB_PITR_RESTORE]),
282282
"disaster_tolerance_level": cluster.disaster_tolerance_level,
283283
}
284284
cluster_info = super()._to_cluster_representation(

dbm-ui/backend/db_services/mysql/resources/tendbcluster/query.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,12 @@ def _to_cluster_representation(
205205
# 获取集群规格
206206
spec_id = cluster.storages[0].machine.spec_id
207207
spec = kwargs["remote_spec_map"].get(spec_id)
208+
temporary_ticket_type = [
209+
TicketType.TENDBCLUSTER_ROLLBACK_CLUSTER,
210+
TicketType.TENDBCLUSTER_ROLLBACK,
211+
TicketType.TENDBCLUSTER_FIXPOINT_NEW,
212+
TicketType.TENDBCLUSTER_FIXPOINT_EXIST,
213+
]
208214
cluster_extra_info = {
209215
"cluster_spec": model_to_dict(spec) if spec else None,
210216
"cluster_capacity": spec.capacity * machine_pair_cnt if spec else None,
@@ -216,7 +222,7 @@ def _to_cluster_representation(
216222
"machine_pair_cnt": machine_pair_cnt,
217223
"remote_db": remote_db,
218224
"remote_dr": remote_dr,
219-
"temporary_info": cls.get_temporary_cluster_info(cluster, TicketType.TENDBCLUSTER_ROLLBACK_CLUSTER),
225+
"temporary_info": cls.get_temporary_cluster_info(cluster, temporary_ticket_type),
220226
}
221227
cluster_info = super()._to_cluster_representation(
222228
cluster,

dbm-ui/backend/ticket/builders/tendbcluster/tendb_fixpoint_rollback.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,9 @@ class RollbackHostSerializer(serializers.Serializer):
5858
)
5959
tables = serializers.ListField(help_text=_("目标table列表"), child=DBTableField())
6060
tables_ignore = serializers.ListField(help_text=_("忽略table列表"), child=DBTableField(), required=False)
61+
affect_database_list = serializers.ListField(
62+
help_text=_("影响的DB"), child=serializers.CharField(), allow_null=True, required=False
63+
)
6164

6265
rollback_cluster_type = serializers.ChoiceField(
6366
help_text=_("回档集群类型"), choices=RollbackBuildClusterType.get_choices()
@@ -254,3 +257,18 @@ def describe_ticket_flows(cls, flow_config_map):
254257
flow_desc = cls._add_itsm_pause_describe(flow_desc=[], flow_config_map=flow_config_map)
255258
flow_desc.extend([_("回档临时集群部署"), _("TenDBCluster 回档执行")])
256259
return flow_desc
260+
261+
262+
@builders.BuilderFactory.register(TicketType.TENDBCLUSTER_FIXPOINT_NEW, is_apply=True)
263+
class TendbFixPointFlowNewClusterBuilder(TendbFixPointRollbackFlowBuilder):
264+
inner_flow_name = _("定点构造执行")
265+
266+
267+
@builders.BuilderFactory.register(TicketType.TENDBCLUSTER_FIXPOINT_EXIST, is_apply=True)
268+
class TendbFixPointFlowExistClusterBuilder(TendbFixPointRollbackFlowBuilder):
269+
inner_flow_name = _("定点构造执行")
270+
271+
272+
@builders.BuilderFactory.register(TicketType.TENDBCLUSTER_ROLLBACK, is_apply=True)
273+
class TendbRollbackFlowBuilder(TendbFixPointRollbackFlowBuilder):
274+
inner_flow_name = _("定点回档执行")

dbm-ui/backend/ticket/constants.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -387,8 +387,10 @@ def get_approve_mode_by_ticket(cls, ticket_type):
387387
TENDBCLUSTER_NODE_REBALANCE = TicketEnumField("TENDBCLUSTER_NODE_REBALANCE", _("TenDB Cluster 集群容量变更"),
388388
_("集群维护")) # noqa
389389
TENDBCLUSTER_FULL_BACKUP = TicketEnumField("TENDBCLUSTER_FULL_BACKUP", _("TenDB Cluster 全库备份"), _("备份"))
390-
TENDBCLUSTER_ROLLBACK_CLUSTER = TicketEnumField("TENDBCLUSTER_ROLLBACK_CLUSTER", _("TenDB Cluster 定点构造"),
391-
_("回档")) # noqa
390+
TENDBCLUSTER_ROLLBACK_CLUSTER = TicketEnumField("TENDBCLUSTER_ROLLBACK_CLUSTER", _("TenDB Cluster 定点构造"), _("回档")) # noqa
391+
TENDBCLUSTER_ROLLBACK = TicketEnumField("TENDBCLUSTER_ROLLBACK", _("TENDBCLUSTER 构造回档"), _("回档"))
392+
TENDBCLUSTER_FIXPOINT_NEW = TicketEnumField("TENDBCLUSTER_FIXPOINT_NEW", _("TENDBCLUSTER 数据构造到新集群"), _("构造"))
393+
TENDBCLUSTER_FIXPOINT_EXIST = TicketEnumField("TENDBCLUSTER_FIXPOINT_EXIST", _("TENDBCLUSTER 数据构造到已有集群"), _("构造"))
392394
TENDBCLUSTER_FLASHBACK = TicketEnumField("TENDBCLUSTER_FLASHBACK", _("TenDB Cluster 闪回"), _("回档"))
393395
TENDBCLUSTER_CLIENT_CLONE_RULES = TicketEnumField("TENDBCLUSTER_CLIENT_CLONE_RULES",
394396
_("TenDB Cluster 客户端权限克隆"), _("权限管理")) # noqa

0 commit comments

Comments
 (0)